@aurigma/ng-backoffice-api-client 2.60.2 → 2.63.14
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-backoffice-api-client.metadata.json +1 -1
- package/bundles/aurigma-ng-backoffice-api-client.umd.js +562 -159
- package/bundles/aurigma-ng-backoffice-api-client.umd.js.map +1 -1
- package/bundles/aurigma-ng-backoffice-api-client.umd.min.js +1 -1
- package/bundles/aurigma-ng-backoffice-api-client.umd.min.js.map +1 -1
- package/esm2015/aurigma-ng-backoffice-api-client.js +1 -1
- package/esm2015/lib/backoffice-api-client.js +352 -1
- package/esm2015/lib/backoffice.module.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/fesm2015/aurigma-ng-backoffice-api-client.js +351 -0
- package/fesm2015/aurigma-ng-backoffice-api-client.js.map +1 -1
- package/lib/backoffice-api-client.d.ts +121 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aurigma-ng-backoffice-api-client.js","sources":["../../../projects/client/src/lib/backoffice-api-client.ts","../../../projects/client/src/lib/backoffice.module.ts","../../../projects/client/src/public-api.ts","../../../projects/client/src/aurigma-ng-backoffice-api-client.ts"],"sourcesContent":["/* 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 = 'ApiKey';\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 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 assembly build info.\n * @return Success\n */\n headInfo(): Observable<void>;\n /**\n * Returns 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 assembly build info.\n * @return Success\n */\n headInfo(): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/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 assembly build info.\n * @return Success\n */\n getInfo(): Observable<BuildInfoModel> {\n let url_ = this.baseUrl + \"/api/backoffice/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 IProductReferencesManagementApiClient {\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 productBundleId (optional) Customer's Canvas product bundle 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, productBundleId?: number | 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 * Creates a new storefront product reference.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProductReferenceDto | null | undefined): Observable<ProductReferenceDto>;\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 * Deletes the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product specification, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductReferencesManagementApiClient extends ApiClientBase implements IProductReferencesManagementApiClient {\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 productBundleId (optional) Customer's Canvas product bundle 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, productBundleId?: number | 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/backoffice/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 (productBundleId === null)\n throw new Error(\"The parameter 'productBundleId' cannot be null.\");\n else if (productBundleId !== undefined)\n url_ += \"productBundleId=\" + encodeURIComponent(\"\" + productBundleId) + \"&\";\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 * Creates a new storefront product reference.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProductReferenceDto | null | undefined): Observable<ProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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 (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<ProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreate(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 === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProductReferenceDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\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 : <ProductReferenceCreationConflictDto>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<ProductReferenceDto>(<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/backoffice/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 * Deletes the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product specification, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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(\"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<ProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processDelete(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 === 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<ProductReferenceDto>(<any>null);\n }\n}\n\nexport interface IProductsManagementApiClient {\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 * Creates a new product and returns its description.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product creation parameters.\n * @return Success\n */\n createProduct(tenantId?: number | null | undefined, body?: CreateProductDto | null | undefined): Observable<ProductDto>;\n /**\n * Returns a product by its 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 * Deletes a product by its identifier.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n deleteProduct(id: number, tenantId?: number | null | undefined): Observable<void>;\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 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 * Set product variants price. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants price operation parameters.\n * @return Success\n */\n setProductVariantPrice(id: number, tenantId?: number | null | undefined, body?: SetProductVariantPriceDto | null | undefined): Observable<void>;\n /**\n * Set product variants availability. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants availability operation parameters.\n * @return Success\n */\n setProductVariantAvailability(id: number, tenantId?: number | null | undefined, body?: SetProductVariantAvailabilityDto | null | undefined): Observable<void>;\n /**\n * Set product variants SKU. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants SKU operation parameters.\n * @return Success\n */\n setProductVariantSku(id: number, tenantId?: number | null | undefined, body?: SetProductVariantSkuDto | null | undefined): Observable<void>;\n /**\n * Imports products from a specific CSV file and returns a list of imported products descriptions.\n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n importProducts(tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<PagedOfProductDto>;\n /**\n * Creates new designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n createDesignsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDesignConnectionsDto | null | undefined): Observable<void>;\n /**\n * Removes designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n removeDesignsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDesignConnectionsDto | null | undefined): Observable<void>;\n /**\n * Creates new mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n createMockupsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductMockupConnectionsDto | null | undefined): Observable<void>;\n /**\n * Removes mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n removeMockupsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductMockupConnectionsDto | null | undefined): Observable<void>;\n /**\n * Creates new documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n createDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDocumentConnectionsDto | null | undefined): Observable<void>;\n /**\n * Removes documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n removeDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDocumentConnectionsDto | null | undefined): Observable<void>;\n /**\n * Set a thumbnail image for an existing product.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n setProductImage(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<void>;\n /**\n * Returns all available product personalization workflows.\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 personalization workflow name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailablePersonalizationWorkflows(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfPersonalizationWorkflowDto>;\n /**\n * Returns all available product processing pipelines.\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 getAvailableProcessingPipelines(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductsManagementApiClient extends ApiClientBase implements IProductsManagementApiClient {\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/backoffice/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 * Creates a new product and returns its description.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product creation parameters.\n * @return Success\n */\n createProduct(tenantId?: number | null | undefined, body?: CreateProductDto | null | undefined): Observable<ProductDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products?\";\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.processCreateProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateProduct(<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 processCreateProduct(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 === 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 by its 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/backoffice/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 * Deletes a product by its identifier.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n deleteProduct(id: number, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/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 (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.processDeleteProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteProduct(<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 processDeleteProduct(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 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/backoffice/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 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/backoffice/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/backoffice/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/backoffice/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/backoffice/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/backoffice/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 * Set product variants price. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants price operation parameters.\n * @return Success\n */\n setProductVariantPrice(id: number, tenantId?: number | null | undefined, body?: SetProductVariantPriceDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-price?\";\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 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.processSetProductVariantPrice(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantPrice(<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 processSetProductVariantPrice(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 === 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<void>(<any>null);\n }\n\n /**\n * Set product variants availability. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants availability operation parameters.\n * @return Success\n */\n setProductVariantAvailability(id: number, tenantId?: number | null | undefined, body?: SetProductVariantAvailabilityDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-availability?\";\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 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.processSetProductVariantAvailability(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantAvailability(<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 processSetProductVariantAvailability(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 === 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<void>(<any>null);\n }\n\n /**\n * Set product variants SKU. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants SKU operation parameters.\n * @return Success\n */\n setProductVariantSku(id: number, tenantId?: number | null | undefined, body?: SetProductVariantSkuDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-sku?\";\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 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.processSetProductVariantSku(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantSku(<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 processSetProductVariantSku(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 === 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<void>(<any>null);\n }\n\n /**\n * Imports products from a specific CSV file and returns a list of imported products descriptions.\n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n importProducts(tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<PagedOfProductDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/import?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\n\n let options_ : any = {\n body: content_,\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.processImportProducts(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processImportProducts(<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 processImportProducts(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 === 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<PagedOfProductDto>(<any>null);\n }\n\n /**\n * Creates new designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n createDesignsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDesignConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/design-connections?\";\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 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.processCreateDesignsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateDesignsConnections(<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 processCreateDesignsConnections(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 * Removes designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n removeDesignsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDesignConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/design-connections?\";\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 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(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRemoveDesignsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRemoveDesignsConnections(<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 processRemoveDesignsConnections(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 * Creates new mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n createMockupsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductMockupConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/mockup-connections?\";\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 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.processCreateMockupsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMockupsConnections(<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 processCreateMockupsConnections(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 * Removes mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n removeMockupsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductMockupConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/mockup-connections?\";\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 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(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRemoveMockupsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRemoveMockupsConnections(<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 processRemoveMockupsConnections(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 * Creates new documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n createDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDocumentConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/document-connections?\";\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 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.processCreateDocumentsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateDocumentsConnections(<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 processCreateDocumentsConnections(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 * Removes documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n removeDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDocumentConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/document-connections?\";\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 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(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRemoveDocumentsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRemoveDocumentsConnections(<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 processRemoveDocumentsConnections(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 * Set a thumbnail image for an existing product.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n setProductImage(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-image?\";\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 const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\n\n let options_ : any = {\n body: content_,\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.processSetProductImage(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductImage(<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 processSetProductImage(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 === 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<void>(<any>null);\n }\n\n /**\n * Returns all available product personalization workflows.\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 personalization workflow name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailablePersonalizationWorkflows(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfPersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/available-workflows?\";\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.processGetAvailablePersonalizationWorkflows(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailablePersonalizationWorkflows(<any>r));\n } catch (e) {\n return <Observable<PagedOfPersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfPersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAvailablePersonalizationWorkflows(response: HttpResponseBase): Observable<PagedOfPersonalizationWorkflowDto> {\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 : <PagedOfPersonalizationWorkflowDto>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<PagedOfPersonalizationWorkflowDto>(<any>null);\n }\n\n /**\n * Returns all available product processing pipelines.\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 getAvailableProcessingPipelines(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/available-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.processGetAvailableProcessingPipelines(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableProcessingPipelines(<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 processGetAvailableProcessingPipelines(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\nexport interface IStorefrontsManagementApiClient {\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 * Deletes an existing storefront by its identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto>;\n /**\n * Creates new custom storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Custom storefront creation model.\n * @return Success\n */\n createCustomStorefront(tenantId?: number | null | undefined, body?: CreateCustomStorefrontDto | null | undefined): Observable<CustomStorefrontDto>;\n /**\n * Returns extended information about custom storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getCustomStorefront(id: number, tenantId?: number | null | undefined): Observable<CustomStorefrontDto>;\n /**\n * Creates new NopCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) NopCommerce storefront creation model.\n * @return Success\n */\n createNopCommerceStorefront(tenantId?: number | null | undefined, body?: CreateNopCommerceStorefrontDto | null | undefined): Observable<NopCommerceStorefrontDto>;\n /**\n * Returns extended information about NopCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getNopCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<NopCommerceStorefrontDto>;\n /**\n * Creates new WooCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) WooCommerce storefront creation model.\n * @return Success\n */\n createWooCommerceStorefront(tenantId?: number | null | undefined, body?: CreateWooCommerceStorefrontDto | null | undefined): Observable<WooCommerceStorefrontDto>;\n /**\n * Returns extended information about WooCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getWooCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<WooCommerceStorefrontDto>;\n /**\n * Creates new Magento storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Magento storefront creation model.\n * @return Success\n */\n createMagentoStorefront(tenantId?: number | null | undefined, body?: CreateMagentoStorefrontDto | null | undefined): Observable<MagentoStorefrontDto>;\n /**\n * Returns extended information about Magento storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMagentoStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto>;\n /**\n * Creates new BigCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) BigCommerce storefront creation model.\n * @return Success\n */\n createBigCommerceStorefront(tenantId?: number | null | undefined, body?: CreateBigCommerceStorefrontDto | null | undefined): Observable<BigCommerceStorefrontDto>;\n /**\n * Returns extended information about BigCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getBigCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorefrontsManagementApiClient extends ApiClientBase implements IStorefrontsManagementApiClient {\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/backoffice/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/backoffice/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 === 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 /**\n * Deletes an existing storefront by its identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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(\"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<StorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processDelete(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 === 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 /**\n * Creates new custom storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Custom storefront creation model.\n * @return Success\n */\n createCustomStorefront(tenantId?: number | null | undefined, body?: CreateCustomStorefrontDto | null | undefined): Observable<CustomStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/custom?\";\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.processCreateCustomStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateCustomStorefront(<any>r));\n } catch (e) {\n return <Observable<CustomStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<CustomStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateCustomStorefront(response: HttpResponseBase): Observable<CustomStorefrontDto> {\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 : <CustomStorefrontDto>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 === 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<CustomStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about custom storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getCustomStorefront(id: number, tenantId?: number | null | undefined): Observable<CustomStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/custom/{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.processGetCustomStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCustomStorefront(<any>r));\n } catch (e) {\n return <Observable<CustomStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<CustomStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetCustomStorefront(response: HttpResponseBase): Observable<CustomStorefrontDto> {\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 : <CustomStorefrontDto>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<CustomStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new NopCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) NopCommerce storefront creation model.\n * @return Success\n */\n createNopCommerceStorefront(tenantId?: number | null | undefined, body?: CreateNopCommerceStorefrontDto | null | undefined): Observable<NopCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/nopcommerce?\";\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.processCreateNopCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateNopCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateNopCommerceStorefront(response: HttpResponseBase): Observable<NopCommerceStorefrontDto> {\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 : <NopCommerceStorefrontDto>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 === 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<NopCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about NopCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getNopCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<NopCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/nopcommerce/{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.processGetNopCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNopCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetNopCommerceStorefront(response: HttpResponseBase): Observable<NopCommerceStorefrontDto> {\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 : <NopCommerceStorefrontDto>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<NopCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new WooCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) WooCommerce storefront creation model.\n * @return Success\n */\n createWooCommerceStorefront(tenantId?: number | null | undefined, body?: CreateWooCommerceStorefrontDto | null | undefined): Observable<WooCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/woocommerce?\";\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.processCreateWooCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWooCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateWooCommerceStorefront(response: HttpResponseBase): Observable<WooCommerceStorefrontDto> {\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 : <WooCommerceStorefrontDto>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 === 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<WooCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about WooCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getWooCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<WooCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/woocommerce/{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.processGetWooCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetWooCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetWooCommerceStorefront(response: HttpResponseBase): Observable<WooCommerceStorefrontDto> {\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 : <WooCommerceStorefrontDto>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<WooCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new Magento storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Magento storefront creation model.\n * @return Success\n */\n createMagentoStorefront(tenantId?: number | null | undefined, body?: CreateMagentoStorefrontDto | null | undefined): Observable<MagentoStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/magento?\";\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.processCreateMagentoStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMagentoStorefront(<any>r));\n } catch (e) {\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateMagentoStorefront(response: HttpResponseBase): Observable<MagentoStorefrontDto> {\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 : <MagentoStorefrontDto>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 === 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<MagentoStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about Magento storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMagentoStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/magento/{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.processGetMagentoStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMagentoStorefront(<any>r));\n } catch (e) {\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetMagentoStorefront(response: HttpResponseBase): Observable<MagentoStorefrontDto> {\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 : <MagentoStorefrontDto>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<MagentoStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new BigCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) BigCommerce storefront creation model.\n * @return Success\n */\n createBigCommerceStorefront(tenantId?: number | null | undefined, body?: CreateBigCommerceStorefrontDto | null | undefined): Observable<BigCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/bigcommerce?\";\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.processCreateBigCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBigCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<BigCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<BigCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateBigCommerceStorefront(response: HttpResponseBase): Observable<BigCommerceStorefrontDto> {\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 : <BigCommerceStorefrontDto>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 === 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<BigCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about BigCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getBigCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/bigcommerce/{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.processGetBigCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBigCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetBigCommerceStorefront(response: HttpResponseBase): Observable<MagentoStorefrontDto> {\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 : <MagentoStorefrontDto>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<MagentoStorefrontDto>(<any>null);\n }\n}\n\nexport interface IUsersManagementApiClient {\n /**\n * Returns a tenant users list.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(tenantId?: number | null | undefined): Observable<PagedOfTenantUserDto>;\n /**\n * Creates a new tenant user.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) User creation model.\n * @return Success\n */\n create(tenantId?: number | null | undefined, body?: CreateTenantUserDto | null | undefined): Observable<TenantUserDto>;\n /**\n * Returns a tenant user by user identifier.\n * @param id User identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<TenantUserDto>;\n /**\n * Deletes an existing tenant user.\n * @param id User identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns all tenant user roles, relevant to the specified query parameters.\n * @param search (optional) Search string for partial match.\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 tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllRoles(search?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfTenantUserRoleDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsersManagementApiClient extends ApiClientBase implements IUsersManagementApiClient {\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 a tenant users list.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(tenantId?: number | null | undefined): Observable<PagedOfTenantUserDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/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.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<PagedOfTenantUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfTenantUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfTenantUserDto> {\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 : <PagedOfTenantUserDto>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<PagedOfTenantUserDto>(<any>null);\n }\n\n /**\n * Creates a new tenant user.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) User creation model.\n * @return Success\n */\n create(tenantId?: number | null | undefined, body?: CreateTenantUserDto | null | undefined): Observable<TenantUserDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/users?\";\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<TenantUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable<TenantUserDto> {\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 : <TenantUserDto>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<TenantUserDto>(<any>null);\n }\n\n /**\n * Returns a tenant user by user identifier.\n * @param id User identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<TenantUserDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/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 (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<TenantUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<TenantUserDto> {\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 : <TenantUserDto>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<TenantUserDto>(<any>null);\n }\n\n /**\n * Deletes an existing tenant user.\n * @param id User 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/backoffice/v1/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 (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 === 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 all tenant user roles, relevant to the specified query parameters.\n * @param search (optional) Search string for partial match.\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 tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllRoles(search?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfTenantUserRoleDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/users/roles?\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\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 (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.processGetAllRoles(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllRoles(<any>r));\n } catch (e) {\n return <Observable<PagedOfTenantUserRoleDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfTenantUserRoleDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllRoles(response: HttpResponseBase): Observable<PagedOfTenantUserRoleDto> {\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 : <PagedOfTenantUserRoleDto>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<PagedOfTenantUserRoleDto>(<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/** Available product reference target types. */\nexport enum ProductReferenceType {\n ProductSpecification = \"ProductSpecification\",\n Product = \"Product\",\n ProductLink = \"ProductLink\",\n ProductBundle = \"ProductBundle\",\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 /** Customer's Canvas product bundle identifier. */\n productBundleId?: 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductReferenceDto {\n total?: number;\n items?: ProductReferenceDto[] | 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/** Dto class, containing create operation parameters for storefront product reference. */\nexport interface CreateProductReferenceDto {\n /** Product reference is an external reference to Customer's Canvas product, e.g online store product identifier. */\n productReference: string;\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 | null;\n /** Customer's Canvas product identifier. */\n productId?: number | null;\n /** Customer's Canvas product link identifier. */\n productLinkId?: number | null;\n /** Customer's Canvas product bundle identifier. */\n productBundleId?: number | 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 storefront product reference. */\nexport interface ProductReferenceInfo {\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 link identifier. */\n productLinkId?: number;\n /** Customer's Canvas product bundle identifier. */\n productBundleId?: number;\n /** Storefront identifier. */\n storefrontId?: number;\n}\n\n/** DTO class, containing information about storefront product reference creation conflict. */\nexport interface ProductReferenceCreationConflictDto {\n /** List of storefront product references, which are already exist. */\n existingReferences?: ProductReferenceInfo[] | null;\n /** Problem description. */\n description?: string | null;\n /** Coflict type. */\n type?: ConflictType;\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/** 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductDto {\n total?: number;\n items?: ProductDto[] | null;\n}\n\n/** Product option value creation operation parameters. */\nexport interface CreateProductOptionValueDto {\n /** Product option value. */\n value?: string | null;\n}\n\n/** Product option creation operation parameters. */\nexport interface CreateProductOptionDto {\n /** Option title. */\n title: string;\n /** Option traits. */\n traits?: string[] | null;\n /** Product option values. */\n values?: CreateProductOptionValueDto[] | null;\n /** Flag that indicates if option can be used for product design connections creation. */\n useForDesignBinding?: boolean;\n /** Flag that indicates if option can be used for product mockup connections creation. */\n useForMockupBinding?: boolean;\n /** Flag that indicates if option can be used for product document connections creation. */\n useForDocumentBinding?: boolean;\n}\n\n/** Product option creation operation parameters. */\nexport interface CreateProductDto {\n /** Product name. */\n name: string;\n /** Product description. */\n description?: string | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number;\n /** Processing pipeline identifier. */\n processingPipelineId?: number;\n /** Product tags. */\n tags?: string[] | null;\n /** Product custom fields. */\n customFields?: { [key: string]: string; } | null;\n /** Product options parameters. */\n options?: CreateProductOptionDto[] | null;\n}\n\n/** Available option types. */\nexport enum OptionType {\n Simple = \"Simple\",\n Size = \"Size\",\n PageCount = \"PageCount\",\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 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductOptionDto {\n total?: number;\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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantDto {\n total?: number;\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 height 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantDesignDto {\n total?: number;\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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantMockupDto {\n total?: number;\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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantDocumentDto {\n total?: number;\n items?: ProductVariantDocumentDto[] | null;\n}\n\n/** Parameters for setting product variants price. */\nexport interface ProductVariantPriceDto {\n /** Price. */\n price?: number | null;\n /** UIDs of variants for price setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants price setting operation parameters. */\nexport interface SetProductVariantPriceDto {\n /** List of product variants grouped by price value. */\n items?: ProductVariantPriceDto[] | null;\n}\n\n/** Parameters for setting product variants availability. */\nexport interface ProductVariantAvailabilityDto {\n /** Availability. */\n availability?: boolean;\n /** UIDs of variants for availability setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants availability setting operation parameters. */\nexport interface SetProductVariantAvailabilityDto {\n /** List of product variants grouped by availability value. */\n items?: ProductVariantAvailabilityDto[] | null;\n}\n\n/** Parameters for setting product variants SKU. */\nexport interface ProductVariantSkuDto {\n /** SKU. */\n sku?: string | null;\n /** UIDs of variants for SKU setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants SKU setting operation parameters. */\nexport interface SetProductVariantSkuDto {\n /** List of product variants grouped by SKU value. */\n items?: ProductVariantSkuDto[] | null;\n}\n\n/** Product asset connection options description. */\nexport interface ProductAssetConnectionOptionsDto {\n /** Product option UID. */\n optionUID?: string | null;\n /** Product option values UIDs. */\n optionValueUIDs?: string[] | null;\n}\n\n/** Product design connection description. */\nexport interface ProductDesignConnectionDto {\n /** Design identifier. */\n designId?: string | null;\n /** Connection options. Set empty if design should be available for all product variants. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n}\n\n/** Product designs connections creation model. */\nexport interface CreateProductDesignConnectionsDto {\n /** Connection parameters list. */\n connections?: ProductDesignConnectionDto[] | null;\n}\n\n/** Product asset connection removing parameters. */\nexport interface RemoveProductAssetConnectionDto {\n /** Asset identifier. */\n assetId?: string | null;\n /** Connection options. Set empty if all product variants connections should be removed. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n}\n\n/** Product designs connections removing model. */\nexport interface RemoveProductDesignConnectionsDto {\n /** Connection parameters list. */\n connections?: RemoveProductAssetConnectionDto[] | null;\n}\n\n/** Product mockup type. */\nexport enum ProductMockupType {\n Thumbnail = \"Thumbnail\",\n Editor = \"Editor\",\n Preview = \"Preview\",\n}\n\n/** Product mockup connection description. */\nexport interface ProductMockupConnectionDto {\n /** Mockup identifier. */\n mockupId?: string | null;\n /** Connection options. Set empty if mockup should be available for all product variants. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n /** Product mockup types. Single mockup may be used as editor, preview and thumbnail mockup at the same time. */\n mockupTypes?: ProductMockupType[] | null;\n /** Product mockup target surfaces. Comma-separated surface indexes (\"1,2,3\") or `all` value may be set. */\n surfaces?: string | null;\n}\n\n/** Product mockups connections creation model. */\nexport interface CreateProductMockupConnectionsDto {\n /** Connection parameters list. */\n connections?: ProductMockupConnectionDto[] | null;\n}\n\n/** Product mockups connections removing model. */\nexport interface RemoveProductMockupConnectionsDto {\n /** Connection parameters list. */\n connections?: RemoveProductAssetConnectionDto[] | null;\n}\n\n/** Product document connection description. */\nexport interface ProductDocumentConnectionDto {\n /** Document identifier. */\n documentId?: string | null;\n /** Connection options. Set empty if document should be available for all product variants. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n}\n\n/** Product documents connections creation model. */\nexport interface CreateProductDocumentConnectionsDto {\n /** Connection parameters list. */\n connections?: ProductDocumentConnectionDto[] | null;\n}\n\n/** Product documents connections removing model. */\nexport interface RemoveProductDocumentConnectionsDto {\n /** Connection parameters list. */\n connections?: RemoveProductAssetConnectionDto[] | 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 /** Workflow name. */\n name?: string | null;\n /** Workflow type. */\n workflowType?: WorkflowType;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfPersonalizationWorkflowDto {\n total?: number;\n items?: PersonalizationWorkflowDto[] | 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}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfProcessingPipelineDto {\n total?: number;\n items?: ProcessingPipelineDto[] | null;\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 /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfStorefrontDto {\n total?: number;\n items?: StorefrontDto[] | null;\n}\n\n/** Custom storefront creation model. */\nexport interface CreateCustomStorefrontDto {\n /** Storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Name of header that will be used to provide API key to target storefront system. */\n apiKeyHeaderName?: string | null;\n /** API key for target storefront system. */\n apiKey?: string | null;\n /** List of storefront shops URLs. */\n shopUrls: string[];\n}\n\n/** Custom storefront description. */\nexport interface CustomStorefrontDto {\n /** Name of header that will be used to provide API key to target storefront system. */\n apiKeyHeaderName?: string | null;\n /** API key for target storefront system. */\n apiKey?: string | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** NopCommerce storefront creation model. */\nexport interface CreateNopCommerceStorefrontDto {\n /** NopCommerce storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of NopCommerce shops URLs. */\n shopUrls: string[];\n /** NopCommerce back-end application URL. */\n backendUrl: string;\n}\n\n/** NopCommerce storefront settings. */\nexport interface NopCommerceSettingsDto {\n /** Customer's Canvas Asset Storage URL. */\n assetStorageUrl?: string | null;\n /** Customer's Canvas Asset Processor URL. */\n assetProcessorUrl?: string | null;\n /** Customer's Canvas tenant identifier. */\n tenantId?: number;\n /** Customer's Canvas storefront identifier. */\n storefrontId?: number;\n /** Customer's Canvas custom application client identifier. */\n clientId?: string | null;\n /** Customer's Canvas custom application client secret. */\n clientSecret?: string | null;\n /** NopCommerce plugin API key. */\n pluginApiKey?: string | null;\n}\n\n/** NopCommerce storefront description. */\nexport interface NopCommerceStorefrontDto {\n /** NopCommerce storefront settings. */\n settings?: NopCommerceSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** WooCommerce storefront creation model. */\nexport interface CreateWooCommerceStorefrontDto {\n /** WooCommerce storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of WooCommerce shops URLs. */\n shopUrls: string[];\n /** WooCommerce back-end application URL. */\n backendUrl: string;\n}\n\n/** WooCommerce storefront settings. */\nexport interface WooCommerceSettingsDto {\n /** Customer's Canvas Asset Storage URL. */\n assetStorageUrl?: string | null;\n /** Customer's Canvas Asset Processor URL. */\n assetProcessorUrl?: string | null;\n /** Customer's Canvas tenant identifier. */\n tenantId?: number;\n /** Customer's Canvas storefront identifier. */\n storefrontId?: number;\n /** Customer's Canvas custom application client identifier. */\n clientId?: string | null;\n /** Customer's Canvas custom application client secret. */\n clientSecret?: string | null;\n /** WooCommerce plugin API key. */\n pluginApiKey?: string | null;\n}\n\n/** WooCommerce storefront description. */\nexport interface WooCommerceStorefrontDto {\n /** WooCommerce storefront settings. */\n settings?: WooCommerceSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** Magento storefront creation model. */\nexport interface CreateMagentoStorefrontDto {\n /** Storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of Magento shops URLs. */\n shopUrls: string[];\n /** Magento back-end application URL. */\n backendUrl: string;\n /** Magento API key. */\n shopApiKey: string;\n /** Magento shop code. */\n shopCode?: string | null;\n}\n\n/** Magento storefront settings. */\nexport interface MagentoSettingsDto {\n /** Customer's Canvas Asset Storage URL. */\n assetStorageUrl?: string | null;\n /** Customer's Canvas Asset Processor URL. */\n assetProcessorUrl?: string | null;\n /** Customer's Canvas tenant identifier. */\n tenantId?: number;\n /** Customer's Canvas storefront identifier. */\n storefrontId?: number;\n /** Customer's Canvas custom application client identifier. */\n clientId?: string | null;\n /** Customer's Canvas custom application client secret. */\n clientSecret?: string | null;\n}\n\n/** Magento storefront description. */\nexport interface MagentoStorefrontDto {\n /** Magento storefront settings. */\n settings?: MagentoSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** BigCommerce storefront creation model. */\nexport interface CreateBigCommerceStorefrontDto {\n /** Storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of shops URLs. */\n shopUrls: string[];\n /** BigCommerce access token. */\n accessToken: string;\n /** BigCommerce client name. */\n clientName: string;\n /** BigCommerce client identifier. */\n clientId: string;\n /** BigCommerce client secret. */\n clientSecret: string;\n /** BigCommerce integration name. */\n integrationName: string;\n /** BigCommerce API path. */\n apiPath: string;\n}\n\n/** BigCommerce storefront settings. */\nexport interface BigCommerceSettingsDto {\n /** BigCommerce access token. */\n accessToken?: string | null;\n /** BigCommerce client name. */\n bigCommerceClientName?: string | null;\n /** BigCommerce API path. */\n apiPath?: string | null;\n /** BigCommerce client secret. */\n bigCommerceClientSecret?: string | null;\n /** BigCommerce client identifier. */\n bigCommerceClientId?: string | null;\n /** BigCommerce integration name. */\n integrationName?: string | null;\n}\n\n/** BigCommerce storefront description. */\nexport interface BigCommerceStorefrontDto {\n /** BigCommerce integration settings. */\n settings?: BigCommerceSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** Tenant user description. */\nexport interface TenantUserDto {\n /** User identifier. */\n id?: number;\n /** User login. */\n login?: string | null;\n /** User email address. */\n email?: string | null;\n /** User first name. */\n firstName?: string | null;\n /** User last name. */\n lastName?: string | null;\n /** User status. */\n isActive?: boolean;\n /** User roles. */\n roleNames?: string[] | null;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfTenantUserDto {\n total?: number;\n items?: TenantUserDto[] | null;\n}\n\n/** Tenant user creation model. */\nexport interface CreateTenantUserDto {\n /** User login (up to 256 symbols). */\n login: string;\n /** User first name (up to 64 symbols). */\n firstName: string;\n /** User last name (up to 64 symbols). */\n lastName: string;\n /** User email address (up to 256 symbols). */\n email: string;\n /** User status. */\n isActive?: boolean;\n /** User roles (e.g. 'Admin', 'User'). */\n roleNames?: string[] | null;\n /** User password (up to 32 symbols). */\n password: string;\n}\n\n/** Tenant user role description. */\nexport interface TenantUserRoleDto {\n /** Role identifier. */\n id?: number;\n /** Role name. */\n name?: string | null;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfTenantUserRoleDto {\n total?: number;\n items?: TenantUserRoleDto[] | null;\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\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 return _observableThrow(new ApiException(message, status, response, headers, result));\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 BackOfficeApiClient from './backoffice-api-client';\n\n// @dynamic\nexport function CreateApiClientConfiguration(token: string, apiUrl: string, apiKey: string = 'ApiKey'): BackOfficeApiClient.ApiClientConfiguration {\n const apiConf = new BackOfficeApiClient.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 BackOfficeModule {\n static forRoot(token: string, apiUrl: string, apiKey: string = 'ApiKey'): ModuleWithProviders<BackOfficeModule> {\n return {\n ngModule: BackOfficeModule,\n providers: [\n {\n provide: BackOfficeApiClient.API_BASE_URL,\n useValue: apiUrl\n },\n {\n provide: BackOfficeApiClient.ApiClientConfiguration,\n useFactory: CreateApiClientConfiguration.bind(this, token , apiUrl, apiKey)\n },\n ]\n };\n }\n}\n","/*\n * Public API Surface of client\n */\n\nexport * from './lib/backoffice.module';\nexport * from './lib/backoffice-api-client';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_observableFrom","_observableMergeMap","_observableCatch","_observableThrow","_observableOf","BackOfficeApiClient.ApiClientConfiguration","BackOfficeApiClient.API_BASE_URL"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aurigma-ng-backoffice-api-client.js","sources":["../../../projects/client/src/lib/backoffice-api-client.ts","../../../projects/client/src/lib/backoffice.module.ts","../../../projects/client/src/public-api.ts","../../../projects/client/src/aurigma-ng-backoffice-api-client.ts"],"sourcesContent":["/* 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 = 'ApiKey';\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 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 assembly build info.\n * @return Success\n */\n headInfo(): Observable<void>;\n /**\n * Returns 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 assembly build info.\n * @return Success\n */\n headInfo(): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/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 assembly build info.\n * @return Success\n */\n getInfo(): Observable<BuildInfoModel> {\n let url_ = this.baseUrl + \"/api/backoffice/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 IProductReferencesManagementApiClient {\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 productBundleId (optional) Customer's Canvas product bundle 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, productBundleId?: number | 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 * Creates a new storefront product reference.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProductReferenceDto | null | undefined): Observable<ProductReferenceDto>;\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 * Deletes the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product specification, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductReferencesManagementApiClient extends ApiClientBase implements IProductReferencesManagementApiClient {\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 productBundleId (optional) Customer's Canvas product bundle 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, productBundleId?: number | 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/backoffice/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 (productBundleId === null)\n throw new Error(\"The parameter 'productBundleId' cannot be null.\");\n else if (productBundleId !== undefined)\n url_ += \"productBundleId=\" + encodeURIComponent(\"\" + productBundleId) + \"&\";\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 * Creates a new storefront product reference.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Create operation parameters.\n * @return Success\n */\n create(storefrontId: number, tenantId?: number | null | undefined, body?: CreateProductReferenceDto | null | undefined): Observable<ProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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 (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<ProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreate(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 === 201) {\n return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {\n let result201: any = null;\n result201 = _responseText === \"\" ? null : <ProductReferenceDto>JSON.parse(_responseText, this.jsonParseReviver);\n return _observableOf(result201);\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 : <ProductReferenceCreationConflictDto>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<ProductReferenceDto>(<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/backoffice/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 * Deletes the storefront product reference.\n * @param reference Product reference - external reference to Customer's Canvas product specification, e.g online store product identifier.\n * @param storefrontId Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(reference: string | null, storefrontId: number, tenantId?: number | null | undefined): Observable<ProductReferenceDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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(\"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<ProductReferenceDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<ProductReferenceDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processDelete(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 === 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<ProductReferenceDto>(<any>null);\n }\n}\n\nexport interface IProductsManagementApiClient {\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 * Creates a new product and returns its description.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product creation parameters.\n * @return Success\n */\n createProduct(tenantId?: number | null | undefined, body?: CreateProductDto | null | undefined): Observable<ProductDto>;\n /**\n * Returns a product by its 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 * Deletes a product by its identifier.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n deleteProduct(id: number, tenantId?: number | null | undefined): Observable<void>;\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 * Set product options and returns updated options list.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) \n * @return Success\n */\n setProductOptions(id: number, tenantId?: number | null | undefined, body?: SetProductOptionsDto | null | undefined): Observable<PagedOfProductOptionDto>;\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 * 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 * Validates product variant resources.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n validateProductVariantResources(id: number, tenantId?: number | null | undefined): Observable<void>;\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 * Set product variants price. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants price operation parameters.\n * @return Success\n */\n setProductVariantPrice(id: number, tenantId?: number | null | undefined, body?: SetProductVariantPriceDto | null | undefined): Observable<void>;\n /**\n * Set product variants weight. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants weight operation parameters.\n * @return Success\n */\n setProductVariantWeight(id: number, tenantId?: number | null | undefined, body?: SetProductVariantWeightDto | null | undefined): Observable<void>;\n /**\n * Set product variants availability. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants availability operation parameters.\n * @return Success\n */\n setProductVariantAvailability(id: number, tenantId?: number | null | undefined, body?: SetProductVariantAvailabilityDto | null | undefined): Observable<void>;\n /**\n * Set product variants SKU. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants SKU operation parameters.\n * @return Success\n */\n setProductVariantSku(id: number, tenantId?: number | null | undefined, body?: SetProductVariantSkuDto | null | undefined): Observable<void>;\n /**\n * Imports products from a specific CSV file and returns a list of imported products descriptions.\n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n importProducts(tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<PagedOfProductDto>;\n /**\n * Creates new designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n createDesignsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDesignConnectionsDto | null | undefined): Observable<void>;\n /**\n * Removes designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n removeDesignsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDesignConnectionsDto | null | undefined): Observable<void>;\n /**\n * Creates new mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n createMockupsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductMockupConnectionsDto | null | undefined): Observable<void>;\n /**\n * Removes mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n removeMockupsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductMockupConnectionsDto | null | undefined): Observable<void>;\n /**\n * Creates new documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n createDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDocumentConnectionsDto | null | undefined): Observable<void>;\n /**\n * Removes documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n removeDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDocumentConnectionsDto | null | undefined): Observable<void>;\n /**\n * Set a thumbnail image for an existing product.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n setProductImage(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<void>;\n /**\n * Returns all available product personalization workflows.\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 personalization workflow name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailablePersonalizationWorkflows(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfPersonalizationWorkflowDto>;\n /**\n * Returns all available product processing pipelines.\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 getAvailableProcessingPipelines(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProductsManagementApiClient extends ApiClientBase implements IProductsManagementApiClient {\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/backoffice/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 * Creates a new product and returns its description.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product creation parameters.\n * @return Success\n */\n createProduct(tenantId?: number | null | undefined, body?: CreateProductDto | null | undefined): Observable<ProductDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products?\";\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.processCreateProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateProduct(<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 processCreateProduct(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 === 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 by its 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/backoffice/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 * Deletes a product by its identifier.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n deleteProduct(id: number, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/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 (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.processDeleteProduct(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processDeleteProduct(<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 processDeleteProduct(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 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/backoffice/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 * Set product options and returns updated options list.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) \n * @return Success\n */\n setProductOptions(id: number, tenantId?: number | null | undefined, body?: SetProductOptionsDto | null | undefined): Observable<PagedOfProductOptionDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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 (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(\"put\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processSetProductOptions(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductOptions(<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 processSetProductOptions(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 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/backoffice/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/backoffice/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 * 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/backoffice/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 * Validates product variant resources.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n validateProductVariantResources(id: number, tenantId?: number | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/validate-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 (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.processValidateProductVariantResources(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processValidateProductVariantResources(<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 processValidateProductVariantResources(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 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/backoffice/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/backoffice/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/backoffice/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 * Set product variants price. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants price operation parameters.\n * @return Success\n */\n setProductVariantPrice(id: number, tenantId?: number | null | undefined, body?: SetProductVariantPriceDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-price?\";\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 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.processSetProductVariantPrice(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantPrice(<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 processSetProductVariantPrice(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 === 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<void>(<any>null);\n }\n\n /**\n * Set product variants weight. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants weight operation parameters.\n * @return Success\n */\n setProductVariantWeight(id: number, tenantId?: number | null | undefined, body?: SetProductVariantWeightDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-weight?\";\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 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.processSetProductVariantWeight(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantWeight(<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 processSetProductVariantWeight(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 === 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<void>(<any>null);\n }\n\n /**\n * Set product variants availability. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants availability operation parameters.\n * @return Success\n */\n setProductVariantAvailability(id: number, tenantId?: number | null | undefined, body?: SetProductVariantAvailabilityDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-availability?\";\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 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.processSetProductVariantAvailability(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantAvailability(<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 processSetProductVariantAvailability(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 === 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<void>(<any>null);\n }\n\n /**\n * Set product variants SKU. Variants identifiers will be changed.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Set product variants SKU operation parameters.\n * @return Success\n */\n setProductVariantSku(id: number, tenantId?: number | null | undefined, body?: SetProductVariantSkuDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-variant-sku?\";\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 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.processSetProductVariantSku(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductVariantSku(<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 processSetProductVariantSku(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 === 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<void>(<any>null);\n }\n\n /**\n * Imports products from a specific CSV file and returns a list of imported products descriptions.\n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n importProducts(tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<PagedOfProductDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/import?\";\n if (tenantId !== undefined && tenantId !== null)\n url_ += \"tenantId=\" + encodeURIComponent(\"\" + tenantId) + \"&\";\n url_ = url_.replace(/[?&]$/, \"\");\n\n const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\n\n let options_ : any = {\n body: content_,\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.processImportProducts(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processImportProducts(<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 processImportProducts(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 === 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<PagedOfProductDto>(<any>null);\n }\n\n /**\n * Creates new designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n createDesignsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDesignConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/design-connections?\";\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 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.processCreateDesignsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateDesignsConnections(<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 processCreateDesignsConnections(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 * Removes designs connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product designs connections creation parameters.\n * @return Success\n */\n removeDesignsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDesignConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/design-connections?\";\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 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(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRemoveDesignsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRemoveDesignsConnections(<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 processRemoveDesignsConnections(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 * Creates new mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n createMockupsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductMockupConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/mockup-connections?\";\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 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.processCreateMockupsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMockupsConnections(<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 processCreateMockupsConnections(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 * Removes mockups connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product mockups connections creation parameters.\n * @return Success\n */\n removeMockupsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductMockupConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/mockup-connections?\";\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 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(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRemoveMockupsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRemoveMockupsConnections(<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 processRemoveMockupsConnections(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 * Creates new documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n createDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: CreateProductDocumentConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/document-connections?\";\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 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.processCreateDocumentsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateDocumentsConnections(<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 processCreateDocumentsConnections(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 * Removes documents connections for a specified product.\n * @param id Product identifier.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Product documents connections creation parameters.\n * @return Success\n */\n removeDocumentsConnections(id: number, tenantId?: number | null | undefined, body?: RemoveProductDocumentConnectionsDto | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/document-connections?\";\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 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(\"delete\", url_, transformedOptions_);\n })).pipe(_observableMergeMap((response_: any) => {\n return this.transformResult(url_, response_, (r) => this.processRemoveDocumentsConnections(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processRemoveDocumentsConnections(<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 processRemoveDocumentsConnections(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 * Set a thumbnail image for an existing product.\n * @param id Product identifier.\n * @param productVersionId (optional) \n * @param tenantId (optional) Tenant identifier.\n * @param file (optional) \n * @return Success\n */\n setProductImage(id: number, productVersionId?: number | null | undefined, tenantId?: number | null | undefined, file?: FileParameter | null | undefined): Observable<void> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/{id}/set-image?\";\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 const content_ = new FormData();\n if (file !== null && file !== undefined)\n content_.append(\"file\", file.data, file.fileName ? file.fileName : \"file\");\n\n let options_ : any = {\n body: content_,\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.processSetProductImage(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processSetProductImage(<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 processSetProductImage(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 === 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<void>(<any>null);\n }\n\n /**\n * Returns all available product personalization workflows.\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 personalization workflow name.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAvailablePersonalizationWorkflows(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfPersonalizationWorkflowDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/available-workflows?\";\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.processGetAvailablePersonalizationWorkflows(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailablePersonalizationWorkflows(<any>r));\n } catch (e) {\n return <Observable<PagedOfPersonalizationWorkflowDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfPersonalizationWorkflowDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAvailablePersonalizationWorkflows(response: HttpResponseBase): Observable<PagedOfPersonalizationWorkflowDto> {\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 : <PagedOfPersonalizationWorkflowDto>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<PagedOfPersonalizationWorkflowDto>(<any>null);\n }\n\n /**\n * Returns all available product processing pipelines.\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 getAvailableProcessingPipelines(skip?: number | null | undefined, take?: number | null | undefined, search?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfProcessingPipelineDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/products/available-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.processGetAvailableProcessingPipelines(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAvailableProcessingPipelines(<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 processGetAvailableProcessingPipelines(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\nexport interface IStorefrontsManagementApiClient {\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 * Deletes an existing storefront by its identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto>;\n /**\n * Creates new custom storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Custom storefront creation model.\n * @return Success\n */\n createCustomStorefront(tenantId?: number | null | undefined, body?: CreateCustomStorefrontDto | null | undefined): Observable<CustomStorefrontDto>;\n /**\n * Returns extended information about custom storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getCustomStorefront(id: number, tenantId?: number | null | undefined): Observable<CustomStorefrontDto>;\n /**\n * Creates new NopCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) NopCommerce storefront creation model.\n * @return Success\n */\n createNopCommerceStorefront(tenantId?: number | null | undefined, body?: CreateNopCommerceStorefrontDto | null | undefined): Observable<NopCommerceStorefrontDto>;\n /**\n * Returns extended information about NopCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getNopCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<NopCommerceStorefrontDto>;\n /**\n * Creates new WooCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) WooCommerce storefront creation model.\n * @return Success\n */\n createWooCommerceStorefront(tenantId?: number | null | undefined, body?: CreateWooCommerceStorefrontDto | null | undefined): Observable<WooCommerceStorefrontDto>;\n /**\n * Returns extended information about WooCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getWooCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<WooCommerceStorefrontDto>;\n /**\n * Creates new Magento storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Magento storefront creation model.\n * @return Success\n */\n createMagentoStorefront(tenantId?: number | null | undefined, body?: CreateMagentoStorefrontDto | null | undefined): Observable<MagentoStorefrontDto>;\n /**\n * Returns extended information about Magento storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMagentoStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto>;\n /**\n * Creates new BigCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) BigCommerce storefront creation model.\n * @return Success\n */\n createBigCommerceStorefront(tenantId?: number | null | undefined, body?: CreateBigCommerceStorefrontDto | null | undefined): Observable<BigCommerceStorefrontDto>;\n /**\n * Returns extended information about BigCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getBigCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorefrontsManagementApiClient extends ApiClientBase implements IStorefrontsManagementApiClient {\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/backoffice/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/backoffice/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 === 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 /**\n * Deletes an existing storefront by its identifier.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<StorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/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(\"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<StorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<StorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processDelete(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 === 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 /**\n * Creates new custom storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Custom storefront creation model.\n * @return Success\n */\n createCustomStorefront(tenantId?: number | null | undefined, body?: CreateCustomStorefrontDto | null | undefined): Observable<CustomStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/custom?\";\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.processCreateCustomStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateCustomStorefront(<any>r));\n } catch (e) {\n return <Observable<CustomStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<CustomStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateCustomStorefront(response: HttpResponseBase): Observable<CustomStorefrontDto> {\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 : <CustomStorefrontDto>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 === 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<CustomStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about custom storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getCustomStorefront(id: number, tenantId?: number | null | undefined): Observable<CustomStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/custom/{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.processGetCustomStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetCustomStorefront(<any>r));\n } catch (e) {\n return <Observable<CustomStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<CustomStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetCustomStorefront(response: HttpResponseBase): Observable<CustomStorefrontDto> {\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 : <CustomStorefrontDto>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<CustomStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new NopCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) NopCommerce storefront creation model.\n * @return Success\n */\n createNopCommerceStorefront(tenantId?: number | null | undefined, body?: CreateNopCommerceStorefrontDto | null | undefined): Observable<NopCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/nopcommerce?\";\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.processCreateNopCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateNopCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateNopCommerceStorefront(response: HttpResponseBase): Observable<NopCommerceStorefrontDto> {\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 : <NopCommerceStorefrontDto>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 === 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<NopCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about NopCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getNopCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<NopCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/nopcommerce/{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.processGetNopCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetNopCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<NopCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetNopCommerceStorefront(response: HttpResponseBase): Observable<NopCommerceStorefrontDto> {\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 : <NopCommerceStorefrontDto>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<NopCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new WooCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) WooCommerce storefront creation model.\n * @return Success\n */\n createWooCommerceStorefront(tenantId?: number | null | undefined, body?: CreateWooCommerceStorefrontDto | null | undefined): Observable<WooCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/woocommerce?\";\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.processCreateWooCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateWooCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateWooCommerceStorefront(response: HttpResponseBase): Observable<WooCommerceStorefrontDto> {\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 : <WooCommerceStorefrontDto>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 === 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<WooCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about WooCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getWooCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<WooCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/woocommerce/{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.processGetWooCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetWooCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<WooCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetWooCommerceStorefront(response: HttpResponseBase): Observable<WooCommerceStorefrontDto> {\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 : <WooCommerceStorefrontDto>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<WooCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new Magento storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) Magento storefront creation model.\n * @return Success\n */\n createMagentoStorefront(tenantId?: number | null | undefined, body?: CreateMagentoStorefrontDto | null | undefined): Observable<MagentoStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/magento?\";\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.processCreateMagentoStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateMagentoStorefront(<any>r));\n } catch (e) {\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateMagentoStorefront(response: HttpResponseBase): Observable<MagentoStorefrontDto> {\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 : <MagentoStorefrontDto>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 === 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<MagentoStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about Magento storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getMagentoStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/magento/{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.processGetMagentoStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetMagentoStorefront(<any>r));\n } catch (e) {\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetMagentoStorefront(response: HttpResponseBase): Observable<MagentoStorefrontDto> {\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 : <MagentoStorefrontDto>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<MagentoStorefrontDto>(<any>null);\n }\n\n /**\n * Creates new BigCommerce storefront.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) BigCommerce storefront creation model.\n * @return Success\n */\n createBigCommerceStorefront(tenantId?: number | null | undefined, body?: CreateBigCommerceStorefrontDto | null | undefined): Observable<BigCommerceStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/bigcommerce?\";\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.processCreateBigCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processCreateBigCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<BigCommerceStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<BigCommerceStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreateBigCommerceStorefront(response: HttpResponseBase): Observable<BigCommerceStorefrontDto> {\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 : <BigCommerceStorefrontDto>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 === 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<BigCommerceStorefrontDto>(<any>null);\n }\n\n /**\n * Returns extended information about BigCommerce storefront.\n * @param id Storefront identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getBigCommerceStorefront(id: number, tenantId?: number | null | undefined): Observable<MagentoStorefrontDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/storefronts/bigcommerce/{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.processGetBigCommerceStorefront(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetBigCommerceStorefront(<any>r));\n } catch (e) {\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<MagentoStorefrontDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetBigCommerceStorefront(response: HttpResponseBase): Observable<MagentoStorefrontDto> {\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 : <MagentoStorefrontDto>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<MagentoStorefrontDto>(<any>null);\n }\n}\n\nexport interface IUsersManagementApiClient {\n /**\n * Returns a tenant users list.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(tenantId?: number | null | undefined): Observable<PagedOfTenantUserDto>;\n /**\n * Creates a new tenant user.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) User creation model.\n * @return Success\n */\n create(tenantId?: number | null | undefined, body?: CreateTenantUserDto | null | undefined): Observable<TenantUserDto>;\n /**\n * Returns a tenant user by user identifier.\n * @param id User identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<TenantUserDto>;\n /**\n * Deletes an existing tenant user.\n * @param id User identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n delete(id: number, tenantId?: number | null | undefined): Observable<void>;\n /**\n * Returns all tenant user roles, relevant to the specified query parameters.\n * @param search (optional) Search string for partial match.\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 tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllRoles(search?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfTenantUserRoleDto>;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UsersManagementApiClient extends ApiClientBase implements IUsersManagementApiClient {\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 a tenant users list.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAll(tenantId?: number | null | undefined): Observable<PagedOfTenantUserDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/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.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<PagedOfTenantUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfTenantUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAll(response: HttpResponseBase): Observable<PagedOfTenantUserDto> {\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 : <PagedOfTenantUserDto>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<PagedOfTenantUserDto>(<any>null);\n }\n\n /**\n * Creates a new tenant user.\n * @param tenantId (optional) Tenant identifier.\n * @param body (optional) User creation model.\n * @return Success\n */\n create(tenantId?: number | null | undefined, body?: CreateTenantUserDto | null | undefined): Observable<TenantUserDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/users?\";\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<TenantUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processCreate(response: HttpResponseBase): Observable<TenantUserDto> {\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 : <TenantUserDto>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<TenantUserDto>(<any>null);\n }\n\n /**\n * Returns a tenant user by user identifier.\n * @param id User identifier.\n * @param tenantId (optional) Tenant identifier.\n * @return Success\n */\n get(id: number, tenantId?: number | null | undefined): Observable<TenantUserDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/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 (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<TenantUserDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<TenantUserDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGet(response: HttpResponseBase): Observable<TenantUserDto> {\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 : <TenantUserDto>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<TenantUserDto>(<any>null);\n }\n\n /**\n * Deletes an existing tenant user.\n * @param id User 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/backoffice/v1/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 (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 === 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 all tenant user roles, relevant to the specified query parameters.\n * @param search (optional) Search string for partial match.\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 tenantId (optional) Tenant identifier.\n * @return Success\n */\n getAllRoles(search?: string | null | undefined, skip?: number | null | undefined, take?: number | null | undefined, sorting?: string | null | undefined, tenantId?: number | null | undefined): Observable<PagedOfTenantUserRoleDto> {\n let url_ = this.baseUrl + \"/api/backoffice/v1/users/roles?\";\n if (search !== undefined && search !== null)\n url_ += \"search=\" + encodeURIComponent(\"\" + search) + \"&\";\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 (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.processGetAllRoles(<any>r));\n })).pipe(_observableCatch((response_: any) => {\n if (response_ instanceof HttpResponseBase) {\n try {\n return this.transformResult(url_, response_, (r) => this.processGetAllRoles(<any>r));\n } catch (e) {\n return <Observable<PagedOfTenantUserRoleDto>><any>_observableThrow(e);\n }\n } else\n return <Observable<PagedOfTenantUserRoleDto>><any>_observableThrow(response_);\n }));\n }\n\n protected processGetAllRoles(response: HttpResponseBase): Observable<PagedOfTenantUserRoleDto> {\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 : <PagedOfTenantUserRoleDto>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<PagedOfTenantUserRoleDto>(<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/** Available product reference target types. */\nexport enum ProductReferenceType {\n ProductSpecification = \"ProductSpecification\",\n Product = \"Product\",\n ProductLink = \"ProductLink\",\n ProductBundle = \"ProductBundle\",\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 /** Customer's Canvas product bundle identifier. */\n productBundleId?: 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductReferenceDto {\n total?: number;\n items?: ProductReferenceDto[] | 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/** Dto class, containing create operation parameters for storefront product reference. */\nexport interface CreateProductReferenceDto {\n /** Product reference is an external reference to Customer's Canvas product, e.g online store product identifier. */\n productReference: string;\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 | null;\n /** Customer's Canvas product identifier. */\n productId?: number | null;\n /** Customer's Canvas product link identifier. */\n productLinkId?: number | null;\n /** Customer's Canvas product bundle identifier. */\n productBundleId?: number | 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 storefront product reference. */\nexport interface ProductReferenceInfo {\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 link identifier. */\n productLinkId?: number;\n /** Customer's Canvas product bundle identifier. */\n productBundleId?: number;\n /** Storefront identifier. */\n storefrontId?: number;\n}\n\n/** DTO class, containing information about storefront product reference creation conflict. */\nexport interface ProductReferenceCreationConflictDto {\n /** List of storefront product references, which are already exist. */\n existingReferences?: ProductReferenceInfo[] | null;\n /** Problem description. */\n description?: string | null;\n /** Coflict type. */\n type?: ConflictType;\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/** 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductDto {\n total?: number;\n items?: ProductDto[] | null;\n}\n\n/** Product option value creation operation parameters. */\nexport interface CreateProductOptionValueDto {\n /** Product option value. */\n value?: string | null;\n}\n\n/** Product option creation operation parameters. */\nexport interface CreateProductOptionDto {\n /** Option title. */\n title: string;\n /** Option traits. */\n traits?: string[] | null;\n /** Product option values. */\n values?: CreateProductOptionValueDto[] | null;\n /** Flag that indicates if option can be used for product design connections creation. */\n useForDesignBinding?: boolean;\n /** Flag that indicates if option can be used for product mockup connections creation. */\n useForMockupBinding?: boolean;\n /** Flag that indicates if option can be used for product document connections creation. */\n useForDocumentBinding?: boolean;\n}\n\n/** Product option creation operation parameters. */\nexport interface CreateProductDto {\n /** Product name. */\n name: string;\n /** Product description. */\n description?: string | null;\n /** Personalization workflow identifier. */\n personalizationWorkflowId?: number;\n /** Processing pipeline identifier. */\n processingPipelineId?: number;\n /** Product tags. */\n tags?: string[] | null;\n /** Product custom fields. */\n customFields?: { [key: string]: string; } | null;\n /** Product options parameters. */\n options?: CreateProductOptionDto[] | null;\n}\n\n/** Available option types. */\nexport enum OptionType {\n Simple = \"Simple\",\n Size = \"Size\",\n PageCount = \"PageCount\",\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 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductOptionDto {\n total?: number;\n items?: ProductOptionDto[] | null;\n}\n\n/** Product option value create or update operation parameters. */\nexport interface SetProductOptionValueDto {\n /** Product option value UID. */\n uid?: string | null;\n /** Product option value description. */\n description?: 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. */\n value?: string | null;\n /** Product option value colors. */\n colors?: string[] | null;\n}\n\n/** Product option create or update operation parameters. */\nexport interface SetProductOptionDto {\n /** Product option UID. */\n uid?: string | null;\n /** Product option title. */\n title?: string | null;\n /** Product option description. */\n description?: string | null;\n /** Product option tooltip. */\n tooltip?: string | null;\n /** Product option sort index. */\n sortIndex?: number;\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 /** A list of product option values. */\n values?: SetProductOptionValueDto[] | null;\n}\n\n/** Product options setting operation parameters. */\nexport interface SetProductOptionsDto {\n /** Product options create or update parameters. */\n options?: SetProductOptionDto[] | 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 weight. */\n weight?: 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantDto {\n total?: number;\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 height 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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantDesignDto {\n total?: number;\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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantMockupDto {\n total?: number;\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/** DTO, containing results of paged query. */\nexport interface PagedOfProductVariantDocumentDto {\n total?: number;\n items?: ProductVariantDocumentDto[] | null;\n}\n\n/** Parameters for setting product variants price. */\nexport interface ProductVariantPriceDto {\n /** Price. */\n price?: number | null;\n /** UIDs of variants for price setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants price setting operation parameters. */\nexport interface SetProductVariantPriceDto {\n /** List of product variants grouped by price value. */\n items?: ProductVariantPriceDto[] | null;\n}\n\n/** Parameters for setting product variants weight. */\nexport interface ProductVariantWeightDto {\n /** Weight. */\n weight?: number | null;\n /** UIDs of variants for price setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants weight setting operation parameters. */\nexport interface SetProductVariantWeightDto {\n /** List of product variants grouped by weight value. */\n items?: ProductVariantWeightDto[] | null;\n}\n\n/** Parameters for setting product variants availability. */\nexport interface ProductVariantAvailabilityDto {\n /** Availability. */\n availability?: boolean;\n /** UIDs of variants for availability setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants availability setting operation parameters. */\nexport interface SetProductVariantAvailabilityDto {\n /** List of product variants grouped by availability value. */\n items?: ProductVariantAvailabilityDto[] | null;\n}\n\n/** Parameters for setting product variants SKU. */\nexport interface ProductVariantSkuDto {\n /** SKU. */\n sku?: string | null;\n /** UIDs of variants for SKU setting. */\n variantUIDs?: string[] | null;\n}\n\n/** Product variants SKU setting operation parameters. */\nexport interface SetProductVariantSkuDto {\n /** List of product variants grouped by SKU value. */\n items?: ProductVariantSkuDto[] | null;\n}\n\n/** Product asset connection options description. */\nexport interface ProductAssetConnectionOptionsDto {\n /** Product option UID. */\n optionUID?: string | null;\n /** Product option values UIDs. */\n optionValueUIDs?: string[] | null;\n}\n\n/** Product design connection description. */\nexport interface ProductDesignConnectionDto {\n /** Design identifier. */\n designId?: string | null;\n /** Connection options. Set empty if design should be available for all product variants. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n}\n\n/** Product designs connections creation model. */\nexport interface CreateProductDesignConnectionsDto {\n /** Connection parameters list. */\n connections?: ProductDesignConnectionDto[] | null;\n}\n\n/** Product asset connection removing parameters. */\nexport interface RemoveProductAssetConnectionDto {\n /** Asset identifier. */\n assetId?: string | null;\n /** Connection options. Set empty if all product variants connections should be removed. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n}\n\n/** Product designs connections removing model. */\nexport interface RemoveProductDesignConnectionsDto {\n /** Connection parameters list. */\n connections?: RemoveProductAssetConnectionDto[] | null;\n}\n\n/** Product mockup type. */\nexport enum ProductMockupType {\n Thumbnail = \"Thumbnail\",\n Editor = \"Editor\",\n Preview = \"Preview\",\n}\n\n/** Product mockup connection description. */\nexport interface ProductMockupConnectionDto {\n /** Mockup identifier. */\n mockupId?: string | null;\n /** Connection options. Set empty if mockup should be available for all product variants. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n /** Product mockup types. Single mockup may be used as editor, preview and thumbnail mockup at the same time. */\n mockupTypes?: ProductMockupType[] | null;\n /** Product mockup target surfaces. Comma-separated surface indexes (\"1,2,3\") or `all` value may be set. */\n surfaces?: string | null;\n}\n\n/** Product mockups connections creation model. */\nexport interface CreateProductMockupConnectionsDto {\n /** Connection parameters list. */\n connections?: ProductMockupConnectionDto[] | null;\n}\n\n/** Product mockups connections removing model. */\nexport interface RemoveProductMockupConnectionsDto {\n /** Connection parameters list. */\n connections?: RemoveProductAssetConnectionDto[] | null;\n}\n\n/** Product document connection description. */\nexport interface ProductDocumentConnectionDto {\n /** Document identifier. */\n documentId?: string | null;\n /** Connection options. Set empty if document should be available for all product variants. */\n options?: ProductAssetConnectionOptionsDto[] | null;\n}\n\n/** Product documents connections creation model. */\nexport interface CreateProductDocumentConnectionsDto {\n /** Connection parameters list. */\n connections?: ProductDocumentConnectionDto[] | null;\n}\n\n/** Product documents connections removing model. */\nexport interface RemoveProductDocumentConnectionsDto {\n /** Connection parameters list. */\n connections?: RemoveProductAssetConnectionDto[] | 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 /** Workflow name. */\n name?: string | null;\n /** Workflow type. */\n workflowType?: WorkflowType;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfPersonalizationWorkflowDto {\n total?: number;\n items?: PersonalizationWorkflowDto[] | 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}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfProcessingPipelineDto {\n total?: number;\n items?: ProcessingPipelineDto[] | null;\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 /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfStorefrontDto {\n total?: number;\n items?: StorefrontDto[] | null;\n}\n\n/** Custom storefront creation model. */\nexport interface CreateCustomStorefrontDto {\n /** Storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Name of header that will be used to provide API key to target storefront system. */\n apiKeyHeaderName?: string | null;\n /** API key for target storefront system. */\n apiKey?: string | null;\n /** List of storefront shops URLs. */\n shopUrls: string[];\n}\n\n/** Custom storefront description. */\nexport interface CustomStorefrontDto {\n /** Name of header that will be used to provide API key to target storefront system. */\n apiKeyHeaderName?: string | null;\n /** API key for target storefront system. */\n apiKey?: string | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** NopCommerce storefront creation model. */\nexport interface CreateNopCommerceStorefrontDto {\n /** NopCommerce storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of NopCommerce shops URLs. */\n shopUrls: string[];\n /** NopCommerce back-end application URL. */\n backendUrl: string;\n}\n\n/** NopCommerce storefront settings. */\nexport interface NopCommerceSettingsDto {\n /** Customer's Canvas Asset Storage URL. */\n assetStorageUrl?: string | null;\n /** Customer's Canvas Asset Processor URL. */\n assetProcessorUrl?: string | null;\n /** Customer's Canvas tenant identifier. */\n tenantId?: number;\n /** Customer's Canvas storefront identifier. */\n storefrontId?: number;\n /** Customer's Canvas custom application client identifier. */\n clientId?: string | null;\n /** Customer's Canvas custom application client secret. */\n clientSecret?: string | null;\n /** NopCommerce plugin API key. */\n pluginApiKey?: string | null;\n}\n\n/** NopCommerce storefront description. */\nexport interface NopCommerceStorefrontDto {\n /** NopCommerce storefront settings. */\n settings?: NopCommerceSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** WooCommerce storefront creation model. */\nexport interface CreateWooCommerceStorefrontDto {\n /** WooCommerce storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of WooCommerce shops URLs. */\n shopUrls: string[];\n /** WooCommerce back-end application URL. */\n backendUrl: string;\n}\n\n/** WooCommerce storefront settings. */\nexport interface WooCommerceSettingsDto {\n /** Customer's Canvas Asset Storage URL. */\n assetStorageUrl?: string | null;\n /** Customer's Canvas Asset Processor URL. */\n assetProcessorUrl?: string | null;\n /** Customer's Canvas tenant identifier. */\n tenantId?: number;\n /** Customer's Canvas storefront identifier. */\n storefrontId?: number;\n /** Customer's Canvas custom application client identifier. */\n clientId?: string | null;\n /** Customer's Canvas custom application client secret. */\n clientSecret?: string | null;\n /** WooCommerce plugin API key. */\n pluginApiKey?: string | null;\n}\n\n/** WooCommerce storefront description. */\nexport interface WooCommerceStorefrontDto {\n /** WooCommerce storefront settings. */\n settings?: WooCommerceSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** Magento storefront creation model. */\nexport interface CreateMagentoStorefrontDto {\n /** Storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of Magento shops URLs. */\n shopUrls: string[];\n /** Magento back-end application URL. */\n backendUrl: string;\n /** Magento API key. */\n shopApiKey: string;\n /** Magento shop code. */\n shopCode?: string | null;\n}\n\n/** Magento storefront settings. */\nexport interface MagentoSettingsDto {\n /** Customer's Canvas Asset Storage URL. */\n assetStorageUrl?: string | null;\n /** Customer's Canvas Asset Processor URL. */\n assetProcessorUrl?: string | null;\n /** Customer's Canvas tenant identifier. */\n tenantId?: number;\n /** Customer's Canvas storefront identifier. */\n storefrontId?: number;\n /** Customer's Canvas custom application client identifier. */\n clientId?: string | null;\n /** Customer's Canvas custom application client secret. */\n clientSecret?: string | null;\n}\n\n/** Magento storefront description. */\nexport interface MagentoStorefrontDto {\n /** Magento storefront settings. */\n settings?: MagentoSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** BigCommerce storefront creation model. */\nexport interface CreateBigCommerceStorefrontDto {\n /** Storefront name. */\n name: string;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** List of shops URLs. */\n shopUrls: string[];\n /** BigCommerce access token. */\n accessToken: string;\n /** BigCommerce client name. */\n clientName: string;\n /** BigCommerce client identifier. */\n clientId: string;\n /** BigCommerce client secret. */\n clientSecret: string;\n /** BigCommerce integration name. */\n integrationName: string;\n /** BigCommerce API path. */\n apiPath: string;\n}\n\n/** BigCommerce storefront settings. */\nexport interface BigCommerceSettingsDto {\n /** BigCommerce access token. */\n accessToken?: string | null;\n /** BigCommerce client name. */\n bigCommerceClientName?: string | null;\n /** BigCommerce API path. */\n apiPath?: string | null;\n /** BigCommerce client secret. */\n bigCommerceClientSecret?: string | null;\n /** BigCommerce client identifier. */\n bigCommerceClientId?: string | null;\n /** BigCommerce integration name. */\n integrationName?: string | null;\n}\n\n/** BigCommerce storefront description. */\nexport interface BigCommerceStorefrontDto {\n /** BigCommerce integration settings. */\n settings?: BigCommerceSettingsDto | null;\n /** Storefront identifier. */\n id?: number;\n /** Tenant identifier. */\n tenantId?: number;\n /** Storefront name. */\n name?: string | null;\n /** Status of project that should become a trigger to start project items processing automatically. */\n processingPipelinesTriggerProjectStatus?: number | null;\n /** Identifier of pipeline that should be used for post-processing for projects when all project items are processed. */\n postProcessingPipelineId?: number | null;\n /** Storefront ecommerce system type. */\n type?: StorefrontType;\n /** Storefront entity creation date and time. */\n created?: string;\n /** Connected shops URLs. */\n shopUrls?: string[] | null;\n}\n\n/** Tenant user description. */\nexport interface TenantUserDto {\n /** User identifier. */\n id?: number;\n /** User login. */\n login?: string | null;\n /** User email address. */\n email?: string | null;\n /** User first name. */\n firstName?: string | null;\n /** User last name. */\n lastName?: string | null;\n /** User status. */\n isActive?: boolean;\n /** User roles. */\n roleNames?: string[] | null;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfTenantUserDto {\n total?: number;\n items?: TenantUserDto[] | null;\n}\n\n/** Tenant user creation model. */\nexport interface CreateTenantUserDto {\n /** User login (up to 256 symbols). */\n login: string;\n /** User first name (up to 64 symbols). */\n firstName: string;\n /** User last name (up to 64 symbols). */\n lastName: string;\n /** User email address (up to 256 symbols). */\n email: string;\n /** User status. */\n isActive?: boolean;\n /** User roles (e.g. 'Admin', 'User'). */\n roleNames?: string[] | null;\n /** User password (up to 32 symbols). */\n password: string;\n}\n\n/** Tenant user role description. */\nexport interface TenantUserRoleDto {\n /** Role identifier. */\n id?: number;\n /** Role name. */\n name?: string | null;\n}\n\n/** DTO, containing results of paged query. */\nexport interface PagedOfTenantUserRoleDto {\n total?: number;\n items?: TenantUserRoleDto[] | null;\n}\n\nexport interface FileParameter {\n data: any;\n fileName: string;\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 return _observableThrow(new ApiException(message, status, response, headers, result));\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 BackOfficeApiClient from './backoffice-api-client';\n\n// @dynamic\nexport function CreateApiClientConfiguration(token: string, apiUrl: string, apiKey: string = 'ApiKey'): BackOfficeApiClient.ApiClientConfiguration {\n const apiConf = new BackOfficeApiClient.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 BackOfficeModule {\n static forRoot(token: string, apiUrl: string, apiKey: string = 'ApiKey'): ModuleWithProviders<BackOfficeModule> {\n return {\n ngModule: BackOfficeModule,\n providers: [\n {\n provide: BackOfficeApiClient.API_BASE_URL,\n useValue: apiUrl\n },\n {\n provide: BackOfficeApiClient.ApiClientConfiguration,\n useFactory: CreateApiClientConfiguration.bind(this, token , apiUrl, apiKey)\n },\n ]\n };\n }\n}\n","/*\n * Public API Surface of client\n */\n\nexport * from './lib/backoffice.module';\nexport * from './lib/backoffice-api-client';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_observableFrom","_observableMergeMap","_observableCatch","_observableThrow","_observableOf","BackOfficeApiClient.ApiClientConfiguration","BackOfficeApiClient.API_BASE_URL"],"mappings":"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"}
|