@aurigma/ng-storefront-api-client 2.57.1 → 2.58.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/aurigma-ng-storefront-api-client.metadata.json +1 -1
- package/bundles/aurigma-ng-storefront-api-client.umd.js.map +1 -1
- package/bundles/aurigma-ng-storefront-api-client.umd.min.js.map +1 -1
- package/esm2015/lib/storefront-api-client.js +1 -1
- package/fesm2015/aurigma-ng-storefront-api-client.js.map +1 -1
- package/lib/storefront-api-client.d.ts +8 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/client/src/lib/storefront-api-client.ts","../../../projects/client/src/lib/storefront.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__values","o","s","m","i","API_BASE_URL","InjectionToken","ApiClientConfiguration","apiKey","authorizationToken","getAuthorizationToken","setAuthorizationToken","token","ApiClientBase","configuration","transformOptions","options","_a","headers","append","getBaseUrl","defultUrl","apiUrl","endsWith","slice","transformResult","url","res","cb","BuildInfoApiClient","http","baseUrl","_this","_super","jsonParseReviver","undefined","headInfo","url_","replace","options_","observe","responseType","HttpHeaders","_observableFrom","pipe","_observableMergeMap","transformedOptions_","request","response_","r","processHeadInfo","_observableCatch","HttpResponseBase","_observableThrow","response","status","responseBlob","HttpResponse","error","Blob","_headers","_b","keys","_c","key","get","blobToText","_responseText","_observableOf","throwException","getInfo","Accept","processGetInfo","result200","JSON","parse","Injectable","args","providedIn","decorators","type","Inject","HttpClient","Optional","ProcessingPipelinesApiClient","getAll","skip","take","search","tenantId","encodeURIComponent","processGetAll","id","Error","processGet","result404","ProductLinksApiClient","getAllProductLinks","sorting","processGetAllProductLinks","getProductLink","productLinkVersionId","productVersionId","processGetProductLink","result409","getProductSummary","productVariantId","sku","processGetProductSummary","getPersonalizationWorkflow","productFilterId","processGetPersonalizationWorkflow","ProductReferencesApiClient","storefrontId","productReference","productSpecificationId","productId","productLinkId","tags","customFields","forEach","item","getAllProductSpecifications","processGetAllProductSpecifications","getAllProducts","processGetAllProducts","reference","getProductSpecification","processGetProductSpecification","getProduct","processGetProduct","getProductCostDetails","storefrontUserId","currencyCode","quantity","processGetProductCostDetails","ProductsApiClient","getProductOptions","processGetProductOptions","getAllProductOptions","processGetAllProductOptions","getProductLinks","processGetProductLinks","getProductVariants","takeAvailableOnly","processGetProductVariants","getProductVariant","processGetProductVariant","getProductVariantDesigns","designCustomFields","designPath","processGetProductVariantDesigns","getProductVariantMockups","mockupCustomFields","mockupPath","processGetProductVariantMockups","getProductVariantDocuments","documentCustomFields","documentPath","processGetProductVariantDocuments","updateProductVariantResources","processUpdateProductVariantResources","getAvailableProductTags","processGetAvailableProductTags","ProductSpecificationsApiClient","ProjectsApiClient","ownerId","datePeriod","orderId","processingStatus","includeObsolete","delete","processDelete","getPreview","processGetPreview","contentDisposition","fileNameMatch","exec","fileName","data","getPreviewUrl","processGetPreviewUrl","createWithSingleItem","stringify","Content-Type","processCreateWithSingleItem","result201","result400","createWithMultipleItems","processCreateWithMultipleItems","createByRenderHiResScenario","processCreateByRenderHiResScenario","createBySpecificPipelineScenario","processCreateBySpecificPipelineScenario","getAvailableTransitions","processGetAvailableTransitions","changeStatus","transition","processChangeStatus","forceStatus","processForceStatus","batchDelete","processBatchDelete","getAllStatuses","processGetAllStatuses","getAllTransitions","processGetAllTransitions","getProjectProcessingResults","itemId","processGetProjectProcessingResults","resumeProjectProcessing","processResumeProjectProcessing","restartProjectProcessing","processRestartProjectProcessing","getProjectOrder","processGetProjectOrder","attachDataToProjectOrder","processAttachDataToProjectOrder","StorefrontsApiClient","types","StorefrontUsersApiClient","includeAnonymous","processCreate","register","processRegister","mergeAnonymous","processMergeAnonymous","getToken","processGetToken","OptionType","ConflictType","AppearanceDataType","WorkflowType","ProductReferenceType","ProductVariantResourceType","ProductVariantMockupType","SurfaceUsageType","DatePeriod","ProjectProcessingStatus","ProjectItemResourceType","RenderHiResScenarioOutputFormat","RenderHiResScenarioOutputColorSpace","RenderHiResScenarioOutputFlipMode","RenderHiResScenarioOutputRotateMode","OrderDataItemValueType","StorefrontType","TenantInfoApiClient","getApplicationsInfo","processGetApplicationsInfo","getMeasureUnitsInfo","processGetMeasureUnitsInfo","getUsersInfo","processGetUsersInfo","ApiException","message","isApiException","obj","blob","Observable","observer","reader","FileReader","onload","event","target","complete","readAsText","CreateApiClientConfiguration","apiConf","StorefrontApiClient.ApiClientConfiguration","StorefrontModule","forRoot","ngModule","providers","provide","StorefrontApiClient.API_BASE_URL","useValue","useFactory","bind","NgModule","declarations","imports","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// <auto-generated>\n// Generated using the NSwag toolchain v13.15.5.0 (NJsonSchema v10.6.6.0 (Newtonsoft.Json v11.0.0.0)) (http://NSwag.org)\n// </auto-generated>\n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const API_BASE_URL = new InjectionToken<string>('API_BASE_URL');\n\nexport class ApiClientConfiguration {\n apiUrl: string;\n apiKey: string = '';\n private authorizationToken: string = null;\n async getAuthorizationToken(): Promise<string> { return this.authorizationToken; };\n setAuthorizationToken(token: string): void { this.authorizationToken = token; };\n}\n\nexport class ApiClientBase {\n constructor(private configuration: ApiClientConfiguration) { }\n\n protected async transformOptions(options: any): Promise<any> {\n const token = await this.configuration.getAuthorizationToken();\n if (token != null) {\n options.headers = (options.headers as HttpHeaders).append(\"authorization\", \"Bearer \" + token);\n } else {\n options.headers = (options.headers as HttpHeaders).append(\"X-API-Key\", this.configuration.apiKey);\n }\n //options = { ...options, transformResponse: (res) => res, responseType: 'json' };\n return options;\n }\n\n protected getBaseUrl(defultUrl: string) {\n if (this.configuration.apiUrl.endsWith('/')) {\n return this.configuration.apiUrl.slice(0, -1);\n }\n return this.configuration.apiUrl;\n }\n\n protected transformResult(url: string, res: HttpResponseBase, cb: (res: HttpResponseBase) => Observable<any>): Observable<any> {\n return cb(res);\n }\n}\n\nexport interface IBuildInfoApiClient {\n /**\n * Returns an assembly build info.\n * @return Success\n */\n headInfo(): Observable<void>;\n /**\n * Returns an assembly build info.\n * @return Success\n */\n getInfo(): Observable<BuildInfoModel>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildInfoApiClient extends ApiClientBase implements IBuildInfoApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns an assembly build info.\n * @return Success\n */\n headInfo(): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/info\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"head\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processHeadInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processHeadInfo(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processHeadInfo(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns an assembly build info.\n * @return Success\n */\n getInfo(): Observable<BuildInfoModel> {\n let url_ = this.baseUrl + \"/api/storefront/v1/info\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n } catch (e) {\n return <Observable<BuildInfoModel>><any>_observableThrow(e);\n }\n } else\n return <Observable<BuildInfoModel>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetInfo(response: HttpResponseBase): Observable<BuildInfoModel> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <BuildInfoModel>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<BuildInfoModel>(<any>null);\n }\n}\n\nexport interface IProcessingPipelinesApiClient {\n /**\n * Returns all processing pipelines relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param search (optional) Search string for partial by processing pipeline name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto>;\n /**\n * Returns a processing pipeline.\n * @param id Processing pipeline identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProcessingPipelineDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessingPipelinesApiClient extends ApiClientBase implements IProcessingPipelinesApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all processing pipelines relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param search (optional) Search string for partial by processing pipeline name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/processing-pipelines?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProcessingPipelineDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProcessingPipelineDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProcessingPipelineDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProcessingPipelineDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProcessingPipelineDto>(<any>null);\n }\n\n /**\n * Returns a processing pipeline.\n * @param id Processing pipeline identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProcessingPipelineDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/processing-pipelines/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProcessingPipelineDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProcessingPipelineDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProcessingPipelineDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProcessingPipelineDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProcessingPipelineDto>(<any>null);\n }\n}\n\nexport interface IProductLinksApiClient {\n /**\n * Returns all product links, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto>;\n /**\n * Returns a product link by its identifier.\n * @param id Product identifier.\n * @param productLinkVersionId (optional) Product link version identifier. Optional\n * @param productVersionId (optional) Product version identifier which represents linked product version. Optional\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto>;\n /**\n * Returns a product link summary by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto>;\n /**\n * Returns a product link personalization workflow description by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductLinksApiClient extends ApiClientBase implements IProductLinksApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all product links, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductLinks(response: HttpResponseBase): Observable<PagedOfProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product link by its identifier.\n * @param id Product identifier.\n * @param productLinkVersionId (optional) Product link version identifier. Optional\n * @param productVersionId (optional) Product version identifier which represents linked product version. Optional\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkVersionId !== undefined && productLinkVersionId !== null)\n url_ += \"productLinkVersionId=\" + encodeURIComponent(\"\" + productLinkVersionId) + \"&\";\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n } catch (e) {\n return <Observable<ProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLink(response: HttpResponseBase): Observable<ProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product link summary by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links/{id}/summary?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkVersionId !== undefined && productLinkVersionId !== null)\n url_ += \"productLinkVersionId=\" + encodeURIComponent(\"\" + productLinkVersionId) + \"&\";\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n } catch (e) {\n return <Observable<ProductSummaryDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSummaryDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSummary(response: HttpResponseBase): Observable<ProductSummaryDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSummaryDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSummaryDto>(<any>null);\n }\n\n /**\n * Returns a product link personalization workflow description by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links/{id}/personalization-workflow?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkVersionId !== undefined && productLinkVersionId !== null)\n url_ += \"productLinkVersionId=\" + encodeURIComponent(\"\" + productLinkVersionId) + \"&\";\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProductReferencesApiClient {\n /**\n * Returns all storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductReferenceDto>;\n /**\n * Returns a list of product specifications associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductSpecifications(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto>;\n /**\n * Returns a list of products associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto>;\n /**\n * Returns a list of product links associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto>;\n /**\n * Returns a storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto>;\n /**\n * Returns a product specification by the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSpecification(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto>;\n /**\n * Returns a product by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductDto>;\n /**\n * Returns a product summary by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(reference: string | null, storefrontId: number, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto>;\n /**\n * Returns a product link by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductLinkDto>;\n /**\n * Returns a product cost details from ecommerce system.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param sku Product SKU.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param currencyCode (optional) Product cost currency code.\n * @param quantity (optional) Product quantity.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductCostDetails(reference: string | null, sku: string, storefrontId: number, storefrontUserId?: string | null | undefined, currencyCode?: string | null | undefined, quantity?: number | undefined, tenantId?: number | null | undefined): Observable<ProductCostDetailsDto>;\n /**\n * Returns a product personalization workflow.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(reference: string | null, storefrontId?: number | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductReferencesApiClient extends ApiClientBase implements IProductReferencesApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProductReferenceDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductReferenceDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductReferenceDto>(<any>null);\n }\n\n /**\n * Returns a list of product specifications associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductSpecifications(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/product-specifications?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductSpecifications(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductSpecifications(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductSpecifications(response: HttpResponseBase): Observable<PagedOfProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a list of products associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/products?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProducts(response: HttpResponseBase): Observable<PagedOfProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductDto>(<any>null);\n }\n\n /**\n * Returns a list of product links associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/product-links?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductLinks(response: HttpResponseBase): Observable<PagedOfProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProductReferenceDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductReferenceDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductReferenceDto>(<any>null);\n }\n\n /**\n * Returns a product specification by the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSpecification(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-specification?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSpecification(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSpecification(<any>r));\n } catch (e) {\n return <Observable<ProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSpecification(response: HttpResponseBase): Observable<ProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a product by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n } catch (e) {\n return <Observable<ProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProduct(response: HttpResponseBase): Observable<ProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductDto>(<any>null);\n }\n\n /**\n * Returns a product summary by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(reference: string | null, storefrontId: number, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-summary?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n } catch (e) {\n return <Observable<ProductSummaryDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSummaryDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSummary(response: HttpResponseBase): Observable<ProductSummaryDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSummaryDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSummaryDto>(<any>null);\n }\n\n /**\n * Returns a product link by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-link?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n } catch (e) {\n return <Observable<ProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLink(response: HttpResponseBase): Observable<ProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product cost details from ecommerce system.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param sku Product SKU.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param currencyCode (optional) Product cost currency code.\n * @param quantity (optional) Product quantity.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductCostDetails(reference: string | null, sku: string, storefrontId: number, storefrontUserId?: string | null | undefined, currencyCode?: string | null | undefined, quantity?: number | undefined, tenantId?: number | null | undefined): Observable<ProductCostDetailsDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-cost-details?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (sku === undefined || sku === null)\n throw new Error(\"The parameter 'sku' must be defined and cannot be null.\");\n else\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (storefrontUserId !== undefined && storefrontUserId !== null)\n url_ += \"storefrontUserId=\" + encodeURIComponent(\"\" + storefrontUserId) + \"&\";\n if (currencyCode !== undefined && currencyCode !== null)\n url_ += \"currencyCode=\" + encodeURIComponent(\"\" + currencyCode) + \"&\";\n if (quantity === null)\n throw new Error(\"The parameter 'quantity' cannot be null.\");\n else if (quantity !== undefined)\n url_ += \"quantity=\" + encodeURIComponent(\"\" + quantity) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductCostDetails(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductCostDetails(<any>r));\n } catch (e) {\n return <Observable<ProductCostDetailsDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductCostDetailsDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductCostDetails(response: HttpResponseBase): Observable<ProductCostDetailsDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductCostDetailsDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductCostDetailsDto>(<any>null);\n }\n\n /**\n * Returns a product personalization workflow.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(reference: string | null, storefrontId?: number | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/personalization-workflow?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' cannot be null.\");\n else if (storefrontId !== undefined)\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProductsApiClient {\n /**\n * Returns all products, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto>;\n /**\n * Returns a product by identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductDto>;\n /**\n * Returns a product summary by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto>;\n /**\n * Returns a list of product options.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductOptions(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto>;\n /**\n * Returns a list of product options for all products.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductOptions(tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto>;\n /**\n * Returns a list of product links.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLinks(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto>;\n /**\n * Returns a product link.\n * @param id Product identifier.\n * @param productLinkId Product link identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto>;\n /**\n * Returns a list of product variants.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariants(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDto>;\n /**\n * Returns a product variant.\n * @param id Product identifier.\n * @param productVariantId Product variant identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariant(id: number, productVariantId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductVariantDto>;\n /**\n * Returns a list of product variant designs.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param designCustomFields (optional) Custom attributes dictionary filter for designs. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param designPath (optional) Path filter for designs. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDesigns(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, designCustomFields?: string | null | undefined, designPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDesignDto>;\n /**\n * Returns a list of product variant mockups.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param mockupCustomFields (optional) Custom attributes dictionary filter for mockups. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param mockupPath (optional) Path filter for mockups. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantMockups(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, mockupCustomFields?: string | null | undefined, mockupPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantMockupDto>;\n /**\n * Returns a list of product variant documents.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for document name partial match.\n * @param documentCustomFields (optional) Custom attributes dictionary filter for documents. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param documentPath (optional) Path filter for documents. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDocuments(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, documentCustomFields?: string | null | undefined, documentPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDocumentDto>;\n /**\n * Updates product variant resources.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n updateProductVariantResources(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns a list of all available product tags.\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableProductTags(search?: string | null | undefined, tenantId?: number | null | undefined): Observable<string[]>;\n /**\n * Returns a product personalization workflow description by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductsApiClient extends ApiClientBase implements IProductsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all products, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProducts(response: HttpResponseBase): Observable<PagedOfProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductDto>(<any>null);\n }\n\n /**\n * Returns a product by identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n } catch (e) {\n return <Observable<ProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProduct(response: HttpResponseBase): Observable<ProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductDto>(<any>null);\n }\n\n /**\n * Returns a product summary by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/summary?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n } catch (e) {\n return <Observable<ProductSummaryDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSummaryDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSummary(response: HttpResponseBase): Observable<ProductSummaryDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSummaryDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSummaryDto>(<any>null);\n }\n\n /**\n * Returns a list of product options.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductOptions(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/options?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductOptions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductOptions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductOptions(response: HttpResponseBase): Observable<PagedOfProductOptionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductOptionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductOptionDto>(<any>null);\n }\n\n /**\n * Returns a list of product options for all products.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductOptions(tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/options?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductOptions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductOptions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductOptions(response: HttpResponseBase): Observable<PagedOfProductOptionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductOptionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductOptionDto>(<any>null);\n }\n\n /**\n * Returns a list of product links.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLinks(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/links?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLinks(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLinks(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLinks(response: HttpResponseBase): Observable<PagedOfProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product link.\n * @param id Product identifier.\n * @param productLinkId Product link identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/links/{productLinkId}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkId === undefined || productLinkId === null)\n throw new Error(\"The parameter 'productLinkId' must be defined.\");\n url_ = url_.replace(\"{productLinkId}\", encodeURIComponent(\"\" + productLinkId));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n } catch (e) {\n return <Observable<ProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLink(response: HttpResponseBase): Observable<ProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a list of product variants.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariants(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variants?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariants(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariants(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariants(response: HttpResponseBase): Observable<PagedOfProductVariantDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantDto>(<any>null);\n }\n\n /**\n * Returns a product variant.\n * @param id Product identifier.\n * @param productVariantId Product variant identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariant(id: number, productVariantId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductVariantDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variants/{productVariantId}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVariantId === undefined || productVariantId === null)\n throw new Error(\"The parameter 'productVariantId' must be defined.\");\n url_ = url_.replace(\"{productVariantId}\", encodeURIComponent(\"\" + productVariantId));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariant(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariant(<any>r));\n } catch (e) {\n return <Observable<ProductVariantDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductVariantDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariant(response: HttpResponseBase): Observable<ProductVariantDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductVariantDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductVariantDto>(<any>null);\n }\n\n /**\n * Returns a list of product variant designs.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param designCustomFields (optional) Custom attributes dictionary filter for designs. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param designPath (optional) Path filter for designs. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDesigns(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, designCustomFields?: string | null | undefined, designPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDesignDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variant-designs?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (designCustomFields !== undefined && designCustomFields !== null)\n url_ += \"designCustomFields=\" + encodeURIComponent(\"\" + designCustomFields) + \"&\";\n if (designPath !== undefined && designPath !== null)\n url_ += \"designPath=\" + encodeURIComponent(\"\" + designPath) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDesigns(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDesigns(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantDesignDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantDesignDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariantDesigns(response: HttpResponseBase): Observable<PagedOfProductVariantDesignDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantDesignDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantDesignDto>(<any>null);\n }\n\n /**\n * Returns a list of product variant mockups.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param mockupCustomFields (optional) Custom attributes dictionary filter for mockups. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param mockupPath (optional) Path filter for mockups. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantMockups(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, mockupCustomFields?: string | null | undefined, mockupPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantMockupDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variant-mockups?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (mockupCustomFields !== undefined && mockupCustomFields !== null)\n url_ += \"mockupCustomFields=\" + encodeURIComponent(\"\" + mockupCustomFields) + \"&\";\n if (mockupPath !== undefined && mockupPath !== null)\n url_ += \"mockupPath=\" + encodeURIComponent(\"\" + mockupPath) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantMockups(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantMockups(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantMockupDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantMockupDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariantMockups(response: HttpResponseBase): Observable<PagedOfProductVariantMockupDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantMockupDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantMockupDto>(<any>null);\n }\n\n /**\n * Returns a list of product variant documents.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for document name partial match.\n * @param documentCustomFields (optional) Custom attributes dictionary filter for documents. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param documentPath (optional) Path filter for documents. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDocuments(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, documentCustomFields?: string | null | undefined, documentPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDocumentDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variant-documents?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (documentCustomFields !== undefined && documentCustomFields !== null)\n url_ += \"documentCustomFields=\" + encodeURIComponent(\"\" + documentCustomFields) + \"&\";\n if (documentPath !== undefined && documentPath !== null)\n url_ += \"documentPath=\" + encodeURIComponent(\"\" + documentPath) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDocuments(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDocuments(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantDocumentDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantDocumentDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariantDocuments(response: HttpResponseBase): Observable<PagedOfProductVariantDocumentDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantDocumentDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantDocumentDto>(<any>null);\n }\n\n /**\n * Updates product variant resources.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n updateProductVariantResources(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/update-variant-resources?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateProductVariantResources(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateProductVariantResources(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processUpdateProductVariantResources(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns a list of all available product tags.\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableProductTags(search?: string | null | undefined, tenantId?: number | null | undefined): Observable<string[]> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/available-tags?\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableProductTags(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableProductTags(<any>r));\n } catch (e) {\n return <Observable<string[]>><any>_observableThrow(e);\n }\n } else\n return <Observable<string[]>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAvailableProductTags(response: HttpResponseBase): Observable<string[]> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <string[]>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<string[]>(<any>null);\n }\n\n /**\n * Returns a product personalization workflow description by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/personalization-workflow?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProductSpecificationsApiClient {\n /**\n * Returns all product specifications, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto>;\n /**\n * Returns a product specification by identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto>;\n /**\n * Returns a product personalization workflow description by product specification identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductSpecificationsApiClient extends ApiClientBase implements IProductSpecificationsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all product specifications, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-specifications?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a product specification by identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-specifications/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a product personalization workflow description by product specification identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-specifications/{id}/personalization-workflow?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProjectsApiClient {\n /**\n * Returns all projects, relevant to the specified query parameters.\n * @param ownerId (optional) Project owner (storefront user id) filter.\n * @param productReference (optional) Product reference filter.\n * @param status (optional) Project status filter.\n * @param datePeriod (optional) Project date period filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param orderId (optional) Identifier of corresponding order.\n * @param processingStatus (optional) Project processing status filter.\n * @param includeObsolete (optional) Indicates if obsolete projects prepared to be removed should be included to result.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(ownerId?: string | null | undefined, productReference?: string | null | undefined, status?: number | null | undefined, datePeriod?: DatePeriod | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, orderId?: string | null | undefined, processingStatus?: ProjectProcessingStatus | null | undefined, includeObsolete?: boolean | undefined, storefrontId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProjectDto>;\n /**\n * Returns a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProjectDto>;\n /**\n * Removes a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns a project preview file by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreview(id: number, tenantId?: number | null | undefined): Observable<FileResponse>;\n /**\n * Returns a project preview URL by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreviewUrl(id: number, tenantId?: number | null | undefined): Observable<string>;\n /**\n * Creates a new project with single item.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithSingleItem(storefrontId: number, tenantId?: number | null | undefined, body?: CreateSingleItemProjectDto | null | undefined): Observable<ProjectDto>;\n /**\n * Creates a new project with multiple items.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithMultipleItems(storefrontId: number, tenantId?: number | null | undefined, body?: CreateMultiItemProjectDto | null | undefined): Observable<ProjectDto>;\n /**\n * Creates a new project by 'Render HiRes' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createByRenderHiResScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectByRenderHiResScenarioDto | null | undefined): Observable<ProjectDto>;\n /**\n * Creates a new project by 'Specific Pipeline' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createBySpecificPipelineScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectBySpecificPipelineScenarioDto | null | undefined): Observable<ProjectDto>;\n /**\n * Returns all available status transitions for a project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableTransitions(id: number, tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto>;\n /**\n * Changes the project status.\n * @param id Project identifier\n * @param transition Transition identifying name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n changeStatus(id: number, transition: string | null, tenantId?: number | null | undefined): Observable<ProjectStatusDto>;\n /**\n * Changes the project status forcibly without a proper transition.\n * @param id Project identifier.\n * @param status Project status code.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n forceStatus(id: number, status: number, tenantId?: number | null | undefined): Observable<ProjectStatusDto>;\n /**\n * Deletes specified projects. \n These projects will be hide from projects list immediately, but complete projects data cleaning will take some additional time.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n batchDelete(tenantId?: number | null | undefined, body?: BatchDeleteProjectsInput | null | undefined): Observable<PagedOfProjectStatusDto>;\n /**\n * Returns a list of all existing project statuses.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllStatuses(tenantId?: number | null | undefined): Observable<PagedOfProjectStatusDto>;\n /**\n * Returns a list of all existing project status transitions.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllTransitions(tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto>;\n /**\n * Returns a project processing results.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectProcessingResults(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProjectProcessingResultsDto>;\n /**\n * Resumes project processing.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be resumed.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n resumeProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Restarts a project processing routine.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be restarted.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n restartProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns an order description from the ecommerce system for the specified project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectOrder(id: number, tenantId?: number | null | undefined): Observable<any>;\n /**\n * Attachs the specified data to the project's order in ecommerce system.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) A list of data items, which should be attached to project's order.\n * @return Success\n */\n attachDataToProjectOrder(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined, body?: OrderDataItemDto[] | null | undefined): Observable<void>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProjectsApiClient extends ApiClientBase implements IProjectsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all projects, relevant to the specified query parameters.\n * @param ownerId (optional) Project owner (storefront user id) filter.\n * @param productReference (optional) Product reference filter.\n * @param status (optional) Project status filter.\n * @param datePeriod (optional) Project date period filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param orderId (optional) Identifier of corresponding order.\n * @param processingStatus (optional) Project processing status filter.\n * @param includeObsolete (optional) Indicates if obsolete projects prepared to be removed should be included to result.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(ownerId?: string | null | undefined, productReference?: string | null | undefined, status?: number | null | undefined, datePeriod?: DatePeriod | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, orderId?: string | null | undefined, processingStatus?: ProjectProcessingStatus | null | undefined, includeObsolete?: boolean | undefined, storefrontId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects?\";\n if (ownerId !== undefined && ownerId !== null)\n url_ += \"ownerId=\" + encodeURIComponent(\"\" + ownerId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (status !== undefined && status !== null)\n url_ += \"status=\" + encodeURIComponent(\"\" + status) + \"&\";\n if (datePeriod === null)\n throw new Error(\"The parameter 'datePeriod' cannot be null.\");\n else if (datePeriod !== undefined)\n url_ += \"datePeriod=\" + encodeURIComponent(\"\" + datePeriod) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (orderId !== undefined && orderId !== null)\n url_ += \"orderId=\" + encodeURIComponent(\"\" + orderId) + \"&\";\n if (processingStatus !== undefined && processingStatus !== null)\n url_ += \"processingStatus=\" + encodeURIComponent(\"\" + processingStatus) + \"&\";\n if (includeObsolete === null)\n throw new Error(\"The parameter 'includeObsolete' cannot be null.\");\n else if (includeObsolete !== undefined)\n url_ += \"includeObsolete=\" + encodeURIComponent(\"\" + includeObsolete) + \"&\";\n if (storefrontId !== undefined && storefrontId !== null)\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectDto>(<any>null);\n }\n\n /**\n * Returns a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Removes a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processDelete(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDelete(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processDelete(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns a project preview file by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreview(id: number, tenantId?: number | null | undefined): Observable<FileResponse> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/preview?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/octet-stream\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPreview(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPreview(<any>r));\n } catch (e) {\n return <Observable<FileResponse>><any>_observableThrow(e);\n }\n } else\n return <Observable<FileResponse>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPreview(response: HttpResponseBase): Observable<FileResponse> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return _observableOf({ fileName: fileName, data: <any>responseBlob, status: status, headers: _headers });\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<FileResponse>(<any>null);\n }\n\n /**\n * Returns a project preview URL by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreviewUrl(id: number, tenantId?: number | null | undefined): Observable<string> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/preview-url?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPreviewUrl(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPreviewUrl(<any>r));\n } catch (e) {\n return <Observable<string>><any>_observableThrow(e);\n }\n } else\n return <Observable<string>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPreviewUrl(response: HttpResponseBase): Observable<string> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <string>_responseText;\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<string>(<any>null);\n }\n\n /**\n * Creates a new project with single item.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithSingleItem(storefrontId: number, tenantId?: number | null | undefined, body?: CreateSingleItemProjectDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/with-single-item?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateWithSingleItem(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWithSingleItem(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateWithSingleItem(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Creates a new project with multiple items.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithMultipleItems(storefrontId: number, tenantId?: number | null | undefined, body?: CreateMultiItemProjectDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/with-multiple-items?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateWithMultipleItems(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWithMultipleItems(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateWithMultipleItems(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Creates a new project by 'Render HiRes' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createByRenderHiResScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectByRenderHiResScenarioDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/by-scenario/render-hires?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateByRenderHiResScenario(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateByRenderHiResScenario(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateByRenderHiResScenario(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Creates a new project by 'Specific Pipeline' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createBySpecificPipelineScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectBySpecificPipelineScenarioDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/by-scenario/specific-pipeline?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateBySpecificPipelineScenario(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBySpecificPipelineScenario(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateBySpecificPipelineScenario(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Returns all available status transitions for a project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableTransitions(id: number, tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/transitions?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableTransitions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableTransitions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAvailableTransitions(response: HttpResponseBase): Observable<PagedOfProjectTransitionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectTransitionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectTransitionDto>(<any>null);\n }\n\n /**\n * Changes the project status.\n * @param id Project identifier\n * @param transition Transition identifying name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n changeStatus(id: number, transition: string | null, tenantId?: number | null | undefined): Observable<ProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/transitions/{transition}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (transition === undefined || transition === null)\n throw new Error(\"The parameter 'transition' must be defined.\");\n url_ = url_.replace(\"{transition}\", encodeURIComponent(\"\" + transition));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processChangeStatus(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processChangeStatus(<any>r));\n } catch (e) {\n return <Observable<ProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processChangeStatus(response: HttpResponseBase): Observable<ProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <ProjectTransitionConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectStatusDto>(<any>null);\n }\n\n /**\n * Changes the project status forcibly without a proper transition.\n * @param id Project identifier.\n * @param status Project status code.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n forceStatus(id: number, status: number, tenantId?: number | null | undefined): Observable<ProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/statuses/{status}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (status === undefined || status === null)\n throw new Error(\"The parameter 'status' must be defined.\");\n url_ = url_.replace(\"{status}\", encodeURIComponent(\"\" + status));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processForceStatus(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processForceStatus(<any>r));\n } catch (e) {\n return <Observable<ProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processForceStatus(response: HttpResponseBase): Observable<ProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectStatusDto>(<any>null);\n }\n\n /**\n * Deletes specified projects. \n These projects will be hide from projects list immediately, but complete projects data cleaning will take some additional time.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n batchDelete(tenantId?: number | null | undefined, body?: BatchDeleteProjectsInput | null | undefined): Observable<PagedOfProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/batch-delete?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processBatchDelete(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processBatchDelete(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processBatchDelete(response: HttpResponseBase): Observable<PagedOfProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectStatusDto>(<any>null);\n }\n\n /**\n * Returns a list of all existing project statuses.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllStatuses(tenantId?: number | null | undefined): Observable<PagedOfProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/statuses?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllStatuses(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllStatuses(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllStatuses(response: HttpResponseBase): Observable<PagedOfProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectStatusDto>(<any>null);\n }\n\n /**\n * Returns a list of all existing project status transitions.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllTransitions(tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/transitions?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllTransitions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllTransitions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllTransitions(response: HttpResponseBase): Observable<PagedOfProjectTransitionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectTransitionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectTransitionDto>(<any>null);\n }\n\n /**\n * Returns a project processing results.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectProcessingResults(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProjectProcessingResultsDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/processing-results?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProjectProcessingResults(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProjectProcessingResults(<any>r));\n } catch (e) {\n return <Observable<ProjectProcessingResultsDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectProcessingResultsDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProjectProcessingResults(response: HttpResponseBase): Observable<ProjectProcessingResultsDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectProcessingResultsDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectProcessingResultsDto>(<any>null);\n }\n\n /**\n * Resumes project processing.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be resumed.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n resumeProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/resume-processing?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processResumeProjectProcessing(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processResumeProjectProcessing(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processResumeProjectProcessing(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Restarts a project processing routine.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be restarted.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n restartProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/restart-processing?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRestartProjectProcessing(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRestartProjectProcessing(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processRestartProjectProcessing(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns an order description from the ecommerce system for the specified project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectOrder(id: number, tenantId?: number | null | undefined): Observable<any> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/order?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProjectOrder(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProjectOrder(<any>r));\n } catch (e) {\n return <Observable<any>><any>_observableThrow(e);\n }\n } else\n return <Observable<any>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProjectOrder(response: HttpResponseBase): Observable<any> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <any>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<any>(<any>null);\n }\n\n /**\n * Attachs the specified data to the project's order in ecommerce system.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) A list of data items, which should be attached to project's order.\n * @return Success\n */\n attachDataToProjectOrder(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined, body?: OrderDataItemDto[] | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/order-data?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processAttachDataToProjectOrder(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAttachDataToProjectOrder(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processAttachDataToProjectOrder(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n}\n\nexport interface IStorefrontsApiClient {\n /**\n * Returns all storefronts, relevant to the specified query parameters.\n * @param types (optional) Storefront type filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(types?: StorefrontType[] | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontDto>;\n /**\n * Returns a storefront by identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorefrontsApiClient extends ApiClientBase implements IStorefrontsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all storefronts, relevant to the specified query parameters.\n * @param types (optional) Storefront type filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(types?: StorefrontType[] | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefronts?\";\n if (types !== undefined && types !== null)\n types && types.forEach(item => { url_ += \"types=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfStorefrontDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfStorefrontDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfStorefrontDto>(<any>null);\n }\n\n /**\n * Returns a storefront by identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefronts/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<StorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<StorefrontDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <StorefrontDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontDto>(<any>null);\n }\n}\n\nexport interface IStorefrontUsersApiClient {\n /**\n * Returns all storefront users, relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param includeAnonymous (optional) Flag that indicates if anonymous users should be included. `True` by default.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, storefrontUserId?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, includeAnonymous?: boolean | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontUserDto>;\n /**\n * Creates a new storefront user.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateStorefrontUserDto | null | undefined): Observable<StorefrontUserDto>;\n /**\n * Returns a storefront user by identifier.\n * @param id Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<StorefrontUserDto>;\n /**\n * Registers a storefront user with the specified identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n register(storefrontId: number, tenantId?: number | null | undefined, body?: RegisterStorefrontUserInput | null | undefined): Observable<StorefrontUserDto>;\n /**\n * Transfers all existing data for the anonymous storefront user to the selected regular storefront user account.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n mergeAnonymous(storefrontId: number, tenantId?: number | null | undefined, body?: MergeAnonymousUserDataInput | null | undefined): Observable<void>;\n /**\n * Returns an API access token for the specified storefront user.\n * @param storefrontUserId Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getToken(storefrontUserId: string, storefrontId: number, tenantId?: number | null | undefined): Observable<string>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorefrontUsersApiClient extends ApiClientBase implements IStorefrontUsersApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all storefront users, relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param includeAnonymous (optional) Flag that indicates if anonymous users should be included. `True` by default.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, storefrontUserId?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, includeAnonymous?: boolean | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (storefrontUserId !== undefined && storefrontUserId !== null)\n url_ += \"storefrontUserId=\" + encodeURIComponent(\"\" + storefrontUserId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (includeAnonymous !== undefined && includeAnonymous !== null)\n url_ += \"includeAnonymous=\" + encodeURIComponent(\"\" + includeAnonymous) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfStorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfStorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfStorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfStorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfStorefrontUserDto>(<any>null);\n }\n\n /**\n * Creates a new storefront user.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateStorefrontUserDto | null | undefined): Observable<StorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreate(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreate(<any>r));\n } catch (e) {\n return <Observable<StorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable<StorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <StorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontUserDto>(<any>null);\n }\n\n /**\n * Returns a storefront user by identifier.\n * @param id Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<StorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<StorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<StorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <StorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontUserDto>(<any>null);\n }\n\n /**\n * Registers a storefront user with the specified identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n register(storefrontId: number, tenantId?: number | null | undefined, body?: RegisterStorefrontUserInput | null | undefined): Observable<StorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/register?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRegister(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRegister(<any>r));\n } catch (e) {\n return <Observable<StorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processRegister(response: HttpResponseBase): Observable<StorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <StorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontUserDto>(<any>null);\n }\n\n /**\n * Transfers all existing data for the anonymous storefront user to the selected regular storefront user account.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n mergeAnonymous(storefrontId: number, tenantId?: number | null | undefined, body?: MergeAnonymousUserDataInput | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/merge-anonymous?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processMergeAnonymous(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processMergeAnonymous(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processMergeAnonymous(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns an API access token for the specified storefront user.\n * @param storefrontUserId Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getToken(storefrontUserId: string, storefrontId: number, tenantId?: number | null | undefined): Observable<string> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/token?\";\n if (storefrontUserId === undefined || storefrontUserId === null)\n throw new Error(\"The parameter 'storefrontUserId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontUserId=\" + encodeURIComponent(\"\" + storefrontUserId) + \"&\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetToken(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetToken(<any>r));\n } catch (e) {\n return <Observable<string>><any>_observableThrow(e);\n }\n } else\n return <Observable<string>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetToken(response: HttpResponseBase): Observable<string> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <string>_responseText;\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<string>(<any>null);\n }\n}\n\nexport interface ITenantInfoApiClient {\n /**\n * Returns an information about the tenant applications.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getApplicationsInfo(tenantId?: number | null | undefined): Observable<TenantApplicationsInfoDto>;\n /**\n * Returns an information about the tenant.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getInfo(tenantId?: number | null | undefined): Observable<TenantInfoDto>;\n /**\n * Returns an information about the tenant measure units.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMeasureUnitsInfo(tenantId?: number | null | undefined): Observable<TenantMeasureUnitsInfoDto>;\n /**\n * Returns a list of tenant users.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getUsersInfo(tenantId?: number | null | undefined): Observable<TenantUserInfoDto[]>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TenantInfoApiClient extends ApiClientBase implements ITenantInfoApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns an information about the tenant applications.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getApplicationsInfo(tenantId?: number | null | undefined): Observable<TenantApplicationsInfoDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info/applications?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetApplicationsInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetApplicationsInfo(<any>r));\n } catch (e) {\n return <Observable<TenantApplicationsInfoDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantApplicationsInfoDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetApplicationsInfo(response: HttpResponseBase): Observable<TenantApplicationsInfoDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantApplicationsInfoDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantApplicationsInfoDto>(<any>null);\n }\n\n /**\n * Returns an information about the tenant.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getInfo(tenantId?: number | null | undefined): Observable<TenantInfoDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n } catch (e) {\n return <Observable<TenantInfoDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantInfoDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetInfo(response: HttpResponseBase): Observable<TenantInfoDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantInfoDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantInfoDto>(<any>null);\n }\n\n /**\n * Returns an information about the tenant measure units.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMeasureUnitsInfo(tenantId?: number | null | undefined): Observable<TenantMeasureUnitsInfoDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info/measure-units?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetMeasureUnitsInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMeasureUnitsInfo(<any>r));\n } catch (e) {\n return <Observable<TenantMeasureUnitsInfoDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantMeasureUnitsInfoDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetMeasureUnitsInfo(response: HttpResponseBase): Observable<TenantMeasureUnitsInfoDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantMeasureUnitsInfoDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantMeasureUnitsInfoDto>(<any>null);\n }\n\n /**\n * Returns a list of tenant users.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getUsersInfo(tenantId?: number | null | undefined): Observable<TenantUserInfoDto[]> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info/users?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUsersInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUsersInfo(<any>r));\n } catch (e) {\n return <Observable<TenantUserInfoDto[]>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantUserInfoDto[]>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetUsersInfo(response: HttpResponseBase): Observable<TenantUserInfoDto[]> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantUserInfoDto[]>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantUserInfoDto[]>(<any>null);\n }\n}\n\n/** Information about a service. */\nexport interface BuildInfoModel {\n /** Version number. */\n version?: string | null;\n /** Build date (UTC). */\n buildDate?: string | null;\n /** Build configuration (Debug | Release). */\n configuration?: string | null;\n /** Service name. */\n appName?: string | null;\n}\n\n/** Dto class, containing information about processing pipeline details. */\nexport interface ProcessingPipelineDto {\n /** Processing pipeline identifier. */\n id?: number;\n /** Processing pipeline name. */\n name?: string | null;\n /** Processing pipeline raw (uncompiled) content. */\n rawContent?: string | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProcessingPipelineDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProcessingPipelineDto[] | null;\n}\n\nexport interface ProblemDetails {\n type?: string | null;\n title?: string | null;\n status?: number | null;\n detail?: string | null;\n instance?: string | null;\n}\n\n/** DTO class, containing information about a product resource of type image. */\nexport interface ImageInfo {\n /** Product resource identifier. */\n resourceId?: string | null;\n /** Product Resource URL. */\n url?: string | null;\n}\n\n/** Available option types. */\nexport enum OptionType {\n Simple = \"Simple\",\n Size = \"Size\",\n PageCount = \"PageCount\",\n}\n\n/** DTO class, containing information about a product filter option. */\nexport interface ProductFilterOptionDto {\n /** Product option identifier. */\n productOptionId?: number | null;\n /** Product option value identifier. */\n productOptionValueId?: number | null;\n /** Product option type ('Simple' / 'Size' / 'PageCount'). */\n productOptionType?: OptionType;\n /** Product option traits. */\n productOptionTraits?: string[] | null;\n /** Product option title. */\n productOptionTitle?: string | null;\n /** Product option value title. */\n productOptionValueTitle?: string | null;\n /** Indicates if option value should be used as a default value for corresponding option. */\n isDefault?: boolean;\n}\n\n/** DTO class, containing information about a product link. */\nexport interface ProductLinkDto {\n /** Product link identifier. */\n id?: number;\n /** Product link version identifier. */\n productLinkVersionId?: number;\n /** Linked product identifier. */\n productId?: number;\n /** Linked product version identifier. */\n productVersionId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product link name. */\n name?: string | null;\n /** Product link description. */\n description?: string | null;\n /** Product filter identifier. */\n productFilterId?: number;\n /** Product link image info. */\n image?: ImageInfo | null;\n /** Product link creation time. */\n created?: string;\n /** Product link modification time. */\n lastModified?: string | null;\n /** Product filter options. */\n productFilterOptions?: ProductFilterOptionDto[] | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number | null;\n /** Processing pipeline identifier. */\n processingPipelineId?: number | null;\n /** Default storefront identifier. */\n storefrontId?: number | null;\n /** Default storefront product identifier. */\n storefrontProductId?: string | null;\n /** Default storefront product name. */\n storefrontProductName?: string | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductLinkDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductLinkDto[] | null;\n}\n\n/** Conflict types. */\nexport enum ConflictType {\n NameConflict = \"NameConflict\",\n FolderOverwriteConflict = \"FolderOverwriteConflict\",\n IdConflict = \"IdConflict\",\n GeneralConflict = \"GeneralConflict\",\n}\n\n/** Information about operation conflict. */\nexport interface GeneralConflictDto {\n /** Problem description. */\n description?: string | null;\n /** Coflict type. */\n type?: ConflictType;\n}\n\n/** Available appearance types. */\nexport enum AppearanceDataType {\n Radio = \"Radio\",\n Dropdown = \"Dropdown\",\n Chips = \"Chips\",\n ColorGrid = \"ColorGrid\",\n ColorList = \"ColorList\",\n ImageGrid = \"ImageGrid\",\n ImageList = \"ImageList\",\n}\n\n/** DTO class, containing information about a product option appearance item. */\nexport interface AppearanceDataItemDto {\n /** Appearance item key. */\n key?: string | null;\n /** Appearance item value. */\n value?: string | null;\n}\n\n/** DTO class, containing information about a product option appearance. */\nexport interface AppearanceDataDto {\n /** Appearance type. */\n type?: AppearanceDataType;\n /** Appearance items. */\n items?: AppearanceDataItemDto[] | null;\n}\n\n/** Option values for product summary model. */\nexport interface ProductSummaryOptionValueDto {\n /** Option value identifier. */\n id?: number;\n /** Option value identifying tag. */\n tag?: string | null;\n /** Option value title. */\n title?: string | null;\n /** Option value value. */\n value?: string | null;\n /** Indicates if option value is used as a default value. */\n isDefault?: boolean;\n /** Option value description. */\n description?: string | null;\n /** Option value colors. */\n colors?: string[] | null;\n /** Option value image. */\n image?: ImageInfo | null;\n}\n\n/** Options for product summary model. */\nexport interface ProductSummaryOptionDto {\n /** Option identifier. */\n id?: number;\n /** Option identifying tag. */\n tag?: string | null;\n /** Option title. */\n title?: string | null;\n /** Option description. */\n description?: string | null;\n /** Option tooltip. */\n tooltip?: string | null;\n /** Option sort index. */\n sortIndex?: number;\n /** Option traits. */\n traits?: string[] | null;\n /** Indicates if option is used to bind designs to product. */\n useForDesignBinding?: boolean;\n /** Indicates if option is used to bind mockups to product. */\n useForMockupBinding?: boolean;\n /** Indicates if option is used to bind documents to product. */\n useForDocumentBinding?: boolean;\n /** Option appearance. */\n appearanceData?: AppearanceDataDto | null;\n /** Option image info. */\n image?: ImageInfo | null;\n /** Option values. */\n productOptionValues?: ProductSummaryOptionValueDto[] | null;\n}\n\n/** General information about product that editors need to begin personalization process. */\nexport interface ProductSummaryDto {\n /** Product identifier. */\n productId?: number;\n /** Product version identifier. If product variant is not specified, active version identifier should be used. */\n productVersionId?: number;\n /** Product link identifier. If product link is not specified, should be null. */\n productLinkId?: number | null;\n /** Product link version identifier. If product link is not specified, should be null. */\n productLinkVersionId?: number | null;\n /** Product filter identifier for product link. If product link is not specified, should be null. */\n productFilterId?: number | null;\n /** Product variant identifier. If product variant is not specified, should be null. */\n productVariantId?: number | null;\n /** Product variant SKU. If product variant is not specified, should be null. */\n productVariantSku?: string | null;\n /** Product variant price. If product variant is not specified, should be null. */\n productVariantPrice?: number | null;\n /** Product variant availability. If product variant is not specified, should be null. */\n isProductVariantAvailable?: boolean | null;\n /** Product name. If product link is specified, name of link will be used. */\n name?: string | null;\n /** Product description. If product link is specified, description of link will be used. */\n description?: string | null;\n /** Product image info. */\n image?: ImageInfo | null;\n /** Tenant identifier. */\n tenantId?: number;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number | null;\n /** Processing pipeline identifier. */\n processingPipelineId?: number | null;\n /** Product tags. */\n tags?: string[] | null;\n /** Product custom fields. */\n customFields?: { [key: string]: string; } | null;\n /** Product options summary. \nIf product link or variant is specified, product options will be filtered by link or variant options. */\n options?: ProductSummaryOptionDto[] | null;\n}\n\n/** Type of editor that should be configured by workflow. */\nexport enum WorkflowType {\n UIFramework = \"UIFramework\",\n SimpleEditor = \"SimpleEditor\",\n DesignEditor = \"DesignEditor\",\n WorkflowElements = \"WorkflowElements\",\n}\n\n/** Personalization workflow description DTO. */\nexport interface PersonalizationWorkflowDto {\n /** Workflow identifier. */\n id?: number;\n /** Processed workflow JSON. */\n content?: string | null;\n /** Workflow type. */\n workflowType?: WorkflowType;\n}\n\n/** Available product reference target types. */\nexport enum ProductReferenceType {\n ProductSpecification = \"ProductSpecification\",\n Product = \"Product\",\n ProductLink = \"ProductLink\",\n}\n\n/** DTO class, containing information about storefront product reference. */\nexport interface ProductReferenceDto {\n /** Product reference is an external reference to Customer's Canvas product, e.g online store product identifier. */\n productReference?: string | null;\n /** Product reference target type. */\n productReferenceType?: ProductReferenceType;\n /** Product reference name, e.g. online store product name. */\n productReferenceName?: string | null;\n /** Customer's Canvas product specification identifier. */\n productSpecificationId?: number;\n /** Customer's Canvas product identifier. */\n productId?: number;\n /** Customer's Canvas product version identifier. */\n productVersionId?: number;\n /** Customer's Canvas product link identifier. */\n productLinkId?: number;\n /** Storefront identifier. */\n storefrontId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront product reference creation date and time. */\n created?: string;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductReferenceDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductReferenceDto[] | null;\n}\n\n/** Dto class, containing information about product attribute. */\nexport interface ProductAttributeDto {\n /** Product attribute name. */\n name?: string | null;\n /** Product attribute type. */\n type?: string | null;\n /** Product attribute value. */\n value?: any | null;\n}\n\n/** Dto class, containing information about product specification. */\nexport interface ProductSpecificationDto {\n /** Product specification identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product specification name. */\n name?: string | null;\n /** Product specification description. */\n description?: string | null;\n /** List of product attributes. */\n productAttributes?: ProductAttributeDto[] | null;\n /** Product specification creation time. */\n created?: string;\n /** Product specification modification time. */\n lastModified?: string | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number;\n /** Processing pipeline identifier. */\n processingPipelineId?: number;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductSpecificationDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductSpecificationDto[] | null;\n}\n\n/** DTO class, containing information about a product. */\nexport interface ProductDto {\n /** Product identifier. */\n id?: number;\n /** Product version identifier. */\n productVersionId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product name. */\n name?: string | null;\n /** Product description. */\n description?: string | null;\n /** Product image info. */\n image?: ImageInfo | null;\n /** Product creation time. */\n created?: string;\n /** Product modification time. */\n lastModified?: string | null;\n /** Product tags. */\n tags?: string[] | null;\n /** Product custom fields. */\n customFields?: { [key: string]: string; } | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number;\n /** Processing pipeline identifier. */\n processingPipelineId?: number;\n /** Default storefront identifier. */\n storefrontId?: number | null;\n /** Default storefront product identifier. */\n storefrontProductId?: string | null;\n /** Default storefront product name. */\n storefrontProductName?: string | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductDto[] | null;\n}\n\n/** Dto class, containing information about storefront product cost details. */\nexport interface ProductCostDetailsDto {\n /** Product reference is an external reference to Customer's Canvas product specification, e.g online store product identifier. */\n productReference?: string | null;\n /** Product SKU. */\n productSku?: string | null;\n /** Product quantity. */\n productQuantity?: number;\n /** Product price. */\n productPrice?: number;\n /** Product cost. */\n productCost?: number;\n /** Product discount. */\n productDiscount?: number;\n /** Currency code. */\n currencyCode?: string | null;\n /** Tenant identifier. */\n tenantId?: number;\n}\n\n/** Option value description for 'Simple' option type. */\nexport interface SimpleOptionValue {\n /** String Value. */\n value?: string | null;\n}\n\n/** DTO class, containing information about a product option value. */\nexport interface ProductOptionValueDto {\n /** Product option value identifier. */\n id?: number;\n /** Product option value title. */\n title?: string | null;\n /** Product option value sort index. */\n sortIndex?: number;\n /** Indicates if product option value is used as a default value. */\n isDefault?: boolean;\n /** Product option value identifying tag. */\n tag?: string | null;\n /** Product option value description for 'Simple' option type. */\n simpleOptionValue?: SimpleOptionValue | null;\n /** Product option value description. */\n description?: string | null;\n /** Product option value colors. */\n colors?: string[] | null;\n /** Product option value image. */\n image?: ImageInfo | null;\n}\n\n/** DTO class, containing information about a product option. */\nexport interface ProductOptionDto {\n /** Product option identifier. */\n id?: number;\n /** Product version identifier */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Option type ('Simple' / 'Size' / 'PageCount'). */\n type?: OptionType;\n /** Option traits. */\n traits?: string[] | null;\n /** Product option title. */\n title?: string | null;\n /** Product option sort index. */\n sortIndex?: number;\n /** Product option identifying tag. */\n tag?: string | null;\n /** Specifies if the option is used for design binding. */\n useForDesignBinding?: boolean;\n /** Specifies if the option is used for mockup binding. */\n useForMockupBinding?: boolean;\n /** Specifies if the option is used for document binding. */\n useForDocumentBinding?: boolean;\n /** Product option description. */\n description?: string | null;\n /** Product option tooltip. */\n tooltip?: string | null;\n /** Product option appearance. */\n appearanceData?: AppearanceDataDto | null;\n /** Product option image info. */\n image?: ImageInfo | null;\n /** A list of product option values. */\n productOptionValues?: ProductOptionValueDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductOptionDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductOptionDto[] | null;\n}\n\n/** DTO class, containing information about a product variant option. */\nexport interface ProductVariantOptionDto {\n /** Product option identifier. */\n productOptionId?: number | null;\n /** Product option value identifier. */\n productOptionValueId?: number | null;\n /** Product option type ('Simple' / 'Size' / 'PageCount'). */\n productOptionType?: OptionType;\n /** Product option traits. */\n productOptionTraits?: string[] | null;\n /** Product option title. */\n productOptionTitle?: string | null;\n /** Product option value title. */\n productOptionValueTitle?: string | null;\n /** Product option value description for 'Simple' option type. */\n simpleOptionValue?: SimpleOptionValue | null;\n}\n\n/** DTO class, containing information about a product variant. */\nexport interface ProductVariantDto {\n /** Product variant identifier. */\n id?: number;\n /** Product variant unique identifier. */\n uid?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product variant available. */\n isAvailable?: boolean;\n /** Product variant price. */\n price?: number | null;\n /** Product variant sort index. */\n sortIndex?: number;\n /** Product variant identifier (usually SKU) in storefront / online store. */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantDto[] | null;\n}\n\n/** Available product variant resource types. */\nexport enum ProductVariantResourceType {\n Preview = \"Preview\",\n EditorModel = \"EditorModel\",\n Custom = \"Custom\",\n}\n\n/** Product variant resource description for 'Preview' resource type. */\nexport interface ProductVariantResourcePreview {\n /** Preview with in pixels. */\n width?: number | null;\n /** Preview heigth in pixels. */\n height?: number | null;\n /** Mockup which is used to create preview. */\n mockupId?: string | null;\n /** Design surface index which is used to create preivew. */\n surfaceIndex?: number | null;\n}\n\n/** DTO class, containing information about a product variant resource. */\nexport interface ProductVariantResourceDto {\n /** Resource identifier. */\n resourceId?: string | null;\n /** Resource name. */\n name?: string | null;\n /** Resource url. */\n url?: string | null;\n /** Resource type. */\n type?: ProductVariantResourceType;\n /** Product variant resource description for 'Preview' resource type. */\n resourcePreview?: ProductVariantResourcePreview | null;\n}\n\n/** DTO class, containing information about a product variant design. */\nexport interface ProductVariantDesignDto {\n /** Product variant identifier. */\n productVariantId?: number;\n /** Product variant unique identifier. */\n productVariantUID?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product variant available. */\n isAvailable?: boolean;\n /** Product variant price. */\n price?: number | null;\n /** Product variant sort index. */\n sortIndex?: number;\n /** Product variant identifier (usually SKU) in storefront / online store. */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** Design identifier. */\n designId?: string | null;\n /** Design name. */\n designName?: string | null;\n /** Design grouping tag. */\n designGroup?: string | null;\n /** Design data schema tag. Indicates if design has data schema. */\n designHasDataSchema?: boolean;\n /** Design toggle set tag. Indicated if design has toggle set. */\n designHasToggleSet?: boolean;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n /** A list of product variant resources. */\n productVariantResources?: ProductVariantResourceDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantDesignDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantDesignDto[] | null;\n}\n\n/** Available mockup types. */\nexport enum ProductVariantMockupType {\n Thumbnail = \"Thumbnail\",\n Editor = \"Editor\",\n Preview = \"Preview\",\n}\n\n/** Available surface usage types. */\nexport enum SurfaceUsageType {\n Individual = \"Individual\",\n Custom = \"Custom\",\n All = \"All\",\n}\n\n/** Dto class, containing information about a product variant mockup. */\nexport interface ProductVariantMockupDto {\n /** Product variant identifier. */\n productVariantId?: number;\n /** Product variant unique identifier. */\n productVariantUID?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number | null;\n /** Product variant identifier in online store (usually SKU). */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** Mockup identifier. */\n mockupId?: string | null;\n /** Mockup name. */\n mockupName?: string | null;\n /** Mockup type. */\n mockupType?: ProductVariantMockupType;\n /** Surface index indicates a surface of a design to which mockup should be applied. */\n surfaceIndex?: number | null;\n /** Surface usage type defines a scheme for applying mockup to design surfaces. */\n surfaceUsageType?: SurfaceUsageType;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantMockupDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantMockupDto[] | null;\n}\n\n/** DTO class, containing information about a product variant document. */\nexport interface ProductVariantDocumentDto {\n /** Product variant identifier. */\n productVariantId?: number;\n /** Product variant unique identifier. */\n productVariantUID?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product variant available. */\n isAvailable?: boolean;\n /** Product variant price. */\n price?: number | null;\n /** Product variant sort index. */\n sortIndex?: number;\n /** Product variant identifier (usually SKU) in storefront / online store. */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** Document identifier. */\n documentId?: string | null;\n /** Document name. */\n documentName?: string | null;\n /** Document grouping tag. */\n documentGroup?: string | null;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n /** A list of product variant resources. */\n productVariantResources?: ProductVariantResourceDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantDocumentDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantDocumentDto[] | null;\n}\n\n/** Defines all available date period filter values for queries. */\nexport enum DatePeriod {\n All = \"All\",\n Today = \"Today\",\n Last7Days = \"Last7Days\",\n Last30Days = \"Last30Days\",\n}\n\n/** Available project processing statuses. */\nexport enum ProjectProcessingStatus {\n Pending = \"Pending\",\n InProgress = \"InProgress\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n}\n\n/** Available product resource types */\nexport enum ProjectItemResourceType {\n General = \"General\",\n Preview = \"Preview\",\n Hires = \"Hires\",\n}\n\n/** Dto class, containing information about a project item resource. */\nexport interface ProjectItemResourceDto {\n /** Resource ID. */\n resourceId?: string | null;\n /** Resource name. */\n name?: string | null;\n /** Resource type. */\n type?: ProjectItemResourceType;\n}\n\n/** Dto class, containing information about a project item. */\nexport interface ProjectItemDto {\n /** Item identifier. */\n id?: number;\n /** Item name. */\n name?: string | null;\n /** Item quantity information. */\n quantity?: number | null;\n /** Order item identifier from storefront order. */\n orderLineItemId?: string | null;\n /** Order item index from storefront order. */\n orderLineItemIndex?: number | null;\n /** Storefront product reference (i.e external reference to Customer's Canvas product specification). */\n productReference?: string | null;\n /** Item information. */\n fields?: { [key: string]: any; } | null;\n /** Additional item information. */\n hidden?: any | null;\n /** A list of design identifiers associated to the item. */\n designIds?: string[] | null;\n /** SKU. */\n sku?: string | null;\n /** External resources descriptions. */\n resources?: ProjectItemResourceDto[] | null;\n}\n\n/** Dto class, containing information about a project. */\nexport interface ProjectDto {\n /** Project identifier. */\n id?: number;\n /** Storefront product identifier. */\n productReference?: string | null;\n /** Storefront identifier. */\n storefrontId?: number;\n /** Project tenant indentifier. */\n tenantId?: number;\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Order item identifier from storefront order. */\n orderLineItemId?: string | null;\n /** Order item index from storefront order. */\n orderLineItemIndex?: number | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n /** Project name. */\n name?: string | null;\n /** Project owner identifier. */\n ownerId?: string | null;\n /** List of project items. */\n items?: ProjectItemDto[] | null;\n /** Project status code. */\n status?: number;\n /** Project creation time. */\n created?: string;\n /** Project modification time. */\n lastModified?: string | null;\n /** Description of the project. */\n description?: string | null;\n /** Project processing status. */\n processingStatus?: ProjectProcessingStatus;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProjectDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProjectDto[] | null;\n}\n\n/** Dto class, containing create operation parameters for a project item resource. */\nexport interface ProjectItemResourceParametersDto {\n /** Resource URL. */\n url?: string | null;\n /** Resource name. */\n name?: string | null;\n /** Resource type. */\n type?: ProjectItemResourceType;\n /** Original resource identifier. */\n resourceId?: string | null;\n}\n\n/** Dto class, containing create operation parameters for a project item. */\nexport interface ProjectItemParametersDto {\n /** Item name. */\n name?: string | null;\n /** Item quantity information. */\n quantity?: number | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** Storefront product identifier. */\n productReference?: string | null;\n /** Item information. */\n fields?: { [key: string]: any; } | null;\n /** Additional item information. */\n hidden?: any | null;\n /** A list of design identifiers associated to the item. */\n designIds?: string[] | null;\n /** SKU. */\n sku?: string | null;\n /** External resources descriptions. */\n resources?: ProjectItemResourceParametersDto[] | null;\n}\n\n/** Dto class, containing create operation parameters for single-item project entity. */\nexport interface CreateSingleItemProjectDto {\n /** Product reference (i.e external reference to Customer's Canvas product specification - main subject of this project). */\n productReference?: string | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** List of project items. */\n items?: ProjectItemParametersDto[] | null;\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n /** Project name. */\n name?: string | null;\n /** Project owner identifier. */\n ownerId: string;\n /** List of project items. */\n item?: ProjectItemParametersDto | null;\n /** Description of the project. */\n description?: string | null;\n}\n\n/** Dto class, containing create operation parameters for multi-item project entity. */\nexport interface CreateMultiItemProjectDto {\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n /** Project name. */\n name?: string | null;\n /** Project owner identifier. */\n ownerId: string;\n /** List of project items. */\n items?: ProjectItemParametersDto[] | null;\n /** Description of the project. */\n description?: string | null;\n}\n\n/** Dto class, containing ecommerce order description. */\nexport interface OrderDetailsDto {\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n}\n\nexport enum RenderHiResScenarioOutputFormat {\n Pdf = \"Pdf\",\n Jpeg = \"Jpeg\",\n Png = \"Png\",\n Tiff = \"Tiff\",\n Bmp = \"Bmp\",\n}\n\nexport enum RenderHiResScenarioOutputColorSpace {\n Rgb = \"Rgb\",\n Grayscale = \"Grayscale\",\n Cmyk = \"Cmyk\",\n}\n\nexport enum RenderHiResScenarioOutputFlipMode {\n None = \"None\",\n Horizontal = \"Horizontal\",\n Vertical = \"Vertical\",\n Both = \"Both\",\n}\n\nexport enum RenderHiResScenarioOutputRotateMode {\n None = \"None\",\n Rotate90 = \"Rotate90\",\n Rotate180 = \"Rotate180\",\n Rotate270 = \"Rotate270\",\n Auto = \"Auto\",\n}\n\n/** Dto class, containing 'RenderHiRes' scenario parameters. */\nexport interface RenderHiResScenarioDto {\n /** Private design identifier. */\n designId: string;\n /** Output file name (without extension). */\n name?: string | null;\n /** Output file DPI. */\n dpi?: number;\n /** Output file format. */\n format?: RenderHiResScenarioOutputFormat | null;\n /** Output file color space. */\n colorSpace?: RenderHiResScenarioOutputColorSpace | null;\n /** Output file flip mode. */\n flipMode?: RenderHiResScenarioOutputFlipMode | null;\n /** Output file rotate mode. */\n rotateMode?: RenderHiResScenarioOutputRotateMode | null;\n /** Output file access mode. */\n anonymousAccess?: boolean | null;\n}\n\n/** Dto class, containing 'create' operation parameters for project entity. */\nexport interface CreateProjectByRenderHiResScenarioDto {\n /** Project owner identifier. */\n ownerId: string;\n /** Project name. */\n name?: string | null;\n /** Description of the project. */\n description?: string | null;\n /** Ecommerce system order description. */\n orderDetails?: OrderDetailsDto | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** List of project items. */\n scenario: RenderHiResScenarioDto;\n}\n\nexport interface ItemPipelineDto {\n itemName?: string | null;\n pipelineId?: number;\n}\n\n/** Dto class, containing 'Specific Pipeline' scenario parameters. */\nexport interface SpecificPipelineScenarioDto {\n /** An existing processing pipeline identifier. */\n pipelineId?: number | null;\n /** An existing processing pipeline identifier for project post-processing. */\n postProcessingPipelineId?: number | null;\n /** List of objects describing connections between project items and processing pipelines. */\n itemPipelines?: ItemPipelineDto[] | null;\n}\n\n/** Dto class, containing 'create' operation parameters for a new project that should be created by executing 'Specific Pipeline' scenario. */\nexport interface CreateProjectBySpecificPipelineScenarioDto {\n /** Project owner identifier. */\n ownerId: string;\n /** Project name. */\n name?: string | null;\n /** Description of the project. */\n description?: string | null;\n /** Ecommerce system order description. */\n orderDetails?: OrderDetailsDto | null;\n /** List of project items. */\n items?: ProjectItemParametersDto[] | null;\n /** 'Specific Pipeline' scenario params. For more information check BackOffice.Web.PublicApi.ApiStorefront.Models.SpecificPipelineScenarioDto. */\n scenario: SpecificPipelineScenarioDto;\n}\n\n/** Project transition dto class. */\nexport interface ProjectTransitionDto {\n /** Transition identifying name. */\n name?: string | null;\n /** Transition display name. */\n displayName?: string | null;\n /** Project status code from which transition to the result status code can be done. */\n startStatus?: number;\n /** Transition result project status code. */\n resultStatus?: number;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProjectTransitionDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProjectTransitionDto[] | null;\n}\n\n/** Dto class, containing the information about project status. */\nexport interface ProjectStatusDto {\n /** Status code. */\n code?: number;\n /** Status display name. */\n displayName?: string | null;\n}\n\n/** Dto class, containing information about the project transition conflict. */\nexport interface ProjectTransitionConflictDto {\n /** A list of all available status transitions for the project. */\n availableTransitions?: ProjectTransitionDto[] | null;\n /** Problem description. */\n description?: string | null;\n /** Coflict type. */\n type?: ConflictType;\n}\n\n/** Dto class, containing parameters for the 'projects batch delete' operation. */\nexport interface BatchDeleteProjectsInput {\n /** Identifiers of projects that should be deleted. */\n ids?: number[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProjectStatusDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProjectStatusDto[] | null;\n}\n\n/** Dto class, containing description of a project output file. */\nexport interface ProjectOutputFileDetailsDto {\n /** Project item identifier. */\n projectItemId?: number | null;\n /** Order item identifier from storefront. */\n orderLineItemId?: string | null;\n /** Order item index from storefront. */\n orderLineItemIndex?: number | null;\n /** Project output file URL. */\n url?: string | null;\n /** Project output file name. */\n name?: string | null;\n /** Project output file format. */\n format?: string | null;\n /** Output artifact file identifier. */\n artifactId?: string | null;\n /** Project output file access strategy. */\n anonymousAccess?: boolean;\n /** Project output file size in bytes. */\n size?: number | null;\n}\n\n/** Dto class, containing description of project processing results. */\nexport interface ProjectProcessingResultsDto {\n /** Project processing status. */\n status?: ProjectProcessingStatus;\n /** Project status description. */\n statusDescription?: string | null;\n /** Collection of project output file descriptions. */\n outputFileDetails?: ProjectOutputFileDetailsDto[] | null;\n}\n\n/** Available value types for order data item. */\nexport enum OrderDataItemValueType {\n PlainText = \"PlainText\",\n CommaSeparatedList = \"CommaSeparatedList\",\n SerializedJson = \"SerializedJson\",\n}\n\n/** Dto class, containing information about project's order data item. */\nexport interface OrderDataItemDto {\n /** Order data item key (eventuall order metadata field name). */\n key?: string | null;\n /** Order data item value. */\n value?: string | null;\n /** Order data item type. */\n type?: OrderDataItemValueType;\n}\n\n/** Storefront types. */\nexport enum StorefrontType {\n Custom = \"Custom\",\n ShopifyLegacy = \"ShopifyLegacy\",\n DocketManager = \"DocketManager\",\n CustomSaml = \"CustomSaml\",\n NopCommerce = \"NopCommerce\",\n WooCommerce = \"WooCommerce\",\n Magento = \"Magento\",\n BigCommerce = \"BigCommerce\",\n Shopify = \"Shopify\",\n ShopifyCustom = \"ShopifyCustom\",\n}\n\n/** Dto class, containing information about a storefront. */\nexport interface StorefrontDto {\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n}\n\n/** Paged list of items. */\nexport interface PagedOfStorefrontDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: StorefrontDto[] | null;\n}\n\n/** DTO class, containing infromation about a storefront user. */\nexport interface StorefrontUserDto {\n /** Storefront user identifier. */\n userId?: string | null;\n /** Storefront tenant indentifier. */\n tenantId?: number;\n /** Storefront identifier. */\n storefrontId?: number | null;\n /** Indicates if the user is tracked as an anonymous. */\n isAnonymous?: boolean;\n}\n\n/** Paged list of items. */\nexport interface PagedOfStorefrontUserDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: StorefrontUserDto[] | null;\n}\n\n/** Dto class, containing create operation parameters for storefront user. */\nexport interface CreateStorefrontUserDto {\n /** Storefront user identifier. */\n storefrontUserId?: string | null;\n /** Indicates if the user is tracked as an anonymous. */\n isAnonymous?: boolean;\n}\n\nexport interface RegisterStorefrontUserInput {\n /** Storefront user identifier. */\n storefrontUserId?: string | null;\n}\n\n/** Dto class, containing parameters for merge anonymous user operation. */\nexport interface MergeAnonymousUserDataInput {\n /** Anonymous storefront user identifier. */\n anonymousStorefrontUserId?: string | null;\n /** Regular storefront user identifier. */\n regularStorefrontUserId?: string | null;\n}\n\n/** Dto class, containing information about tenant applications. */\nexport interface TenantApplicationsInfoDto {\n /** An url to the 'Design Editor' tenant application. */\n designEditorUrl?: string | null;\n /** An url to the 'UI Framework'. */\n uiFrameworkUrl?: string | null;\n /** An url to the 'Simple editor'. */\n simpleEditorUrl?: string | null;\n /** An url to the 'Workflow Elements' web components library. */\n workflowElementsUrl?: string | null;\n /** An url to the 'Template editor'. */\n templateEditorUrl?: string | null;\n /** An url to the 'Preflight' tenant application. */\n preflightUrl?: string | null;\n /** An url to the 'Dynamic Image' tenant application. */\n dynamicImageUrl?: string | null;\n /** Tenant identifier */\n tenantId?: number;\n /** An ApiKey for the 'Design Editor' tenant application. */\n designEditorApiKey?: string | null;\n /** An ApiKey for the 'Preflight' tenant application. */\n preflightApiKey?: string | null;\n /** An ApiKey for the 'Dynamic Image' tenant application. */\n dynamicImageApiKey?: string | null;\n}\n\n/** Dto class, containing general information about tenant. */\nexport interface TenantInfoDto {\n /** Tenant identifier. */\n tenantId?: number;\n /** Tenancy name. */\n tenancyName?: string | null;\n /** Tenant creation time. */\n tenantCreationTime?: string;\n /** Tenant activeness status. */\n isActive?: boolean;\n}\n\n/** Dto class, containing information about size measure unit. */\nexport interface SizeMeasureUnitDto {\n /** Measure unit full name. */\n name?: string | null;\n /** Measure unit short name. */\n shortName?: string | null;\n /** Measure unit ratio. */\n ratio?: number;\n /** Indicates if measure unit should be used by default. */\n isDefault?: boolean;\n}\n\n/** Dto class, containing information about tenant measure units. */\nexport interface TenantMeasureUnitsInfoDto {\n /** A list of all 'size' measure units of the tenant. */\n sizeMeasureUntis?: SizeMeasureUnitDto[] | null;\n}\n\nexport interface TenantUserInfoDto {\n /** Tenant identifier. */\n tenantId?: number;\n /** User identifier. */\n userId?: number;\n /** User name. */\n userName?: string | null;\n /** User surname. */\n userSurname?: string | null;\n /** User status. */\n isActive?: boolean;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable<any> {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable<string> {\n return new Observable<string>((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((<any>event.target).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport * as StorefrontApiClient from './storefront-api-client';\n\n// @dynamic\nexport function CreateApiClientConfiguration(token: string, apiUrl: string, apiKey: string = 'ApiKey'): StorefrontApiClient.ApiClientConfiguration {\n const apiConf = new StorefrontApiClient.ApiClientConfiguration();\n apiConf.apiKey = apiKey;\n apiConf.apiUrl = apiUrl;\n apiConf.setAuthorizationToken(token);\n return apiConf;\n}\n\n@NgModule({\n declarations: [],\n imports: [\n ],\n exports: []\n})\nexport class StorefrontModule {\n static forRoot(token: string, apiUrl: string, apiKey: string = 'ApiKey'): ModuleWithProviders<StorefrontModule> {\n return {\n ngModule: StorefrontModule,\n providers: [\n {\n provide: StorefrontApiClient.API_BASE_URL,\n useValue: apiUrl\n },\n {\n provide: StorefrontApiClient.ApiClientConfiguration,\n useFactory: CreateApiClientConfiguration.bind(this, token , apiUrl, apiKey)\n },\n ]\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","../../../projects/client/src/lib/storefront-api-client.ts","../../../projects/client/src/lib/storefront.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","n","v","op","pop","length","push","__values","o","s","m","i","API_BASE_URL","InjectionToken","ApiClientConfiguration","apiKey","authorizationToken","getAuthorizationToken","setAuthorizationToken","token","ApiClientBase","configuration","transformOptions","options","_a","headers","append","getBaseUrl","defultUrl","apiUrl","endsWith","slice","transformResult","url","res","cb","BuildInfoApiClient","http","baseUrl","_this","_super","jsonParseReviver","undefined","headInfo","url_","replace","options_","observe","responseType","HttpHeaders","_observableFrom","pipe","_observableMergeMap","transformedOptions_","request","response_","r","processHeadInfo","_observableCatch","HttpResponseBase","_observableThrow","response","status","responseBlob","HttpResponse","error","Blob","_headers","_b","keys","_c","key","get","blobToText","_responseText","_observableOf","throwException","getInfo","Accept","processGetInfo","result200","JSON","parse","Injectable","args","providedIn","decorators","type","Inject","HttpClient","Optional","ProcessingPipelinesApiClient","getAll","skip","take","search","tenantId","encodeURIComponent","processGetAll","id","Error","processGet","result404","ProductLinksApiClient","getAllProductLinks","sorting","processGetAllProductLinks","getProductLink","productLinkVersionId","productVersionId","processGetProductLink","result409","getProductSummary","productVariantId","sku","processGetProductSummary","getPersonalizationWorkflow","productFilterId","processGetPersonalizationWorkflow","ProductReferencesApiClient","storefrontId","productReference","productSpecificationId","productId","productLinkId","tags","customFields","forEach","item","getAllProductSpecifications","processGetAllProductSpecifications","getAllProducts","processGetAllProducts","reference","getProductSpecification","processGetProductSpecification","getProduct","processGetProduct","getProductCostDetails","storefrontUserId","currencyCode","quantity","processGetProductCostDetails","ProductsApiClient","getProductOptions","processGetProductOptions","getAllProductOptions","processGetAllProductOptions","getProductLinks","processGetProductLinks","getProductVariants","takeAvailableOnly","processGetProductVariants","getProductVariant","processGetProductVariant","getProductVariantDesigns","designCustomFields","designPath","processGetProductVariantDesigns","getProductVariantMockups","mockupCustomFields","mockupPath","processGetProductVariantMockups","getProductVariantDocuments","documentCustomFields","documentPath","processGetProductVariantDocuments","updateProductVariantResources","processUpdateProductVariantResources","getAvailableProductTags","processGetAvailableProductTags","ProductSpecificationsApiClient","ProjectsApiClient","ownerId","datePeriod","orderId","processingStatus","includeObsolete","delete","processDelete","getPreview","processGetPreview","contentDisposition","fileNameMatch","exec","fileName","data","getPreviewUrl","processGetPreviewUrl","createWithSingleItem","stringify","Content-Type","processCreateWithSingleItem","result201","result400","createWithMultipleItems","processCreateWithMultipleItems","createByRenderHiResScenario","processCreateByRenderHiResScenario","createBySpecificPipelineScenario","processCreateBySpecificPipelineScenario","getAvailableTransitions","processGetAvailableTransitions","changeStatus","transition","processChangeStatus","forceStatus","processForceStatus","batchDelete","processBatchDelete","getAllStatuses","processGetAllStatuses","getAllTransitions","processGetAllTransitions","getProjectProcessingResults","itemId","processGetProjectProcessingResults","resumeProjectProcessing","processResumeProjectProcessing","restartProjectProcessing","processRestartProjectProcessing","getProjectOrder","processGetProjectOrder","attachDataToProjectOrder","processAttachDataToProjectOrder","StorefrontsApiClient","types","StorefrontUsersApiClient","includeAnonymous","processCreate","register","processRegister","mergeAnonymous","processMergeAnonymous","getToken","processGetToken","OptionType","ConflictType","AppearanceDataType","WorkflowType","ProductReferenceType","ProductVariantResourceType","ProductVariantMockupType","SurfaceUsageType","DatePeriod","ProjectProcessingStatus","ProjectItemResourceType","RenderHiResScenarioOutputFormat","RenderHiResScenarioOutputColorSpace","RenderHiResScenarioOutputFlipMode","RenderHiResScenarioOutputRotateMode","OrderDataItemValueType","StorefrontType","TenantInfoApiClient","getApplicationsInfo","processGetApplicationsInfo","getMeasureUnitsInfo","processGetMeasureUnitsInfo","getUsersInfo","processGetUsersInfo","ApiException","message","isApiException","obj","blob","Observable","observer","reader","FileReader","onload","event","target","complete","readAsText","CreateApiClientConfiguration","apiConf","StorefrontApiClient.ApiClientConfiguration","StorefrontModule","forRoot","ngModule","providers","provide","StorefrontApiClient.API_BASE_URL","useValue","useFactory","bind","NgModule","declarations","imports","exports"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/* tslint:disable */\n/* eslint-disable */\n//----------------------\n// <auto-generated>\n// Generated using the NSwag toolchain v13.15.5.0 (NJsonSchema v10.6.6.0 (Newtonsoft.Json v11.0.0.0)) (http://NSwag.org)\n// </auto-generated>\n//----------------------\n// ReSharper disable InconsistentNaming\n\nimport { mergeMap as _observableMergeMap, catchError as _observableCatch } from 'rxjs/operators';\nimport { Observable, from as _observableFrom, throwError as _observableThrow, of as _observableOf } from 'rxjs';\nimport { Injectable, Inject, Optional, InjectionToken } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpResponse, HttpResponseBase } from '@angular/common/http';\n\nexport const API_BASE_URL = new InjectionToken<string>('API_BASE_URL');\n\nexport class ApiClientConfiguration {\n apiUrl: string;\n apiKey: string = '';\n private authorizationToken: string = null;\n async getAuthorizationToken(): Promise<string> { return this.authorizationToken; };\n setAuthorizationToken(token: string): void { this.authorizationToken = token; };\n}\n\nexport class ApiClientBase {\n constructor(private configuration: ApiClientConfiguration) { }\n\n protected async transformOptions(options: any): Promise<any> {\n const token = await this.configuration.getAuthorizationToken();\n if (token != null) {\n options.headers = (options.headers as HttpHeaders).append(\"authorization\", \"Bearer \" + token);\n } else {\n options.headers = (options.headers as HttpHeaders).append(\"X-API-Key\", this.configuration.apiKey);\n }\n //options = { ...options, transformResponse: (res) => res, responseType: 'json' };\n return options;\n }\n\n protected getBaseUrl(defultUrl: string) {\n if (this.configuration.apiUrl.endsWith('/')) {\n return this.configuration.apiUrl.slice(0, -1);\n }\n return this.configuration.apiUrl;\n }\n\n protected transformResult(url: string, res: HttpResponseBase, cb: (res: HttpResponseBase) => Observable<any>): Observable<any> {\n return cb(res);\n }\n}\n\nexport interface IBuildInfoApiClient {\n /**\n * Returns an assembly build info.\n * @return Success\n */\n headInfo(): Observable<void>;\n /**\n * Returns an assembly build info.\n * @return Success\n */\n getInfo(): Observable<BuildInfoModel>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BuildInfoApiClient extends ApiClientBase implements IBuildInfoApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns an assembly build info.\n * @return Success\n */\n headInfo(): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/info\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"head\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processHeadInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processHeadInfo(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processHeadInfo(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns an assembly build info.\n * @return Success\n */\n getInfo(): Observable<BuildInfoModel> {\n let url_ = this.baseUrl + \"/api/storefront/v1/info\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n } catch (e) {\n return <Observable<BuildInfoModel>><any>_observableThrow(e);\n }\n } else\n return <Observable<BuildInfoModel>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetInfo(response: HttpResponseBase): Observable<BuildInfoModel> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <BuildInfoModel>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<BuildInfoModel>(<any>null);\n }\n}\n\nexport interface IProcessingPipelinesApiClient {\n /**\n * Returns all processing pipelines relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param search (optional) Search string for partial by processing pipeline name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto>;\n /**\n * Returns a processing pipeline.\n * @param id Processing pipeline identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProcessingPipelineDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProcessingPipelinesApiClient extends ApiClientBase implements IProcessingPipelinesApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all processing pipelines relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param search (optional) Search string for partial by processing pipeline name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/processing-pipelines?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProcessingPipelineDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProcessingPipelineDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProcessingPipelineDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProcessingPipelineDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProcessingPipelineDto>(<any>null);\n }\n\n /**\n * Returns a processing pipeline.\n * @param id Processing pipeline identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProcessingPipelineDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/processing-pipelines/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProcessingPipelineDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProcessingPipelineDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProcessingPipelineDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProcessingPipelineDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProcessingPipelineDto>(<any>null);\n }\n}\n\nexport interface IProductLinksApiClient {\n /**\n * Returns all product links, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto>;\n /**\n * Returns a product link by its identifier.\n * @param id Product identifier.\n * @param productLinkVersionId (optional) Product link version identifier. Optional\n * @param productVersionId (optional) Product version identifier which represents linked product version. Optional\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto>;\n /**\n * Returns a product link summary by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto>;\n /**\n * Returns a product link personalization workflow description by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductLinksApiClient extends ApiClientBase implements IProductLinksApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all product links, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductLinks(response: HttpResponseBase): Observable<PagedOfProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product link by its identifier.\n * @param id Product identifier.\n * @param productLinkVersionId (optional) Product link version identifier. Optional\n * @param productVersionId (optional) Product version identifier which represents linked product version. Optional\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkVersionId !== undefined && productLinkVersionId !== null)\n url_ += \"productLinkVersionId=\" + encodeURIComponent(\"\" + productLinkVersionId) + \"&\";\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n } catch (e) {\n return <Observable<ProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLink(response: HttpResponseBase): Observable<ProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product link summary by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links/{id}/summary?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkVersionId !== undefined && productLinkVersionId !== null)\n url_ += \"productLinkVersionId=\" + encodeURIComponent(\"\" + productLinkVersionId) + \"&\";\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n } catch (e) {\n return <Observable<ProductSummaryDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSummaryDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSummary(response: HttpResponseBase): Observable<ProductSummaryDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSummaryDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSummaryDto>(<any>null);\n }\n\n /**\n * Returns a product link personalization workflow description by product link identifier.\n * @param id Product link identifier.\n * @param productLinkVersionId (optional) Product link version identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productLinkVersionId?: number | null | undefined, productVersionId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-links/{id}/personalization-workflow?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkVersionId !== undefined && productLinkVersionId !== null)\n url_ += \"productLinkVersionId=\" + encodeURIComponent(\"\" + productLinkVersionId) + \"&\";\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProductReferencesApiClient {\n /**\n * Returns all storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductReferenceDto>;\n /**\n * Returns a list of product specifications associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductSpecifications(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto>;\n /**\n * Returns a list of products associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto>;\n /**\n * Returns a list of product links associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto>;\n /**\n * Returns a storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto>;\n /**\n * Returns a product specification by the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSpecification(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto>;\n /**\n * Returns a product by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductDto>;\n /**\n * Returns a product summary by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(reference: string | null, storefrontId: number, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto>;\n /**\n * Returns a product link by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductLinkDto>;\n /**\n * Returns a product cost details from ecommerce system.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param sku Product SKU.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param currencyCode (optional) Product cost currency code.\n * @param quantity (optional) Product quantity.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductCostDetails(reference: string | null, sku: string, storefrontId: number, storefrontUserId?: string | null | undefined, currencyCode?: string | null | undefined, quantity?: number | undefined, tenantId?: number | null | undefined): Observable<ProductCostDetailsDto>;\n /**\n * Returns a product personalization workflow.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(reference: string | null, storefrontId?: number | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductReferencesApiClient extends ApiClientBase implements IProductReferencesApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProductReferenceDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductReferenceDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductReferenceDto>(<any>null);\n }\n\n /**\n * Returns a list of product specifications associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductSpecifications(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/product-specifications?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductSpecifications(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductSpecifications(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductSpecifications(response: HttpResponseBase): Observable<PagedOfProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a list of products associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/products?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProducts(response: HttpResponseBase): Observable<PagedOfProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductDto>(<any>null);\n }\n\n /**\n * Returns a list of product links associated with storefront product references relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param productReference (optional) Product reference filter.\n Product reference is an external reference to Customer's Canvas product, e.g online store product identifier.\n * @param productSpecificationId (optional) Customer's Canvas product specification filter.\n * @param productId (optional) Customer's Canvas product filter.\n * @param productLinkId (optional) Customer's Canvas product link filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU filter.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductLinks(storefrontId: number, productReference?: string | null | undefined, productSpecificationId?: number | null | undefined, productId?: number | null | undefined, productLinkId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/product-links?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (productSpecificationId !== undefined && productSpecificationId !== null)\n url_ += \"productSpecificationId=\" + encodeURIComponent(\"\" + productSpecificationId) + \"&\";\n if (productId !== undefined && productId !== null)\n url_ += \"productId=\" + encodeURIComponent(\"\" + productId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductLinks(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductLinks(response: HttpResponseBase): Observable<PagedOfProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProductReferenceDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductReferenceDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductReferenceDto>(<any>null);\n }\n\n /**\n * Returns a product specification by the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSpecification(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-specification?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSpecification(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSpecification(<any>r));\n } catch (e) {\n return <Observable<ProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSpecification(response: HttpResponseBase): Observable<ProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a product by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n } catch (e) {\n return <Observable<ProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProduct(response: HttpResponseBase): Observable<ProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductDto>(<any>null);\n }\n\n /**\n * Returns a product summary by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(reference: string | null, storefrontId: number, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-summary?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n } catch (e) {\n return <Observable<ProductSummaryDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSummaryDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSummary(response: HttpResponseBase): Observable<ProductSummaryDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSummaryDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSummaryDto>(<any>null);\n }\n\n /**\n * Returns a product link by storefront product reference.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-link?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n } catch (e) {\n return <Observable<ProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLink(response: HttpResponseBase): Observable<ProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product cost details from ecommerce system.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param sku Product SKU.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param currencyCode (optional) Product cost currency code.\n * @param quantity (optional) Product quantity.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductCostDetails(reference: string | null, sku: string, storefrontId: number, storefrontUserId?: string | null | undefined, currencyCode?: string | null | undefined, quantity?: number | undefined, tenantId?: number | null | undefined): Observable<ProductCostDetailsDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/product-cost-details?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (sku === undefined || sku === null)\n throw new Error(\"The parameter 'sku' must be defined and cannot be null.\");\n else\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (storefrontUserId !== undefined && storefrontUserId !== null)\n url_ += \"storefrontUserId=\" + encodeURIComponent(\"\" + storefrontUserId) + \"&\";\n if (currencyCode !== undefined && currencyCode !== null)\n url_ += \"currencyCode=\" + encodeURIComponent(\"\" + currencyCode) + \"&\";\n if (quantity === null)\n throw new Error(\"The parameter 'quantity' cannot be null.\");\n else if (quantity !== undefined)\n url_ += \"quantity=\" + encodeURIComponent(\"\" + quantity) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductCostDetails(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductCostDetails(<any>r));\n } catch (e) {\n return <Observable<ProductCostDetailsDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductCostDetailsDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductCostDetails(response: HttpResponseBase): Observable<ProductCostDetailsDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductCostDetailsDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductCostDetailsDto>(<any>null);\n }\n\n /**\n * Returns a product personalization workflow.\n * @param reference An external reference to Customer's Canvas product, e.g online store product identifier.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(reference: string | null, storefrontId?: number | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-references/{reference}/personalization-workflow?\";\n if (reference === undefined || reference === null)\n throw new Error(\"The parameter 'reference' must be defined.\");\n url_ = url_.replace(\"{reference}\", encodeURIComponent(\"\" + reference));\n if (storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' cannot be null.\");\n else if (storefrontId !== undefined)\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProductsApiClient {\n /**\n * Returns all products, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto>;\n /**\n * Returns a product by identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductDto>;\n /**\n * Returns a product summary by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto>;\n /**\n * Returns a list of product options.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductOptions(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto>;\n /**\n * Returns a list of product options for all products.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductOptions(tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto>;\n /**\n * Returns a list of product links.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLinks(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto>;\n /**\n * Returns a product link.\n * @param id Product identifier.\n * @param productLinkId Product link identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto>;\n /**\n * Returns a list of product variants.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariants(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDto>;\n /**\n * Returns a product variant.\n * @param id Product identifier.\n * @param productVariantId Product variant identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariant(id: number, productVariantId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductVariantDto>;\n /**\n * Returns a list of product variant designs.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param designCustomFields (optional) Custom attributes dictionary filter for designs. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param designPath (optional) Path filter for designs. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDesigns(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, designCustomFields?: string | null | undefined, designPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDesignDto>;\n /**\n * Returns a list of product variant mockups.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param mockupCustomFields (optional) Custom attributes dictionary filter for mockups. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param mockupPath (optional) Path filter for mockups. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantMockups(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, mockupCustomFields?: string | null | undefined, mockupPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantMockupDto>;\n /**\n * Returns a list of product variant documents.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for document name partial match.\n * @param documentCustomFields (optional) Custom attributes dictionary filter for documents. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param documentPath (optional) Path filter for documents. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDocuments(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, documentCustomFields?: string | null | undefined, documentPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDocumentDto>;\n /**\n * Updates product variant resources.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n updateProductVariantResources(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns a list of all available product tags.\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableProductTags(search?: string | null | undefined, tenantId?: number | null | undefined): Observable<string[]>;\n /**\n * Returns a product personalization workflow description by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductsApiClient extends ApiClientBase implements IProductsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all products, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tags (optional) List of tags that product should have.\n * @param customFields (optional) Serialized custom fields dictionary filter. For example: {\"public\":\"true\",\"name\":\"my item\"}.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProducts(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, sku?: string | null | undefined, tags?: string[] | null | undefined, customFields?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tags !== undefined && tags !== null)\n tags && tags.forEach(item => { url_ += \"tags=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (customFields !== undefined && customFields !== null)\n url_ += \"customFields=\" + encodeURIComponent(\"\" + customFields) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProducts(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProducts(response: HttpResponseBase): Observable<PagedOfProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductDto>(<any>null);\n }\n\n /**\n * Returns a product by identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProduct(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProduct(<any>r));\n } catch (e) {\n return <Observable<ProductDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProduct(response: HttpResponseBase): Observable<ProductDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductDto>(<any>null);\n }\n\n /**\n * Returns a product summary by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param sku (optional) Product variant SKU.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductSummary(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productVariantId?: number | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<ProductSummaryDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/summary?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductSummary(<any>r));\n } catch (e) {\n return <Observable<ProductSummaryDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSummaryDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductSummary(response: HttpResponseBase): Observable<ProductSummaryDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSummaryDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSummaryDto>(<any>null);\n }\n\n /**\n * Returns a list of product options.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductOptions(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/options?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductOptions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductOptions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductOptions(response: HttpResponseBase): Observable<PagedOfProductOptionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductOptionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductOptionDto>(<any>null);\n }\n\n /**\n * Returns a list of product options for all products.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllProductOptions(tenantId?: number | null | undefined): Observable<PagedOfProductOptionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/options?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductOptions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllProductOptions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductOptionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllProductOptions(response: HttpResponseBase): Observable<PagedOfProductOptionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductOptionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductOptionDto>(<any>null);\n }\n\n /**\n * Returns a list of product links.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLinks(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/links?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLinks(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLinks(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLinks(response: HttpResponseBase): Observable<PagedOfProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a product link.\n * @param id Product identifier.\n * @param productLinkId Product link identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductLink(id: number, productLinkId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductLinkDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/links/{productLinkId}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productLinkId === undefined || productLinkId === null)\n throw new Error(\"The parameter 'productLinkId' must be defined.\");\n url_ = url_.replace(\"{productLinkId}\", encodeURIComponent(\"\" + productLinkId));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductLink(<any>r));\n } catch (e) {\n return <Observable<ProductLinkDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductLinkDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductLink(response: HttpResponseBase): Observable<ProductLinkDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductLinkDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductLinkDto>(<any>null);\n }\n\n /**\n * Returns a list of product variants.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariants(id: number, productVersionId?: number | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variants?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariants(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariants(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariants(response: HttpResponseBase): Observable<PagedOfProductVariantDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantDto>(<any>null);\n }\n\n /**\n * Returns a product variant.\n * @param id Product identifier.\n * @param productVariantId Product variant identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariant(id: number, productVariantId: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProductVariantDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variants/{productVariantId}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVariantId === undefined || productVariantId === null)\n throw new Error(\"The parameter 'productVariantId' must be defined.\");\n url_ = url_.replace(\"{productVariantId}\", encodeURIComponent(\"\" + productVariantId));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariant(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariant(<any>r));\n } catch (e) {\n return <Observable<ProductVariantDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductVariantDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariant(response: HttpResponseBase): Observable<ProductVariantDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductVariantDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductVariantDto>(<any>null);\n }\n\n /**\n * Returns a list of product variant designs.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param designCustomFields (optional) Custom attributes dictionary filter for designs. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param designPath (optional) Path filter for designs. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDesigns(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, designCustomFields?: string | null | undefined, designPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDesignDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variant-designs?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (designCustomFields !== undefined && designCustomFields !== null)\n url_ += \"designCustomFields=\" + encodeURIComponent(\"\" + designCustomFields) + \"&\";\n if (designPath !== undefined && designPath !== null)\n url_ += \"designPath=\" + encodeURIComponent(\"\" + designPath) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDesigns(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDesigns(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantDesignDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantDesignDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariantDesigns(response: HttpResponseBase): Observable<PagedOfProductVariantDesignDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantDesignDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantDesignDto>(<any>null);\n }\n\n /**\n * Returns a list of product variant mockups.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for design name partial match.\n * @param mockupCustomFields (optional) Custom attributes dictionary filter for mockups. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param mockupPath (optional) Path filter for mockups. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantMockups(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, mockupCustomFields?: string | null | undefined, mockupPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantMockupDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variant-mockups?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (mockupCustomFields !== undefined && mockupCustomFields !== null)\n url_ += \"mockupCustomFields=\" + encodeURIComponent(\"\" + mockupCustomFields) + \"&\";\n if (mockupPath !== undefined && mockupPath !== null)\n url_ += \"mockupPath=\" + encodeURIComponent(\"\" + mockupPath) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantMockups(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantMockups(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantMockupDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantMockupDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariantMockups(response: HttpResponseBase): Observable<PagedOfProductVariantMockupDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantMockupDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantMockupDto>(<any>null);\n }\n\n /**\n * Returns a list of product variant documents.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productVariantId (optional) Product variant identifier.\n * @param search (optional) Search string for document name partial match.\n * @param documentCustomFields (optional) Custom attributes dictionary filter for documents. For example: {\"public\":\"true\",\"name\":\"my item\"}\n * @param documentPath (optional) Path filter for documents. Subfolders included by default.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param options (optional) Defines options filter e.g.: \"{ \"opt1_id\": \"opt1_val1_id, opt1_val2_id\", \"opt2_id\": \"opt2_val1_id\" }\".\n * @param productFilterId (optional) Defines special filter based on product filter with specified identifier.\n * @param takeAvailableOnly (optional) Defines special filter for available product variants.\n * @param sku (optional) SKU of linked ecommerce product.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProductVariantDocuments(id: number, productVersionId?: number | null | undefined, productVariantId?: number | null | undefined, search?: string | null | undefined, documentCustomFields?: string | null | undefined, documentPath?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, options?: string | null | undefined, productFilterId?: number | null | undefined, takeAvailableOnly?: boolean | null | undefined, sku?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductVariantDocumentDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/variant-documents?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productVariantId !== undefined && productVariantId !== null)\n url_ += \"productVariantId=\" + encodeURIComponent(\"\" + productVariantId) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (documentCustomFields !== undefined && documentCustomFields !== null)\n url_ += \"documentCustomFields=\" + encodeURIComponent(\"\" + documentCustomFields) + \"&\";\n if (documentPath !== undefined && documentPath !== null)\n url_ += \"documentPath=\" + encodeURIComponent(\"\" + documentPath) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (options !== undefined && options !== null)\n url_ += \"options=\" + encodeURIComponent(\"\" + options) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (takeAvailableOnly !== undefined && takeAvailableOnly !== null)\n url_ += \"takeAvailableOnly=\" + encodeURIComponent(\"\" + takeAvailableOnly) + \"&\";\n if (sku !== undefined && sku !== null)\n url_ += \"sku=\" + encodeURIComponent(\"\" + sku) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDocuments(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProductVariantDocuments(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductVariantDocumentDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductVariantDocumentDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProductVariantDocuments(response: HttpResponseBase): Observable<PagedOfProductVariantDocumentDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductVariantDocumentDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductVariantDocumentDto>(<any>null);\n }\n\n /**\n * Updates product variant resources.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n updateProductVariantResources(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/update-variant-resources?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processUpdateProductVariantResources(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processUpdateProductVariantResources(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processUpdateProductVariantResources(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns a list of all available product tags.\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableProductTags(search?: string | null | undefined, tenantId?: number | null | undefined): Observable<string[]> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/available-tags?\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableProductTags(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableProductTags(<any>r));\n } catch (e) {\n return <Observable<string[]>><any>_observableThrow(e);\n }\n } else\n return <Observable<string[]>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAvailableProductTags(response: HttpResponseBase): Observable<string[]> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <string[]>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<string[]>(<any>null);\n }\n\n /**\n * Returns a product personalization workflow description by product identifier.\n * @param id Product identifier.\n * @param productVersionId (optional) Product version identifier.\n * @param productLinkId (optional) Product link identifier.\n * @param productFilterId (optional) Product filter identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, productVersionId?: number | null | undefined, productLinkId?: number | null | undefined, productFilterId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/products/{id}/personalization-workflow?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (productVersionId !== undefined && productVersionId !== null)\n url_ += \"productVersionId=\" + encodeURIComponent(\"\" + productVersionId) + \"&\";\n if (productLinkId !== undefined && productLinkId !== null)\n url_ += \"productLinkId=\" + encodeURIComponent(\"\" + productLinkId) + \"&\";\n if (productFilterId !== undefined && productFilterId !== null)\n url_ += \"productFilterId=\" + encodeURIComponent(\"\" + productFilterId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProductSpecificationsApiClient {\n /**\n * Returns all product specifications, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto>;\n /**\n * Returns a product specification by identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto>;\n /**\n * Returns a product personalization workflow description by product specification identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductSpecificationsApiClient extends ApiClientBase implements IProductSpecificationsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all product specifications, relevant to the specified query parameters.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-specifications?\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a product specification by identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProductSpecificationDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-specifications/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProductSpecificationDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductSpecificationDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProductSpecificationDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProductSpecificationDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProductSpecificationDto>(<any>null);\n }\n\n /**\n * Returns a product personalization workflow description by product specification identifier.\n * @param id Product specification identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPersonalizationWorkflow(id: number, tenantId?: number | null | undefined): Observable<PersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/product-specifications/{id}/personalization-workflow?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPersonalizationWorkflow(<any>r));\n } catch (e) {\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPersonalizationWorkflow(response: HttpResponseBase): Observable<PersonalizationWorkflowDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PersonalizationWorkflowDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PersonalizationWorkflowDto>(<any>null);\n }\n}\n\nexport interface IProjectsApiClient {\n /**\n * Returns all projects, relevant to the specified query parameters.\n * @param ownerId (optional) Project owner (storefront user id) filter.\n * @param productReference (optional) Product reference filter.\n * @param status (optional) Project status filter.\n * @param datePeriod (optional) Project date period filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param orderId (optional) Identifier of corresponding order.\n * @param processingStatus (optional) Project processing status filter.\n * @param includeObsolete (optional) Indicates if obsolete projects prepared to be removed should be included to result.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(ownerId?: string | null | undefined, productReference?: string | null | undefined, status?: number | null | undefined, datePeriod?: DatePeriod | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, orderId?: string | null | undefined, processingStatus?: ProjectProcessingStatus | null | undefined, includeObsolete?: boolean | undefined, storefrontId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProjectDto>;\n /**\n * Returns a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProjectDto>;\n /**\n * Removes a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns a project preview file by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreview(id: number, tenantId?: number | null | undefined): Observable<FileResponse>;\n /**\n * Returns a project preview URL by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreviewUrl(id: number, tenantId?: number | null | undefined): Observable<string>;\n /**\n * Creates a new project with single item.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithSingleItem(storefrontId: number, tenantId?: number | null | undefined, body?: CreateSingleItemProjectDto | null | undefined): Observable<ProjectDto>;\n /**\n * Creates a new project with multiple items.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithMultipleItems(storefrontId: number, tenantId?: number | null | undefined, body?: CreateMultiItemProjectDto | null | undefined): Observable<ProjectDto>;\n /**\n * Creates a new project by 'Render HiRes' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createByRenderHiResScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectByRenderHiResScenarioDto | null | undefined): Observable<ProjectDto>;\n /**\n * Creates a new project by 'Specific Pipeline' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createBySpecificPipelineScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectBySpecificPipelineScenarioDto | null | undefined): Observable<ProjectDto>;\n /**\n * Returns all available status transitions for a project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableTransitions(id: number, tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto>;\n /**\n * Changes the project status.\n * @param id Project identifier\n * @param transition Transition identifying name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n changeStatus(id: number, transition: string | null, tenantId?: number | null | undefined): Observable<ProjectStatusDto>;\n /**\n * Changes the project status forcibly without a proper transition.\n * @param id Project identifier.\n * @param status Project status code.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n forceStatus(id: number, status: number, tenantId?: number | null | undefined): Observable<ProjectStatusDto>;\n /**\n * Deletes specified projects. \n These projects will be hide from projects list immediately, but complete projects data cleaning will take some additional time.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n batchDelete(tenantId?: number | null | undefined, body?: BatchDeleteProjectsInput | null | undefined): Observable<PagedOfProjectStatusDto>;\n /**\n * Returns a list of all existing project statuses.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllStatuses(tenantId?: number | null | undefined): Observable<PagedOfProjectStatusDto>;\n /**\n * Returns a list of all existing project status transitions.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllTransitions(tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto>;\n /**\n * Returns a project processing results.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectProcessingResults(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProjectProcessingResultsDto>;\n /**\n * Resumes project processing.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be resumed.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n resumeProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Restarts a project processing routine.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be restarted.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n restartProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns an order description from the ecommerce system for the specified project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectOrder(id: number, tenantId?: number | null | undefined): Observable<any>;\n /**\n * Attachs the specified data to the project's order in ecommerce system.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) A list of data items, which should be attached to project's order.\n * @return Success\n */\n attachDataToProjectOrder(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined, body?: OrderDataItemDto[] | null | undefined): Observable<void>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProjectsApiClient extends ApiClientBase implements IProjectsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all projects, relevant to the specified query parameters.\n * @param ownerId (optional) Project owner (storefront user id) filter.\n * @param productReference (optional) Product reference filter.\n * @param status (optional) Project status filter.\n * @param datePeriod (optional) Project date period filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param orderId (optional) Identifier of corresponding order.\n * @param processingStatus (optional) Project processing status filter.\n * @param includeObsolete (optional) Indicates if obsolete projects prepared to be removed should be included to result.\n * @param storefrontId (optional) Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(ownerId?: string | null | undefined, productReference?: string | null | undefined, status?: number | null | undefined, datePeriod?: DatePeriod | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, orderId?: string | null | undefined, processingStatus?: ProjectProcessingStatus | null | undefined, includeObsolete?: boolean | undefined, storefrontId?: number | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects?\";\n if (ownerId !== undefined && ownerId !== null)\n url_ += \"ownerId=\" + encodeURIComponent(\"\" + ownerId) + \"&\";\n if (productReference !== undefined && productReference !== null)\n url_ += \"productReference=\" + encodeURIComponent(\"\" + productReference) + \"&\";\n if (status !== undefined && status !== null)\n url_ += \"status=\" + encodeURIComponent(\"\" + status) + \"&\";\n if (datePeriod === null)\n throw new Error(\"The parameter 'datePeriod' cannot be null.\");\n else if (datePeriod !== undefined)\n url_ += \"datePeriod=\" + encodeURIComponent(\"\" + datePeriod) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (orderId !== undefined && orderId !== null)\n url_ += \"orderId=\" + encodeURIComponent(\"\" + orderId) + \"&\";\n if (processingStatus !== undefined && processingStatus !== null)\n url_ += \"processingStatus=\" + encodeURIComponent(\"\" + processingStatus) + \"&\";\n if (includeObsolete === null)\n throw new Error(\"The parameter 'includeObsolete' cannot be null.\");\n else if (includeObsolete !== undefined)\n url_ += \"includeObsolete=\" + encodeURIComponent(\"\" + includeObsolete) + \"&\";\n if (storefrontId !== undefined && storefrontId !== null)\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectDto>(<any>null);\n }\n\n /**\n * Returns a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Removes a project by identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processDelete(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDelete(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processDelete(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns a project preview file by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreview(id: number, tenantId?: number | null | undefined): Observable<FileResponse> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/preview?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/octet-stream\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPreview(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPreview(<any>r));\n } catch (e) {\n return <Observable<FileResponse>><any>_observableThrow(e);\n }\n } else\n return <Observable<FileResponse>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPreview(response: HttpResponseBase): Observable<FileResponse> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200 || status === 206) {\n const contentDisposition = response.headers ? response.headers.get(\"content-disposition\") : undefined;\n const fileNameMatch = contentDisposition ? /filename=\"?([^\"]*?)\"?(;|$)/g.exec(contentDisposition) : undefined;\n const fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined;\n return _observableOf({ fileName: fileName, data: <any>responseBlob, status: status, headers: _headers });\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<FileResponse>(<any>null);\n }\n\n /**\n * Returns a project preview URL by project identifier.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getPreviewUrl(id: number, tenantId?: number | null | undefined): Observable<string> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/preview-url?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetPreviewUrl(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetPreviewUrl(<any>r));\n } catch (e) {\n return <Observable<string>><any>_observableThrow(e);\n }\n } else\n return <Observable<string>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetPreviewUrl(response: HttpResponseBase): Observable<string> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <string>_responseText;\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<string>(<any>null);\n }\n\n /**\n * Creates a new project with single item.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithSingleItem(storefrontId: number, tenantId?: number | null | undefined, body?: CreateSingleItemProjectDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/with-single-item?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateWithSingleItem(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWithSingleItem(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateWithSingleItem(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Creates a new project with multiple items.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createWithMultipleItems(storefrontId: number, tenantId?: number | null | undefined, body?: CreateMultiItemProjectDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/with-multiple-items?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateWithMultipleItems(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWithMultipleItems(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateWithMultipleItems(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Creates a new project by 'Render HiRes' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createByRenderHiResScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectByRenderHiResScenarioDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/by-scenario/render-hires?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateByRenderHiResScenario(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateByRenderHiResScenario(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateByRenderHiResScenario(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Creates a new project by 'Specific Pipeline' scenario.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n createBySpecificPipelineScenario(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProjectBySpecificPipelineScenarioDto | null | undefined): Observable<ProjectDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/by-scenario/specific-pipeline?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreateBySpecificPipelineScenario(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBySpecificPipelineScenario(<any>r));\n } catch (e) {\n return <Observable<ProjectDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateBySpecificPipelineScenario(response: HttpResponseBase): Observable<ProjectDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProjectDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectDto>(<any>null);\n }\n\n /**\n * Returns all available status transitions for a project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailableTransitions(id: number, tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/transitions?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableTransitions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableTransitions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAvailableTransitions(response: HttpResponseBase): Observable<PagedOfProjectTransitionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectTransitionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectTransitionDto>(<any>null);\n }\n\n /**\n * Changes the project status.\n * @param id Project identifier\n * @param transition Transition identifying name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n changeStatus(id: number, transition: string | null, tenantId?: number | null | undefined): Observable<ProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/transitions/{transition}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (transition === undefined || transition === null)\n throw new Error(\"The parameter 'transition' must be defined.\");\n url_ = url_.replace(\"{transition}\", encodeURIComponent(\"\" + transition));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processChangeStatus(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processChangeStatus(<any>r));\n } catch (e) {\n return <Observable<ProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processChangeStatus(response: HttpResponseBase): Observable<ProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <ProjectTransitionConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectStatusDto>(<any>null);\n }\n\n /**\n * Changes the project status forcibly without a proper transition.\n * @param id Project identifier.\n * @param status Project status code.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n forceStatus(id: number, status: number, tenantId?: number | null | undefined): Observable<ProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/statuses/{status}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (status === undefined || status === null)\n throw new Error(\"The parameter 'status' must be defined.\");\n url_ = url_.replace(\"{status}\", encodeURIComponent(\"\" + status));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processForceStatus(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processForceStatus(<any>r));\n } catch (e) {\n return <Observable<ProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processForceStatus(response: HttpResponseBase): Observable<ProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 400) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result400: any = null;\n result400 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Bad Request\", status, _responseText, _headers, result400);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectStatusDto>(<any>null);\n }\n\n /**\n * Deletes specified projects. \n These projects will be hide from projects list immediately, but complete projects data cleaning will take some additional time.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n batchDelete(tenantId?: number | null | undefined, body?: BatchDeleteProjectsInput | null | undefined): Observable<PagedOfProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/batch-delete?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processBatchDelete(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processBatchDelete(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processBatchDelete(response: HttpResponseBase): Observable<PagedOfProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectStatusDto>(<any>null);\n }\n\n /**\n * Returns a list of all existing project statuses.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllStatuses(tenantId?: number | null | undefined): Observable<PagedOfProjectStatusDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/statuses?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllStatuses(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllStatuses(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectStatusDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllStatuses(response: HttpResponseBase): Observable<PagedOfProjectStatusDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectStatusDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectStatusDto>(<any>null);\n }\n\n /**\n * Returns a list of all existing project status transitions.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllTransitions(tenantId?: number | null | undefined): Observable<PagedOfProjectTransitionDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/transitions?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAllTransitions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllTransitions(<any>r));\n } catch (e) {\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfProjectTransitionDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllTransitions(response: HttpResponseBase): Observable<PagedOfProjectTransitionDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfProjectTransitionDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfProjectTransitionDto>(<any>null);\n }\n\n /**\n * Returns a project processing results.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectProcessingResults(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<ProjectProcessingResultsDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/processing-results?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProjectProcessingResults(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProjectProcessingResults(<any>r));\n } catch (e) {\n return <Observable<ProjectProcessingResultsDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProjectProcessingResultsDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProjectProcessingResults(response: HttpResponseBase): Observable<ProjectProcessingResultsDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <ProjectProcessingResultsDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<ProjectProcessingResultsDto>(<any>null);\n }\n\n /**\n * Resumes project processing.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be resumed.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n resumeProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/resume-processing?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processResumeProjectProcessing(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processResumeProjectProcessing(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processResumeProjectProcessing(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Restarts a project processing routine.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier. If value is set, only specified item processing will be restarted.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n restartProjectProcessing(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/restart-processing?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRestartProjectProcessing(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRestartProjectProcessing(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processRestartProjectProcessing(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns an order description from the ecommerce system for the specified project.\n * @param id Project identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getProjectOrder(id: number, tenantId?: number | null | undefined): Observable<any> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/order?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetProjectOrder(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetProjectOrder(<any>r));\n } catch (e) {\n return <Observable<any>><any>_observableThrow(e);\n }\n } else\n return <Observable<any>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetProjectOrder(response: HttpResponseBase): Observable<any> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <any>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<any>(<any>null);\n }\n\n /**\n * Attachs the specified data to the project's order in ecommerce system.\n * @param id Project identifier.\n * @param itemId (optional) Project item identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) A list of data items, which should be attached to project's order.\n * @return Success\n */\n attachDataToProjectOrder(id: number, itemId?: number | null | undefined, tenantId?: number | null | undefined, body?: OrderDataItemDto[] | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/projects/{id}/order-data?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (itemId !== undefined && itemId !== null)\n url_ += \"itemId=\" + encodeURIComponent(\"\" + itemId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processAttachDataToProjectOrder(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processAttachDataToProjectOrder(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processAttachDataToProjectOrder(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n}\n\nexport interface IStorefrontsApiClient {\n /**\n * Returns all storefronts, relevant to the specified query parameters.\n * @param types (optional) Storefront type filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(types?: StorefrontType[] | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontDto>;\n /**\n * Returns a storefront by identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorefrontsApiClient extends ApiClientBase implements IStorefrontsApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all storefronts, relevant to the specified query parameters.\n * @param types (optional) Storefront type filter.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(types?: StorefrontType[] | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefronts?\";\n if (types !== undefined && types !== null)\n types && types.forEach(item => { url_ += \"types=\" + encodeURIComponent(\"\" + item) + \"&\"; });\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfStorefrontDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfStorefrontDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfStorefrontDto>(<any>null);\n }\n\n /**\n * Returns a storefront by identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefronts/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<StorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<StorefrontDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <StorefrontDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontDto>(<any>null);\n }\n}\n\nexport interface IStorefrontUsersApiClient {\n /**\n * Returns all storefront users, relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param includeAnonymous (optional) Flag that indicates if anonymous users should be included. `True` by default.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, storefrontUserId?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, includeAnonymous?: boolean | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontUserDto>;\n /**\n * Creates a new storefront user.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateStorefrontUserDto | null | undefined): Observable<StorefrontUserDto>;\n /**\n * Returns a storefront user by identifier.\n * @param id Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<StorefrontUserDto>;\n /**\n * Registers a storefront user with the specified identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n register(storefrontId: number, tenantId?: number | null | undefined, body?: RegisterStorefrontUserInput | null | undefined): Observable<StorefrontUserDto>;\n /**\n * Transfers all existing data for the anonymous storefront user to the selected regular storefront user account.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n mergeAnonymous(storefrontId: number, tenantId?: number | null | undefined, body?: MergeAnonymousUserDataInput | null | undefined): Observable<void>;\n /**\n * Returns an API access token for the specified storefront user.\n * @param storefrontUserId Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getToken(storefrontUserId: string, storefrontId: number, tenantId?: number | null | undefined): Observable<string>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorefrontUsersApiClient extends ApiClientBase implements IStorefrontUsersApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns all storefront users, relevant to the specified query parameters.\n * @param storefrontId Storefront identifier.\n * @param storefrontUserId (optional) Storefront user identifier.\n * @param skip (optional) Defines page start offset from beginning of sorted result list.\n * @param take (optional) Defines page length (how many consequent items of sorted result list should be taken).\n * @param sorting (optional) Defines sorting order of result list e.g.: \"Title ASC, LastModified DESC\".\n * @param search (optional) Search string for partial match.\n * @param includeAnonymous (optional) Flag that indicates if anonymous users should be included. `True` by default.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(storefrontId: number, storefrontUserId?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, search?: string | null | undefined, includeAnonymous?: boolean | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfStorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (storefrontUserId !== undefined && storefrontUserId !== null)\n url_ += \"storefrontUserId=\" + encodeURIComponent(\"\" + storefrontUserId) + \"&\";\n if (skip !== undefined && skip !== null)\n url_ += \"skip=\" + encodeURIComponent(\"\" + skip) + \"&\";\n if (take !== undefined && take !== null)\n url_ += \"take=\" + encodeURIComponent(\"\" + take) + \"&\";\n if (sorting !== undefined && sorting !== null)\n url_ += \"sorting=\" + encodeURIComponent(\"\" + sorting) + \"&\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\n if (includeAnonymous !== undefined && includeAnonymous !== null)\n url_ += \"includeAnonymous=\" + encodeURIComponent(\"\" + includeAnonymous) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAll(<any>r));\n } catch (e) {\n return <Observable<PagedOfStorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfStorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfStorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <PagedOfStorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<PagedOfStorefrontUserDto>(<any>null);\n }\n\n /**\n * Creates a new storefront user.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateStorefrontUserDto | null | undefined): Observable<StorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processCreate(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreate(<any>r));\n } catch (e) {\n return <Observable<StorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable<StorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <StorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontUserDto>(<any>null);\n }\n\n /**\n * Returns a storefront user by identifier.\n * @param id Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<StorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/{id}?\";\n if (id === undefined || id === null)\n throw new Error(\"The parameter 'id' must be defined.\");\n url_ = url_.replace(\"{id}\", encodeURIComponent(\"\" + id));\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGet(<any>r));\n } catch (e) {\n return <Observable<StorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<StorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <StorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontUserDto>(<any>null);\n }\n\n /**\n * Registers a storefront user with the specified identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n register(storefrontId: number, tenantId?: number | null | undefined, body?: RegisterStorefrontUserInput | null | undefined): Observable<StorefrontUserDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/register?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRegister(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRegister(<any>r));\n } catch (e) {\n return <Observable<StorefrontUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processRegister(response: HttpResponseBase): Observable<StorefrontUserDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <StorefrontUserDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<StorefrontUserDto>(<any>null);\n }\n\n /**\n * Transfers all existing data for the anonymous storefront user to the selected regular storefront user account.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Operation parameters.\n * @return Success\n */\n mergeAnonymous(storefrontId: number, tenantId?: number | null | undefined, body?: MergeAnonymousUserDataInput | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/merge-anonymous?\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = JSON.stringify(body);\n\n let options_ : any = {\n body: content_,\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Content-Type\": \"application/json\",\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"post\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processMergeAnonymous(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processMergeAnonymous(<any>r));\n } catch (e) {\n return <Observable<void>><any>_observableThrow(e);\n }\n } else\n return <Observable<void>><any>_observableThrow(response_);\n }));\n }\n\n protected processMergeAnonymous(response: HttpResponseBase): Observable<void> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return _observableOf<void>(<any>null);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<void>(<any>null);\n }\n\n /**\n * Returns an API access token for the specified storefront user.\n * @param storefrontUserId Storefront user identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getToken(storefrontUserId: string, storefrontId: number, tenantId?: number | null | undefined): Observable<string> {\n let url_ = this.baseUrl + \"/api/storefront/v1/storefront-users/token?\";\n if (storefrontUserId === undefined || storefrontUserId === null)\n throw new Error(\"The parameter 'storefrontUserId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontUserId=\" + encodeURIComponent(\"\" + storefrontUserId) + \"&\";\n if (storefrontId === undefined || storefrontId === null)\n throw new Error(\"The parameter 'storefrontId' must be defined and cannot be null.\");\n else\n url_ += \"storefrontId=\" + encodeURIComponent(\"\" + storefrontId) + \"&\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"text/plain\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetToken(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetToken(<any>r));\n } catch (e) {\n return <Observable<string>><any>_observableThrow(e);\n }\n } else\n return <Observable<string>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetToken(response: HttpResponseBase): Observable<string> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <string>_responseText;\n return _observableOf(result200);\n }));\n } else if (status === 404) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result404: any = null;\n result404 = _responseText === \"\" ? null : <ProblemDetails>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Not Found\", status, _responseText, _headers, result404);\n }));\n } else if (status === 409) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result409: any = null;\n result409 = _responseText === \"\" ? null : <GeneralConflictDto>JSON.parse(_responseText, this.jsonParseReviver);\n return throwException(\"Conflict\", status, _responseText, _headers, result409);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<string>(<any>null);\n }\n}\n\nexport interface ITenantInfoApiClient {\n /**\n * Returns an information about the tenant applications.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getApplicationsInfo(tenantId?: number | null | undefined): Observable<TenantApplicationsInfoDto>;\n /**\n * Returns an information about the tenant.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getInfo(tenantId?: number | null | undefined): Observable<TenantInfoDto>;\n /**\n * Returns an information about the tenant measure units.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMeasureUnitsInfo(tenantId?: number | null | undefined): Observable<TenantMeasureUnitsInfoDto>;\n /**\n * Returns a list of tenant users.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getUsersInfo(tenantId?: number | null | undefined): Observable<TenantUserInfoDto[]>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TenantInfoApiClient extends ApiClientBase implements ITenantInfoApiClient {\n private http: HttpClient;\n private baseUrl: string;\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\n\n constructor(@Inject(ApiClientConfiguration) configuration: ApiClientConfiguration, @Inject(HttpClient) http: HttpClient, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {\n super(configuration);\n this.http = http;\n this.baseUrl = baseUrl !== undefined && baseUrl !== null ? baseUrl : this.getBaseUrl(\"\");\n }\n\n /**\n * Returns an information about the tenant applications.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getApplicationsInfo(tenantId?: number | null | undefined): Observable<TenantApplicationsInfoDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info/applications?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetApplicationsInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetApplicationsInfo(<any>r));\n } catch (e) {\n return <Observable<TenantApplicationsInfoDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantApplicationsInfoDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetApplicationsInfo(response: HttpResponseBase): Observable<TenantApplicationsInfoDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantApplicationsInfoDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantApplicationsInfoDto>(<any>null);\n }\n\n /**\n * Returns an information about the tenant.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getInfo(tenantId?: number | null | undefined): Observable<TenantInfoDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetInfo(<any>r));\n } catch (e) {\n return <Observable<TenantInfoDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantInfoDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetInfo(response: HttpResponseBase): Observable<TenantInfoDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantInfoDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantInfoDto>(<any>null);\n }\n\n /**\n * Returns an information about the tenant measure units.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMeasureUnitsInfo(tenantId?: number | null | undefined): Observable<TenantMeasureUnitsInfoDto> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info/measure-units?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetMeasureUnitsInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMeasureUnitsInfo(<any>r));\n } catch (e) {\n return <Observable<TenantMeasureUnitsInfoDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantMeasureUnitsInfoDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetMeasureUnitsInfo(response: HttpResponseBase): Observable<TenantMeasureUnitsInfoDto> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantMeasureUnitsInfoDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantMeasureUnitsInfoDto>(<any>null);\n }\n\n /**\n * Returns a list of tenant users.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getUsersInfo(tenantId?: number | null | undefined): Observable<TenantUserInfoDto[]> {\n let url_ = this.baseUrl + \"/api/storefront/v1/tenant-info/users?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n let options_ : any = {\n observe: \"response\",\n responseType: \"blob\",\n headers: new HttpHeaders({\n \"Accept\": \"application/json\"\n })\n };\n\n return _observableFrom(this.transformOptions(options_)).pipe(_observableMergeMap(transformedOptions_ => {\n return this.http.request(\"get\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processGetUsersInfo(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetUsersInfo(<any>r));\n } catch (e) {\n return <Observable<TenantUserInfoDto[]>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantUserInfoDto[]>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetUsersInfo(response: HttpResponseBase): Observable<TenantUserInfoDto[]> {\n const status = response.status;\n const responseBlob =\n response instanceof HttpResponse ? response.body :\n (<any>response).error instanceof Blob ? (<any>response).error : undefined;\n\n let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }}\n if (status === 200) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result200: any = null;\n result200 = _responseText === \"\" ? null : <TenantUserInfoDto[]>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result200);\n }));\n } else if (status === 401) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Unauthorized\", status, _responseText, _headers);\n }));\n } else if (status === 403) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"Forbidden\", status, _responseText, _headers);\n }));\n } else if (status !== 200 && status !== 204) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\n }));\n }\n return _observableOf<TenantUserInfoDto[]>(<any>null);\n }\n}\n\n/** Information about a service. */\nexport interface BuildInfoModel {\n /** Version number. */\n version?: string | null;\n /** Build date (UTC). */\n buildDate?: string | null;\n /** Build configuration (Debug | Release). */\n configuration?: string | null;\n /** Service name. */\n appName?: string | null;\n}\n\n/** Dto class, containing information about processing pipeline details. */\nexport interface ProcessingPipelineDto {\n /** Processing pipeline identifier. */\n id?: number;\n /** Processing pipeline name. */\n name?: string | null;\n /** Processing pipeline raw (uncompiled) content. */\n rawContent?: string | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProcessingPipelineDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProcessingPipelineDto[] | null;\n}\n\nexport interface ProblemDetails {\n type?: string | null;\n title?: string | null;\n status?: number | null;\n detail?: string | null;\n instance?: string | null;\n}\n\n/** DTO class, containing information about a product resource of type image. */\nexport interface ImageInfo {\n /** Product resource identifier. */\n resourceId?: string | null;\n /** Product Resource URL. */\n url?: string | null;\n}\n\n/** Available option types. */\nexport enum OptionType {\n Simple = \"Simple\",\n Size = \"Size\",\n PageCount = \"PageCount\",\n}\n\n/** DTO class, containing information about a product filter option. */\nexport interface ProductFilterOptionDto {\n /** Product option identifier. */\n productOptionId?: number | null;\n /** Product option value identifier. */\n productOptionValueId?: number | null;\n /** Product option type ('Simple' / 'Size' / 'PageCount'). */\n productOptionType?: OptionType;\n /** Product option traits. */\n productOptionTraits?: string[] | null;\n /** Product option title. */\n productOptionTitle?: string | null;\n /** Product option value title. */\n productOptionValueTitle?: string | null;\n /** Indicates if option value should be used as a default value for corresponding option. */\n isDefault?: boolean;\n}\n\n/** DTO class, containing information about a product link. */\nexport interface ProductLinkDto {\n /** Product link identifier. */\n id?: number;\n /** Product link version identifier. */\n productLinkVersionId?: number;\n /** Linked product identifier. */\n productId?: number;\n /** Linked product version identifier. */\n productVersionId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product link name. */\n name?: string | null;\n /** Product link description. */\n description?: string | null;\n /** Product filter identifier. */\n productFilterId?: number;\n /** Product link image info. */\n image?: ImageInfo | null;\n /** Product link creation time. */\n created?: string;\n /** Product link modification time. */\n lastModified?: string | null;\n /** Product filter options. */\n productFilterOptions?: ProductFilterOptionDto[] | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number | null;\n /** Processing pipeline identifier. */\n processingPipelineId?: number | null;\n /** Default storefront identifier. */\n storefrontId?: number | null;\n /** Default storefront product identifier. */\n storefrontProductId?: string | null;\n /** Default storefront product name. */\n storefrontProductName?: string | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductLinkDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductLinkDto[] | null;\n}\n\n/** Conflict types. */\nexport enum ConflictType {\n NameConflict = \"NameConflict\",\n FolderOverwriteConflict = \"FolderOverwriteConflict\",\n IdConflict = \"IdConflict\",\n GeneralConflict = \"GeneralConflict\",\n}\n\n/** Information about operation conflict. */\nexport interface GeneralConflictDto {\n /** Problem description. */\n description?: string | null;\n /** Coflict type. */\n type?: ConflictType;\n}\n\n/** Available appearance types. */\nexport enum AppearanceDataType {\n Radio = \"Radio\",\n Dropdown = \"Dropdown\",\n Chips = \"Chips\",\n ColorGrid = \"ColorGrid\",\n ColorList = \"ColorList\",\n ImageGrid = \"ImageGrid\",\n ImageList = \"ImageList\",\n}\n\n/** DTO class, containing information about a product option appearance item. */\nexport interface AppearanceDataItemDto {\n /** Appearance item key. */\n key?: string | null;\n /** Appearance item value. */\n value?: string | null;\n}\n\n/** DTO class, containing information about a product option appearance. */\nexport interface AppearanceDataDto {\n /** Appearance type. */\n type?: AppearanceDataType;\n /** Appearance items. */\n items?: AppearanceDataItemDto[] | null;\n}\n\n/** Option values for product summary model. */\nexport interface ProductSummaryOptionValueDto {\n /** Option value identifier. */\n id?: number;\n /** Option value identifying tag. */\n tag?: string | null;\n /** Product option value UID. */\n uid?: string | null;\n /** Option value title. */\n title?: string | null;\n /** Option value value. */\n value?: string | null;\n /** Indicates if option value is used as a default value. */\n isDefault?: boolean;\n /** Option value description. */\n description?: string | null;\n /** Option value colors. */\n colors?: string[] | null;\n /** Option value image. */\n image?: ImageInfo | null;\n}\n\n/** Options for product summary model. */\nexport interface ProductSummaryOptionDto {\n /** Option identifier. */\n id?: number;\n /** Option identifying tag. */\n tag?: string | null;\n /** Product option UID. */\n uid?: string | null;\n /** Option title. */\n title?: string | null;\n /** Option description. */\n description?: string | null;\n /** Option tooltip. */\n tooltip?: string | null;\n /** Option sort index. */\n sortIndex?: number;\n /** Option traits. */\n traits?: string[] | null;\n /** Indicates if option is used to bind designs to product. */\n useForDesignBinding?: boolean;\n /** Indicates if option is used to bind mockups to product. */\n useForMockupBinding?: boolean;\n /** Indicates if option is used to bind documents to product. */\n useForDocumentBinding?: boolean;\n /** Option appearance. */\n appearanceData?: AppearanceDataDto | null;\n /** Option image info. */\n image?: ImageInfo | null;\n /** Option values. */\n productOptionValues?: ProductSummaryOptionValueDto[] | null;\n}\n\n/** General information about product that editors need to begin personalization process. */\nexport interface ProductSummaryDto {\n /** Product identifier. */\n productId?: number;\n /** Product version identifier. If product variant is not specified, active version identifier should be used. */\n productVersionId?: number;\n /** Product link identifier. If product link is not specified, should be null. */\n productLinkId?: number | null;\n /** Product link version identifier. If product link is not specified, should be null. */\n productLinkVersionId?: number | null;\n /** Product filter identifier for product link. If product link is not specified, should be null. */\n productFilterId?: number | null;\n /** Product variant identifier. If product variant is not specified, should be null. */\n productVariantId?: number | null;\n /** Product variant SKU. If product variant is not specified, should be null. */\n productVariantSku?: string | null;\n /** Product variant price. If product variant is not specified, should be null. */\n productVariantPrice?: number | null;\n /** Product variant availability. If product variant is not specified, should be null. */\n isProductVariantAvailable?: boolean | null;\n /** Product name. If product link is specified, name of link will be used. */\n name?: string | null;\n /** Product description. If product link is specified, description of link will be used. */\n description?: string | null;\n /** Product image info. */\n image?: ImageInfo | null;\n /** Tenant identifier. */\n tenantId?: number;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number | null;\n /** Processing pipeline identifier. */\n processingPipelineId?: number | null;\n /** Product tags. */\n tags?: string[] | null;\n /** Product custom fields. */\n customFields?: { [key: string]: string; } | null;\n /** Product options summary. \nIf product link or variant is specified, product options will be filtered by link or variant options. */\n options?: ProductSummaryOptionDto[] | null;\n}\n\n/** Type of editor that should be configured by workflow. */\nexport enum WorkflowType {\n UIFramework = \"UIFramework\",\n SimpleEditor = \"SimpleEditor\",\n DesignEditor = \"DesignEditor\",\n WorkflowElements = \"WorkflowElements\",\n}\n\n/** Personalization workflow description DTO. */\nexport interface PersonalizationWorkflowDto {\n /** Workflow identifier. */\n id?: number;\n /** Processed workflow JSON. */\n content?: string | null;\n /** Workflow type. */\n workflowType?: WorkflowType;\n}\n\n/** Available product reference target types. */\nexport enum ProductReferenceType {\n ProductSpecification = \"ProductSpecification\",\n Product = \"Product\",\n ProductLink = \"ProductLink\",\n}\n\n/** DTO class, containing information about storefront product reference. */\nexport interface ProductReferenceDto {\n /** Product reference is an external reference to Customer's Canvas product, e.g online store product identifier. */\n productReference?: string | null;\n /** Product reference target type. */\n productReferenceType?: ProductReferenceType;\n /** Product reference name, e.g. online store product name. */\n productReferenceName?: string | null;\n /** Customer's Canvas product specification identifier. */\n productSpecificationId?: number;\n /** Customer's Canvas product identifier. */\n productId?: number;\n /** Customer's Canvas product version identifier. */\n productVersionId?: number;\n /** Customer's Canvas product link identifier. */\n productLinkId?: number;\n /** Storefront identifier. */\n storefrontId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront product reference creation date and time. */\n created?: string;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductReferenceDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductReferenceDto[] | null;\n}\n\n/** Dto class, containing information about product attribute. */\nexport interface ProductAttributeDto {\n /** Product attribute name. */\n name?: string | null;\n /** Product attribute type. */\n type?: string | null;\n /** Product attribute value. */\n value?: any | null;\n}\n\n/** Dto class, containing information about product specification. */\nexport interface ProductSpecificationDto {\n /** Product specification identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product specification name. */\n name?: string | null;\n /** Product specification description. */\n description?: string | null;\n /** List of product attributes. */\n productAttributes?: ProductAttributeDto[] | null;\n /** Product specification creation time. */\n created?: string;\n /** Product specification modification time. */\n lastModified?: string | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number;\n /** Processing pipeline identifier. */\n processingPipelineId?: number;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductSpecificationDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductSpecificationDto[] | null;\n}\n\n/** DTO class, containing information about a product. */\nexport interface ProductDto {\n /** Product identifier. */\n id?: number;\n /** Product version identifier. */\n productVersionId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product name. */\n name?: string | null;\n /** Product description. */\n description?: string | null;\n /** Product image info. */\n image?: ImageInfo | null;\n /** Product creation time. */\n created?: string;\n /** Product modification time. */\n lastModified?: string | null;\n /** Product tags. */\n tags?: string[] | null;\n /** Product custom fields. */\n customFields?: { [key: string]: string; } | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number;\n /** Processing pipeline identifier. */\n processingPipelineId?: number;\n /** Default storefront identifier. */\n storefrontId?: number | null;\n /** Default storefront product identifier. */\n storefrontProductId?: string | null;\n /** Default storefront product name. */\n storefrontProductName?: string | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductDto[] | null;\n}\n\n/** Dto class, containing information about storefront product cost details. */\nexport interface ProductCostDetailsDto {\n /** Product reference is an external reference to Customer's Canvas product specification, e.g online store product identifier. */\n productReference?: string | null;\n /** Product SKU. */\n productSku?: string | null;\n /** Product quantity. */\n productQuantity?: number;\n /** Product price. */\n productPrice?: number;\n /** Product cost. */\n productCost?: number;\n /** Product discount. */\n productDiscount?: number;\n /** Currency code. */\n currencyCode?: string | null;\n /** Tenant identifier. */\n tenantId?: number;\n}\n\n/** Option value description for 'Simple' option type. */\nexport interface SimpleOptionValue {\n /** String Value. */\n value?: string | null;\n}\n\n/** DTO class, containing information about a product option value. */\nexport interface ProductOptionValueDto {\n /** Product option value identifier. */\n id?: number;\n /** Product option value title. */\n title?: string | null;\n /** Product option value sort index. */\n sortIndex?: number;\n /** Indicates if product option value is used as a default value. */\n isDefault?: boolean;\n /** Product option value identifying tag. */\n tag?: string | null;\n /** Product option value UID. */\n uid?: string | null;\n /** Product option value description for 'Simple' option type. */\n simpleOptionValue?: SimpleOptionValue | null;\n /** Product option value description. */\n description?: string | null;\n /** Product option value colors. */\n colors?: string[] | null;\n /** Product option value image. */\n image?: ImageInfo | null;\n}\n\n/** DTO class, containing information about a product option. */\nexport interface ProductOptionDto {\n /** Product option identifier. */\n id?: number;\n /** Product version identifier */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Option type ('Simple' / 'Size' / 'PageCount'). */\n type?: OptionType;\n /** Option traits. */\n traits?: string[] | null;\n /** Product option title. */\n title?: string | null;\n /** Product option sort index. */\n sortIndex?: number;\n /** Product option identifying tag. */\n tag?: string | null;\n /** Product option UID. */\n uid?: string | null;\n /** Specifies if the option is used for design binding. */\n useForDesignBinding?: boolean;\n /** Specifies if the option is used for mockup binding. */\n useForMockupBinding?: boolean;\n /** Specifies if the option is used for document binding. */\n useForDocumentBinding?: boolean;\n /** Product option description. */\n description?: string | null;\n /** Product option tooltip. */\n tooltip?: string | null;\n /** Product option appearance. */\n appearanceData?: AppearanceDataDto | null;\n /** Product option image info. */\n image?: ImageInfo | null;\n /** A list of product option values. */\n productOptionValues?: ProductOptionValueDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductOptionDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductOptionDto[] | null;\n}\n\n/** DTO class, containing information about a product variant option. */\nexport interface ProductVariantOptionDto {\n /** Product option identifier. */\n productOptionId?: number | null;\n /** Product option value identifier. */\n productOptionValueId?: number | null;\n /** Product option type ('Simple' / 'Size' / 'PageCount'). */\n productOptionType?: OptionType;\n /** Product option traits. */\n productOptionTraits?: string[] | null;\n /** Product option title. */\n productOptionTitle?: string | null;\n /** Product option value title. */\n productOptionValueTitle?: string | null;\n /** Product option value description for 'Simple' option type. */\n simpleOptionValue?: SimpleOptionValue | null;\n}\n\n/** DTO class, containing information about a product variant. */\nexport interface ProductVariantDto {\n /** Product variant identifier. */\n id?: number;\n /** Product variant unique identifier. */\n uid?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product variant available. */\n isAvailable?: boolean;\n /** Product variant price. */\n price?: number | null;\n /** Product variant sort index. */\n sortIndex?: number;\n /** Product variant identifier (usually SKU) in storefront / online store. */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantDto[] | null;\n}\n\n/** Available product variant resource types. */\nexport enum ProductVariantResourceType {\n Preview = \"Preview\",\n EditorModel = \"EditorModel\",\n Custom = \"Custom\",\n}\n\n/** Product variant resource description for 'Preview' resource type. */\nexport interface ProductVariantResourcePreview {\n /** Preview with in pixels. */\n width?: number | null;\n /** Preview heigth in pixels. */\n height?: number | null;\n /** Mockup which is used to create preview. */\n mockupId?: string | null;\n /** Design surface index which is used to create preivew. */\n surfaceIndex?: number | null;\n}\n\n/** DTO class, containing information about a product variant resource. */\nexport interface ProductVariantResourceDto {\n /** Resource identifier. */\n resourceId?: string | null;\n /** Resource name. */\n name?: string | null;\n /** Resource url. */\n url?: string | null;\n /** Resource type. */\n type?: ProductVariantResourceType;\n /** Product variant resource description for 'Preview' resource type. */\n resourcePreview?: ProductVariantResourcePreview | null;\n}\n\n/** DTO class, containing information about a product variant design. */\nexport interface ProductVariantDesignDto {\n /** Product variant identifier. */\n productVariantId?: number;\n /** Product variant unique identifier. */\n productVariantUID?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product variant available. */\n isAvailable?: boolean;\n /** Product variant price. */\n price?: number | null;\n /** Product variant sort index. */\n sortIndex?: number;\n /** Product variant identifier (usually SKU) in storefront / online store. */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** Design identifier. */\n designId?: string | null;\n /** Design name. */\n designName?: string | null;\n /** Design grouping tag. */\n designGroup?: string | null;\n /** Design data schema tag. Indicates if design has data schema. */\n designHasDataSchema?: boolean;\n /** Design toggle set tag. Indicated if design has toggle set. */\n designHasToggleSet?: boolean;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n /** A list of product variant resources. */\n productVariantResources?: ProductVariantResourceDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantDesignDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantDesignDto[] | null;\n}\n\n/** Available mockup types. */\nexport enum ProductVariantMockupType {\n Thumbnail = \"Thumbnail\",\n Editor = \"Editor\",\n Preview = \"Preview\",\n}\n\n/** Available surface usage types. */\nexport enum SurfaceUsageType {\n Individual = \"Individual\",\n Custom = \"Custom\",\n All = \"All\",\n}\n\n/** Dto class, containing information about a product variant mockup. */\nexport interface ProductVariantMockupDto {\n /** Product variant identifier. */\n productVariantId?: number;\n /** Product variant unique identifier. */\n productVariantUID?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number | null;\n /** Product variant identifier in online store (usually SKU). */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** Mockup identifier. */\n mockupId?: string | null;\n /** Mockup name. */\n mockupName?: string | null;\n /** Mockup type. */\n mockupType?: ProductVariantMockupType;\n /** Surface index indicates a surface of a design to which mockup should be applied. */\n surfaceIndex?: number | null;\n /** Surface usage type defines a scheme for applying mockup to design surfaces. */\n surfaceUsageType?: SurfaceUsageType;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantMockupDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantMockupDto[] | null;\n}\n\n/** DTO class, containing information about a product variant document. */\nexport interface ProductVariantDocumentDto {\n /** Product variant identifier. */\n productVariantId?: number;\n /** Product variant unique identifier. */\n productVariantUID?: string | null;\n /** Product version identifier. */\n productVersionId?: number;\n /** Product identifier. */\n productId?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Product variant available. */\n isAvailable?: boolean;\n /** Product variant price. */\n price?: number | null;\n /** Product variant sort index. */\n sortIndex?: number;\n /** Product variant identifier (usually SKU) in storefront / online store. */\n storefrontProductVariantId?: string | null;\n /** Product variant SKU. */\n sku?: string | null;\n /** Document identifier. */\n documentId?: string | null;\n /** Document name. */\n documentName?: string | null;\n /** Document grouping tag. */\n documentGroup?: string | null;\n /** A list of product variant options. */\n productVariantOptions?: ProductVariantOptionDto[] | null;\n /** A list of product variant resources. */\n productVariantResources?: ProductVariantResourceDto[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProductVariantDocumentDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProductVariantDocumentDto[] | null;\n}\n\n/** Defines all available date period filter values for queries. */\nexport enum DatePeriod {\n All = \"All\",\n Today = \"Today\",\n Last7Days = \"Last7Days\",\n Last30Days = \"Last30Days\",\n}\n\n/** Available project processing statuses. */\nexport enum ProjectProcessingStatus {\n Pending = \"Pending\",\n InProgress = \"InProgress\",\n Completed = \"Completed\",\n Failed = \"Failed\",\n}\n\n/** Available product resource types */\nexport enum ProjectItemResourceType {\n General = \"General\",\n Preview = \"Preview\",\n Hires = \"Hires\",\n}\n\n/** Dto class, containing information about a project item resource. */\nexport interface ProjectItemResourceDto {\n /** Resource ID. */\n resourceId?: string | null;\n /** Resource name. */\n name?: string | null;\n /** Resource type. */\n type?: ProjectItemResourceType;\n}\n\n/** Dto class, containing information about a project item. */\nexport interface ProjectItemDto {\n /** Item identifier. */\n id?: number;\n /** Item name. */\n name?: string | null;\n /** Item quantity information. */\n quantity?: number | null;\n /** Order item identifier from storefront order. */\n orderLineItemId?: string | null;\n /** Order item index from storefront order. */\n orderLineItemIndex?: number | null;\n /** Storefront product reference (i.e external reference to Customer's Canvas product specification). */\n productReference?: string | null;\n /** Item information. */\n fields?: { [key: string]: any; } | null;\n /** Additional item information. */\n hidden?: any | null;\n /** A list of design identifiers associated to the item. */\n designIds?: string[] | null;\n /** SKU. */\n sku?: string | null;\n /** External resources descriptions. */\n resources?: ProjectItemResourceDto[] | null;\n}\n\n/** Dto class, containing information about a project. */\nexport interface ProjectDto {\n /** Project identifier. */\n id?: number;\n /** Storefront product identifier. */\n productReference?: string | null;\n /** Storefront identifier. */\n storefrontId?: number;\n /** Project tenant indentifier. */\n tenantId?: number;\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Order item identifier from storefront order. */\n orderLineItemId?: string | null;\n /** Order item index from storefront order. */\n orderLineItemIndex?: number | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n /** Project name. */\n name?: string | null;\n /** Project owner identifier. */\n ownerId?: string | null;\n /** List of project items. */\n items?: ProjectItemDto[] | null;\n /** Project status code. */\n status?: number;\n /** Project creation time. */\n created?: string;\n /** Project modification time. */\n lastModified?: string | null;\n /** Description of the project. */\n description?: string | null;\n /** Project processing status. */\n processingStatus?: ProjectProcessingStatus;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProjectDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProjectDto[] | null;\n}\n\n/** Dto class, containing create operation parameters for a project item resource. */\nexport interface ProjectItemResourceParametersDto {\n /** Resource URL. */\n url?: string | null;\n /** Resource name. */\n name?: string | null;\n /** Resource type. */\n type?: ProjectItemResourceType;\n /** Original resource identifier. */\n resourceId?: string | null;\n}\n\n/** Dto class, containing create operation parameters for a project item. */\nexport interface ProjectItemParametersDto {\n /** Item name. */\n name?: string | null;\n /** Item quantity information. */\n quantity?: number | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** Storefront product identifier. */\n productReference?: string | null;\n /** Item information. */\n fields?: { [key: string]: any; } | null;\n /** Additional item information. */\n hidden?: any | null;\n /** A list of design identifiers associated to the item. */\n designIds?: string[] | null;\n /** SKU. */\n sku?: string | null;\n /** External resources descriptions. */\n resources?: ProjectItemResourceParametersDto[] | null;\n}\n\n/** Dto class, containing create operation parameters for single-item project entity. */\nexport interface CreateSingleItemProjectDto {\n /** Product reference (i.e external reference to Customer's Canvas product specification - main subject of this project). */\n productReference?: string | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** List of project items. */\n items?: ProjectItemParametersDto[] | null;\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n /** Project name. */\n name?: string | null;\n /** Project owner identifier. */\n ownerId: string;\n /** List of project items. */\n item?: ProjectItemParametersDto | null;\n /** Description of the project. */\n description?: string | null;\n}\n\n/** Dto class, containing create operation parameters for multi-item project entity. */\nexport interface CreateMultiItemProjectDto {\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n /** Project name. */\n name?: string | null;\n /** Project owner identifier. */\n ownerId: string;\n /** List of project items. */\n items?: ProjectItemParametersDto[] | null;\n /** Description of the project. */\n description?: string | null;\n}\n\n/** Dto class, containing ecommerce order description. */\nexport interface OrderDetailsDto {\n /** Order identifier in ecommerce system. */\n orderId?: string | null;\n /** Order url in ecommerce system. */\n orderUrl?: string | null;\n /** Order number in ecommerce system. */\n orderNumber?: number | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** Customer identifier in ecommerce system. */\n customerId?: string | null;\n /** Customer name in ecommerce system. */\n customerName?: string | null;\n}\n\nexport enum RenderHiResScenarioOutputFormat {\n Pdf = \"Pdf\",\n Jpeg = \"Jpeg\",\n Png = \"Png\",\n Tiff = \"Tiff\",\n Bmp = \"Bmp\",\n}\n\nexport enum RenderHiResScenarioOutputColorSpace {\n Rgb = \"Rgb\",\n Grayscale = \"Grayscale\",\n Cmyk = \"Cmyk\",\n}\n\nexport enum RenderHiResScenarioOutputFlipMode {\n None = \"None\",\n Horizontal = \"Horizontal\",\n Vertical = \"Vertical\",\n Both = \"Both\",\n}\n\nexport enum RenderHiResScenarioOutputRotateMode {\n None = \"None\",\n Rotate90 = \"Rotate90\",\n Rotate180 = \"Rotate180\",\n Rotate270 = \"Rotate270\",\n Auto = \"Auto\",\n}\n\n/** Dto class, containing 'RenderHiRes' scenario parameters. */\nexport interface RenderHiResScenarioDto {\n /** Private design identifier. */\n designId: string;\n /** Output file name (without extension). */\n name?: string | null;\n /** Output file DPI. */\n dpi?: number;\n /** Output file format. */\n format?: RenderHiResScenarioOutputFormat | null;\n /** Output file color space. */\n colorSpace?: RenderHiResScenarioOutputColorSpace | null;\n /** Output file flip mode. */\n flipMode?: RenderHiResScenarioOutputFlipMode | null;\n /** Output file rotate mode. */\n rotateMode?: RenderHiResScenarioOutputRotateMode | null;\n /** Output file access mode. */\n anonymousAccess?: boolean | null;\n}\n\n/** Dto class, containing 'create' operation parameters for project entity. */\nexport interface CreateProjectByRenderHiResScenarioDto {\n /** Project owner identifier. */\n ownerId: string;\n /** Project name. */\n name?: string | null;\n /** Description of the project. */\n description?: string | null;\n /** Ecommerce system order description. */\n orderDetails?: OrderDetailsDto | null;\n /** Line item index from ecommerce system order. */\n orderLineItemIndex?: number | null;\n /** Line Item identifier from ecommerce system order. */\n orderLineItemId?: string | null;\n /** List of project items. */\n scenario: RenderHiResScenarioDto;\n}\n\nexport interface ItemPipelineDto {\n itemName?: string | null;\n pipelineId?: number;\n}\n\n/** Dto class, containing 'Specific Pipeline' scenario parameters. */\nexport interface SpecificPipelineScenarioDto {\n /** An existing processing pipeline identifier. */\n pipelineId?: number | null;\n /** An existing processing pipeline identifier for project post-processing. */\n postProcessingPipelineId?: number | null;\n /** List of objects describing connections between project items and processing pipelines. */\n itemPipelines?: ItemPipelineDto[] | null;\n}\n\n/** Dto class, containing 'create' operation parameters for a new project that should be created by executing 'Specific Pipeline' scenario. */\nexport interface CreateProjectBySpecificPipelineScenarioDto {\n /** Project owner identifier. */\n ownerId: string;\n /** Project name. */\n name?: string | null;\n /** Description of the project. */\n description?: string | null;\n /** Ecommerce system order description. */\n orderDetails?: OrderDetailsDto | null;\n /** List of project items. */\n items?: ProjectItemParametersDto[] | null;\n /** 'Specific Pipeline' scenario params. For more information check BackOffice.Web.PublicApi.ApiStorefront.Models.SpecificPipelineScenarioDto. */\n scenario: SpecificPipelineScenarioDto;\n}\n\n/** Project transition dto class. */\nexport interface ProjectTransitionDto {\n /** Transition identifying name. */\n name?: string | null;\n /** Transition display name. */\n displayName?: string | null;\n /** Project status code from which transition to the result status code can be done. */\n startStatus?: number;\n /** Transition result project status code. */\n resultStatus?: number;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProjectTransitionDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProjectTransitionDto[] | null;\n}\n\n/** Dto class, containing the information about project status. */\nexport interface ProjectStatusDto {\n /** Status code. */\n code?: number;\n /** Status display name. */\n displayName?: string | null;\n}\n\n/** Dto class, containing information about the project transition conflict. */\nexport interface ProjectTransitionConflictDto {\n /** A list of all available status transitions for the project. */\n availableTransitions?: ProjectTransitionDto[] | null;\n /** Problem description. */\n description?: string | null;\n /** Coflict type. */\n type?: ConflictType;\n}\n\n/** Dto class, containing parameters for the 'projects batch delete' operation. */\nexport interface BatchDeleteProjectsInput {\n /** Identifiers of projects that should be deleted. */\n ids?: number[] | null;\n}\n\n/** Paged list of items. */\nexport interface PagedOfProjectStatusDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: ProjectStatusDto[] | null;\n}\n\n/** Dto class, containing description of a project output file. */\nexport interface ProjectOutputFileDetailsDto {\n /** Project item identifier. */\n projectItemId?: number | null;\n /** Order item identifier from storefront. */\n orderLineItemId?: string | null;\n /** Order item index from storefront. */\n orderLineItemIndex?: number | null;\n /** Project output file URL. */\n url?: string | null;\n /** Project output file name. */\n name?: string | null;\n /** Project output file format. */\n format?: string | null;\n /** Output artifact file identifier. */\n artifactId?: string | null;\n /** Project output file access strategy. */\n anonymousAccess?: boolean;\n /** Project output file size in bytes. */\n size?: number | null;\n}\n\n/** Dto class, containing description of project processing results. */\nexport interface ProjectProcessingResultsDto {\n /** Project processing status. */\n status?: ProjectProcessingStatus;\n /** Project status description. */\n statusDescription?: string | null;\n /** Collection of project output file descriptions. */\n outputFileDetails?: ProjectOutputFileDetailsDto[] | null;\n}\n\n/** Available value types for order data item. */\nexport enum OrderDataItemValueType {\n PlainText = \"PlainText\",\n CommaSeparatedList = \"CommaSeparatedList\",\n SerializedJson = \"SerializedJson\",\n}\n\n/** Dto class, containing information about project's order data item. */\nexport interface OrderDataItemDto {\n /** Order data item key (eventuall order metadata field name). */\n key?: string | null;\n /** Order data item value. */\n value?: string | null;\n /** Order data item type. */\n type?: OrderDataItemValueType;\n}\n\n/** Storefront types. */\nexport enum StorefrontType {\n Custom = \"Custom\",\n ShopifyLegacy = \"ShopifyLegacy\",\n DocketManager = \"DocketManager\",\n CustomSaml = \"CustomSaml\",\n NopCommerce = \"NopCommerce\",\n WooCommerce = \"WooCommerce\",\n Magento = \"Magento\",\n BigCommerce = \"BigCommerce\",\n Shopify = \"Shopify\",\n ShopifyCustom = \"ShopifyCustom\",\n}\n\n/** Dto class, containing information about a storefront. */\nexport interface StorefrontDto {\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n}\n\n/** Paged list of items. */\nexport interface PagedOfStorefrontDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: StorefrontDto[] | null;\n}\n\n/** DTO class, containing infromation about a storefront user. */\nexport interface StorefrontUserDto {\n /** Storefront user identifier. */\n userId?: string | null;\n /** Storefront tenant indentifier. */\n tenantId?: number;\n /** Storefront identifier. */\n storefrontId?: number | null;\n /** Indicates if the user is tracked as an anonymous. */\n isAnonymous?: boolean;\n}\n\n/** Paged list of items. */\nexport interface PagedOfStorefrontUserDto {\n /** Items count. */\n total?: number;\n /** Items list. */\n items?: StorefrontUserDto[] | null;\n}\n\n/** Dto class, containing create operation parameters for storefront user. */\nexport interface CreateStorefrontUserDto {\n /** Storefront user identifier. */\n storefrontUserId?: string | null;\n /** Indicates if the user is tracked as an anonymous. */\n isAnonymous?: boolean;\n}\n\nexport interface RegisterStorefrontUserInput {\n /** Storefront user identifier. */\n storefrontUserId?: string | null;\n}\n\n/** Dto class, containing parameters for merge anonymous user operation. */\nexport interface MergeAnonymousUserDataInput {\n /** Anonymous storefront user identifier. */\n anonymousStorefrontUserId?: string | null;\n /** Regular storefront user identifier. */\n regularStorefrontUserId?: string | null;\n}\n\n/** Dto class, containing information about tenant applications. */\nexport interface TenantApplicationsInfoDto {\n /** An url to the 'Design Editor' tenant application. */\n designEditorUrl?: string | null;\n /** An url to the 'UI Framework'. */\n uiFrameworkUrl?: string | null;\n /** An url to the 'Simple editor'. */\n simpleEditorUrl?: string | null;\n /** An url to the 'Workflow Elements' web components library. */\n workflowElementsUrl?: string | null;\n /** An url to the 'Template editor'. */\n templateEditorUrl?: string | null;\n /** An url to the 'Preflight' tenant application. */\n preflightUrl?: string | null;\n /** An url to the 'Dynamic Image' tenant application. */\n dynamicImageUrl?: string | null;\n /** Tenant identifier */\n tenantId?: number;\n /** An ApiKey for the 'Design Editor' tenant application. */\n designEditorApiKey?: string | null;\n /** An ApiKey for the 'Preflight' tenant application. */\n preflightApiKey?: string | null;\n /** An ApiKey for the 'Dynamic Image' tenant application. */\n dynamicImageApiKey?: string | null;\n}\n\n/** Dto class, containing general information about tenant. */\nexport interface TenantInfoDto {\n /** Tenant identifier. */\n tenantId?: number;\n /** Tenancy name. */\n tenancyName?: string | null;\n /** Tenant creation time. */\n tenantCreationTime?: string;\n /** Tenant activeness status. */\n isActive?: boolean;\n}\n\n/** Dto class, containing information about size measure unit. */\nexport interface SizeMeasureUnitDto {\n /** Measure unit full name. */\n name?: string | null;\n /** Measure unit short name. */\n shortName?: string | null;\n /** Measure unit ratio. */\n ratio?: number;\n /** Indicates if measure unit should be used by default. */\n isDefault?: boolean;\n}\n\n/** Dto class, containing information about tenant measure units. */\nexport interface TenantMeasureUnitsInfoDto {\n /** A list of all 'size' measure units of the tenant. */\n sizeMeasureUntis?: SizeMeasureUnitDto[] | null;\n}\n\nexport interface TenantUserInfoDto {\n /** Tenant identifier. */\n tenantId?: number;\n /** User identifier. */\n userId?: number;\n /** User name. */\n userName?: string | null;\n /** User surname. */\n userSurname?: string | null;\n /** User status. */\n isActive?: boolean;\n}\n\nexport interface FileResponse {\n data: Blob;\n status: number;\n fileName?: string;\n headers?: { [name: string]: any };\n}\n\nexport class ApiException extends Error {\n message: string;\n status: number;\n response: string;\n headers: { [key: string]: any; };\n result: any;\n\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\n super();\n\n this.message = message;\n this.status = status;\n this.response = response;\n this.headers = headers;\n this.result = result;\n }\n\n protected isApiException = true;\n\n static isApiException(obj: any): obj is ApiException {\n return obj.isApiException === true;\n }\n}\n\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): Observable<any> {\n if (result !== null && result !== undefined)\n return _observableThrow(result);\n else\n return _observableThrow(new ApiException(message, status, response, headers, null));\n}\n\nfunction blobToText(blob: any): Observable<string> {\n return new Observable<string>((observer: any) => {\n if (!blob) {\n observer.next(\"\");\n observer.complete();\n } else {\n let reader = new FileReader();\n reader.onload = event => {\n observer.next((<any>event.target).result);\n observer.complete();\n };\n reader.readAsText(blob);\n }\n });\n}","import {ModuleWithProviders, NgModule} from '@angular/core';\nimport * as StorefrontApiClient from './storefront-api-client';\n\n// @dynamic\nexport function CreateApiClientConfiguration(token: string, apiUrl: string, apiKey: string = 'ApiKey'): StorefrontApiClient.ApiClientConfiguration {\n const apiConf = new StorefrontApiClient.ApiClientConfiguration();\n apiConf.apiKey = apiKey;\n apiConf.apiUrl = apiUrl;\n apiConf.setAuthorizationToken(token);\n return apiConf;\n}\n\n@NgModule({\n declarations: [],\n imports: [\n ],\n exports: []\n})\nexport class StorefrontModule {\n static forRoot(token: string, apiUrl: string, apiKey: string = 'ApiKey'): ModuleWithProviders<StorefrontModule> {\n return {\n ngModule: StorefrontModule,\n providers: [\n {\n provide: StorefrontApiClient.API_BASE_URL,\n useValue: apiUrl\n },\n {\n provide: StorefrontApiClient.ApiClientConfiguration,\n useFactory: CreateApiClientConfiguration.bind(this, token , apiUrl, apiKey)\n },\n ]\n };\n }\n}\n"]}
|