/* eslint-disable */
/* tslint:disable */
/*
 * ---------------------------------------------------------------
 * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##
 * ##                                                           ##
 * ## AUTHOR: acacode                                           ##
 * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##
 * ---------------------------------------------------------------
 */

import {
  AccountSummary,
  Address,
  AddressList,
  AddressValidation,
  AddToCartParams,
  AnnualExpensesSummary,
  ApplePayPayment,
  ApplePayPaymentContact,
  ApplePayPaymentRequest,
  ApplePayShippingMethod,
  ApplePayShippingMethodUpdate,
  B2BApprovalProcessList,
  B2BCostCenter,
  B2BCostCenterList,
  B2BPaymentTypeList,
  B2BSelectionData,
  B2BUnit,
  B2BUnitNode,
  B2BUnitNodeList,
  BaseStore,
  BasicnotificationPreferenceList,
  Budget,
  BudgetList,
  CancellationRequestEntryInputList,
  CardTypeList,
  Cart,
  CartGeneratorParameter,
  CartList,
  CartModification,
  CartModificationList,
  Catalog,
  CatalogList,
  CatalogVersion,
  CategoryHierarchy,
  CategorySpendSummary,
  CDSConfiguration,
  CMSPage,
  CMSPageList,
  Component,
  ComponentIDList,
  ComponentList,
  ConsentTemplate,
  ConsentTemplateList,
  ConsignmentTracking,
  Conversation,
  ConversationList,
  ConversationMessageList,
  CountryList,
  CouponRedemptionResponseList,
  CreateComment,
  CreateVerificationTokenInput,
  CurrencyList,
  CustomerCoupon2Customer,
  CustomerCouponNotification,
  CustomerCouponSearchResult,
  CustomerInterestsSearchPage,
  CxaiConfigData,
  DeliveryMode,
  DeliveryModeList,
  EmarsysConfig,
  EnumData,
  ErrorList,
  GdmCdpConfiguration,
  GiftCard,
  GiftCardList,
  GiftCardPayment,
  GigyaConfig,
  GooglePayConfig,
  GooglePayIntermediateAddress,
  GooglePayResponsePayment,
  GooglePayShippingMethodConfig,
  GTMConfig,
  Image,
  LanguageList,
  LocalizedLabel,
  LoyaltyConfig,
  LoyaltyPlanType,
  MemberList,
  MerchantSession,
  MultiValueMapStringString,
  MyRecipesSummary,
  NestedFlexibleRuleData,
  Notification,
  NotificationList,
  NotificationPreferenceList,
  NutritionFacts,
  Order,
  OrderApproval,
  OrderApprovalDecision,
  OrderApprovalList,
  OrderApprovalPermission,
  OrderApprovalPermissionList,
  OrderApprovalPermissionTypeList,
  OrderEntry,
  OrderEntryList,
  OrderHistoryList,
  OrderImproveParameter,
  OrderStatusUpdateElementList,
  OrgCustomerCreation,
  OrgCustomerModification,
  OrgDocumentList,
  OrgUnitUserGroup,
  OrgUnitUserGroupList,
  OrgUnitUserList,
  OrgUserRegistrationData,
  PasswordRestoreTokenInput,
  PaymentDetails,
  PaymentDetailsList,
  PaymentModeList,
  PaymentRequest,
  PickUpInStore,
  PointOfService,
  PointOfServiceList,
  PPSCustomerLoyaltyCard,
  PPSProductPrice,
  Product,
  ProductExpressUpdateElementList,
  ProductFutureStocks,
  ProductFutureStocksList,
  ProductInterestRelation,
  ProductList,
  ProductReferenceList,
  ProductSearchPage,
  Promotion,
  PromotionList,
  PromotionResultList,
  PropertyList,
  PurchaseHistoryList,
  PurchaseSummaryList,
  QualtricsConfiguration,
  Quote,
  QuoteAction,
  QuoteDiscount,
  QuoteList,
  QuoteMetadata,
  QuoteStarter,
  Recipe,
  RegionList,
  ReplaceLoginIdInput,
  ReplacePasswordInput,
  ReplenishmentEdit,
  ReplenishmentOrder,
  ReplenishmentOrderList,
  ResetPassword,
  ReturnRequest,
  ReturnRequestEntryInputList,
  ReturnRequestList,
  ReturnRequestModification,
  Review,
  ReviewList,
  SAPAccessCode,
  SAPAccessCodePublicKey,
  SAPAvailability,
  SAPCustomerCouponOperationRequest,
  SAPGuestUserRequest,
  SAPInvoiceList,
  SAPSavedCartRequest,
  SAPVoucherOperationRequest,
  SAPVoucherRequest,
  SaveCartResult,
  ScheduleReplenishmentForm,
  SiteMessageSearchResult,
  SopPaymentDetails,
  StartSessionRequest,
  Stock,
  StoreCountList,
  StoreFinderSearchPage,
  StoreFinderStockSearchPage,
  StoryBookItem,
  StoryBookLayout,
  Stylesheet,
  SuggestionList,
  Ticket,
  TicketAssociatedObjectList,
  TicketCategoryList,
  TicketEvent,
  TicketEventAttachment,
  TicketList,
  TicketStarter,
  TitleList,
  User,
  UserGroup,
  UserGroupList,
  UserSignUp,
  VerificationToken,
  Voucher,
  VoucherList,
  WeeklyMealPlanner,
  WeeklyMealPlannerDay,
} from "./data-contracts";
import { ContentType, HttpClient, RequestParams } from "./http-client";

export class BaseSiteId<SecurityDataType = unknown> extends HttpClient<SecurityDataType> {
  /**
   * @description Retrieves the public key used to verify the authenticity and integrity of the generated accessCode. AccessCodes are used to securely enable access to resources supporting the generation of an accessCode.
   *
   * @tags Access Code
   * @name GetAccessCodePublicKey
   * @summary Retrieves the public key to verify the access code.
   * @request GET:/{baseSiteId}/accessCode/publicKey
   * @secure
   */
  getAccessCodePublicKey = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<SAPAccessCodePublicKey, ErrorList>({
      path: `/${baseSiteId}/accessCode/publicKey`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name GetMerchantIdentifier
   * @request GET:/{baseSiteId}/applepay/merchantIdentifier
   * @secure
   */
  getMerchantIdentifier = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/applepay/merchantIdentifier`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name CreateSession
   * @request POST:/{baseSiteId}/applepay/session/create
   * @secure
   */
  createSession = (baseSiteId: string, data: StartSessionRequest, params: RequestParams = {}) =>
    this.request<MerchantSession, ErrorList>({
      path: `/${baseSiteId}/applepay/session/create`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the base store.
   *
   * @tags Base Stores
   * @name GetBaseStore
   * @summary Retrieves a base store.
   * @request GET:/{baseSiteId}/basestores/{baseStoreUid}
   * @secure
   */
  getBaseStore = (
    baseSiteId: string,
    baseStoreUid: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<BaseStore, ErrorList>({
      path: `/${baseSiteId}/basestores/${baseStoreUid}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the payment card types defined for the base store.
   *
   * @tags Miscs
   * @name GetCardTypes
   * @summary Retrieves a list of supported payment card types.
   * @request GET:/{baseSiteId}/cardtypes
   * @secure
   */
  getCardTypes = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CardTypeList, ErrorList>({
      path: `/${baseSiteId}/cardtypes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Cart Generator Controller
   * @name Generate1
   * @request POST:/{baseSiteId}/cart-generator/generate
   * @secure
   */
  generate1 = (baseSiteId: string, data: CartGeneratorParameter, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/cart-generator/generate`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Catalogs
   * @name GetCatalogs
   * @summary Retrieves a list of catalogs.
   * @request GET:/{baseSiteId}/catalogs
   * @secure
   */
  getCatalogs = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CatalogList, ErrorList>({
      path: `/${baseSiteId}/catalogs`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves information about the catalog using catalog identifier.
   *
   * @tags Catalogs
   * @name GetCatalog
   * @summary Retrieves a catalog.
   * @request GET:/{baseSiteId}/catalogs/{catalogId}
   * @secure
   */
  getCatalog = (
    baseSiteId: string,
    catalogId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Catalog, ErrorList>({
      path: `/${baseSiteId}/catalogs/${catalogId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves information about the catalog version using catalog identifier and catalog version identifier.
   *
   * @tags Catalogs
   * @name GetCatalogVersion
   * @summary Retrieves information about the catalog version.
   * @request GET:/{baseSiteId}/catalogs/{catalogId}/{catalogVersionId}
   * @secure
   */
  getCatalogVersion = (
    baseSiteId: string,
    catalogId: string,
    catalogVersionId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CatalogVersion, ErrorList>({
      path: `/${baseSiteId}/catalogs/${catalogId}/${catalogVersionId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves information about the category that exists in a catalog version available.
   *
   * @tags Catalogs
   * @name GetCategories
   * @summary Retrieves information about the category.
   * @request GET:/{baseSiteId}/catalogs/{catalogId}/{catalogVersionId}/categories/{categoryId}
   * @secure
   */
  getCategories = (
    baseSiteId: string,
    catalogId: string,
    catalogVersionId: string,
    categoryId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CategoryHierarchy, ErrorList>({
      path: `/${baseSiteId}/catalogs/${catalogId}/${catalogVersionId}/categories/${categoryId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of products and related product search data, such as available facets, available sorting, and spelling suggestions, for a category. To enable spelling suggestions, you need to have indexed properties configured to be used for spell checking.
   *
   * @tags B2B Categories
   * @name GetProductsByCategory
   * @summary Retrieves a list of products for a category.
   * @request GET:/{baseSiteId}/categories/{categoryId}/products
   * @secure
   */
  getProductsByCategory = (
    baseSiteId: string,
    categoryId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Formatted query string. It contains query criteria like free text search, facet. The format is <freeTextSearch>:<sort>:<facetKey1>:<facetValue1>:...:<facetKeyN>:<facetValueN>. */
      query?: string;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductSearchPage, ErrorList>({
      path: `/${baseSiteId}/categories/${categoryId}/products`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags cds-configuration-controller
   * @name GetCdsConfiguration1
   * @request GET:/{baseSiteId}/cds/configuration
   * @secure
   */
  getCdsConfiguration1 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<CDSConfiguration, ErrorList>({
      path: `/${baseSiteId}/cds/configuration`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the CMS components using the specified identifiers. If you don't provide any component identifiers, all of the components will be retrieved. The components list is filtered by the specified catalog, product, or category restrictions. The result is sorted according to the sort parameter.
   *
   * @tags Components
   * @name GetComponentsByIds
   * @summary Retrieves the component data.
   * @request GET:/{baseSiteId}/cms/components
   * @deprecated
   * @secure
   */
  getComponentsByIds = (
    baseSiteId: string,
    query?: {
      /**
       * Catalog code
       * @example "electronics"
       */
      catalogCode?: string;
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /**
       * List of Component identifiers
       * @example "FacebookLink,ContactUsLink"
       */
      componentIds?: string[];
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Number of results returned per page. Default value: 10.
       * @format int32
       * @default 10
       */
      pageSize?: number;
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
      /**
       * Sorting method applied to the return results.
       * @example "uid:asc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ComponentList, ErrorList>({
      path: `/${baseSiteId}/cms/components`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Components
   * @name SearchComponentsByIds
   * @summary Retrieves the component data.
   * @request POST:/{baseSiteId}/cms/components
   * @deprecated
   * @secure
   */
  searchComponentsByIds = (
    baseSiteId: string,
    data: ComponentIDList,
    query?: {
      /**
       * Catalog code
       * @example "electronics"
       */
      catalogCode?: string;
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Number of results returned per page. Default value: 10.
       * @format int32
       * @default 10
       */
      pageSize?: number;
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
      /**
       * Sorting method applied to the return results.
       * @example "uid:asc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ComponentList, ErrorList>({
      path: `/${baseSiteId}/cms/components`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the CMS component data.
   *
   * @tags Components
   * @name GetComponentById
   * @summary Retrieves the component data.
   * @request GET:/{baseSiteId}/cms/components/{componentId}
   * @deprecated
   * @secure
   */
  getComponentById = (
    baseSiteId: string,
    componentId: string,
    query?: {
      /**
       * Catalog code
       * @example "electronics"
       */
      catalogCode?: string;
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Component, ErrorList>({
      path: `/${baseSiteId}/cms/components/${componentId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the page data and CMS content slots using the pageLabel/pageId or the code parameter. If you don't provide a value for one of these parameters, the homepage CMS content slots are retrieved. Content pages can be filtered using pageLabel/pageId while the other page types can be filtered using the specified code.
   *
   * @tags Pages
   * @name GetPage
   * @summary Retrieves the page data and the CMS content slots.
   * @request GET:/{baseSiteId}/cms/pages
   * @deprecated
   * @secure
   */
  getPage = (
    baseSiteId: string,
    query?: {
      /** Page code. Examples: homepage, electronics, cameras, 585. */
      code?: string;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Page id. When pageId is provided, pageLabelOrId will be ignored.
       * @example "cartPage"
       */
      pageId?: string;
      /**
       * Page label. If no page has a label that matches the page label exactly, try to find pages whose label starts with a section of the page label.
       * Note: URL encoding on the page label should be applied when the label contains special characters. When pageLabel is provided, pageLabelOrId will be ignored.
       * @example "/cart"
       */
      pageLabel?: string;
      /**
       * Page Label or Id. If no page has a label that matches the page label exactly, try to find pages whose label starts with a section of the page label. Otherwise, try to find the page by id.
       * When label and ID values can match, passing in the pageId parameter may result in obtaining variation pages with the same pageLabel but different pageId. Therefore, it is advisable to use both the pageId and pageLabel parameters to ensure accuracy.Note: URL encoding on the page label should be applied when the label contains special characters.
       * @deprecated
       * @example "/cart"
       */
      pageLabelOrId?: string;
      /** Page type */
      pageType?: "ContentPage" | "ProductPage" | "CategoryPage" | "CatalogPage";
    },
    params: RequestParams = {},
  ) =>
    this.request<CMSPage, ErrorList>({
      path: `/${baseSiteId}/cms/pages`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the page data and CMS content slots, each of which contains a list of CMS component data. The page identifier is required.
   *
   * @tags Pages
   * @name GetPageById
   * @summary Retrieves the page data and CMS content slots using the page identifier.
   * @request GET:/{baseSiteId}/cms/pages/{pageId}
   * @deprecated
   * @secure
   */
  getPageById = (
    baseSiteId: string,
    pageId: string,
    query?: {
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CMSPage, ErrorList>({
      path: `/${baseSiteId}/cms/pages/${pageId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Pages
   * @name GetAllPages
   * @summary Retrieves the page data.
   * @request GET:/{baseSiteId}/cms/sitepages
   * @deprecated
   * @secure
   */
  getAllPages = (
    baseSiteId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Number of results returned per page. Default value: 10.
       * @format int32
       * @default 10
       */
      pageSize?: number;
      /** Page type. */
      pageType?: "ContentPage" | "ProductPage" | "CategoryPage" | "CatalogPage";
      /**
       * Sorting method applied to the return results.
       * @example "uid:asc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CMSPageList, ErrorList>({
      path: `/${baseSiteId}/cms/sitepages`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags B2B Cost Centers
   * @name GetActiveCostCenters
   * @summary Retrieves active cost centers.
   * @request GET:/{baseSiteId}/costcenters
   * @secure
   */
  getActiveCostCenters = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BCostCenterList, ErrorList>({
      path: `/${baseSiteId}/costcenters`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags B2B Cost Centers
   * @name CreateCostCenter
   * @summary Creates a cost center.
   * @request POST:/{baseSiteId}/costcenters
   * @secure
   */
  createCostCenter = (
    baseSiteId: string,
    data: B2BCostCenter,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BCostCenter, ErrorList>({
      path: `/${baseSiteId}/costcenters`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the cost center details.
   *
   * @tags B2B Cost Centers
   * @name GetCostCenter
   * @summary Retrieves the cost center.
   * @request GET:/{baseSiteId}/costcenters/{costCenterCode}
   * @secure
   */
  getCostCenter = (
    baseSiteId: string,
    costCenterCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BCostCenter, ErrorList>({
      path: `/${baseSiteId}/costcenters/${costCenterCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the cost center. Only the attributes provided in the request body will be changed.
   *
   * @tags B2B Cost Centers
   * @name UpdateCostCenter
   * @summary Updates the cost center.
   * @request PATCH:/{baseSiteId}/costcenters/{costCenterCode}
   * @secure
   */
  updateCostCenter = (
    baseSiteId: string,
    costCenterCode: string,
    data: B2BCostCenter,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BCostCenter, ErrorList>({
      path: `/${baseSiteId}/costcenters/${costCenterCode}`,
      method: "PATCH",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags B2B Cost Centers
   * @name GetBudgetsForCostCenter
   * @summary Retrieves all budgets and certain budgets associated with the specified cost center.
   * @request GET:/{baseSiteId}/costcenters/{costCenterCode}/budgets
   * @secure
   */
  getBudgetsForCostCenter = (
    baseSiteId: string,
    costCenterCode: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<BudgetList, ErrorList>({
      path: `/${baseSiteId}/costcenters/${costCenterCode}/budgets`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags B2B Cost Centers
   * @name DoAddBudgetToCostCenter
   * @summary Creates a budget for the cost center.
   * @request POST:/{baseSiteId}/costcenters/{costCenterCode}/budgets
   * @secure
   */
  doAddBudgetToCostCenter = (
    baseSiteId: string,
    costCenterCode: string,
    query: {
      /**
       * Budget that will be added to a specific cost center.
       * @example "Weekly_2_5K_USD"
       */
      budgetCode: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/costcenters/${costCenterCode}/budgets`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags B2B Cost Centers
   * @name RemoveBudgetFromCostCenter
   * @summary Deletes the budget from a cost center.
   * @request DELETE:/{baseSiteId}/costcenters/{costCenterCode}/budgets/{budgetCode}
   * @secure
   */
  removeBudgetFromCostCenter = (
    baseSiteId: string,
    budgetCode: string,
    costCenterCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/costcenters/${costCenterCode}/budgets/${budgetCode}`,
      method: "DELETE",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of cost centers.
   *
   * @tags B2B Cost Centers
   * @name GetCostCenters
   * @summary Retrieves the cost centers.
   * @request GET:/{baseSiteId}/costcentersall
   * @secure
   */
  getCostCenters = (
    baseSiteId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BCostCenterList, ErrorList>({
      path: `/${baseSiteId}/costcentersall`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of shipping or billing countries. Set the type parameter to SHIPPING to retrieve the shipping countries. Set the type parameter to BILLING to retrieve the billing countries. Leave the type parameter blank to retrieve all of the countries. The list is sorted alphabetically.
   *
   * @tags Countries
   * @name GetCountries
   * @summary Retrieves a list of countries.
   * @request GET:/{baseSiteId}/countries
   * @secure
   */
  getCountries = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** The type of countries. */
      type?: "SHIPPING" | "BILLING";
    },
    params: RequestParams = {},
  ) =>
    this.request<CountryList, ErrorList>({
      path: `/${baseSiteId}/countries`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the list of regions in a country.
   *
   * @tags Countries
   * @name GetCountryRegions
   * @summary Retrieves a list of regions.
   * @request GET:/{baseSiteId}/countries/{countyIsoCode}/regions
   * @secure
   */
  getCountryRegions = (
    baseSiteId: string,
    countyIsoCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<RegionList, ErrorList>({
      path: `/${baseSiteId}/countries/${countyIsoCode}/regions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of available currencies for the current base store. If the currency list is empty, all of the currencies available in the system are returned.
   *
   * @tags Miscs
   * @name GetCurrencies
   * @summary Retrieves a list of available currencies.
   * @request GET:/{baseSiteId}/currencies
   * @secure
   */
  getCurrencies = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CurrencyList, ErrorList>({
      path: `/${baseSiteId}/currencies`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the subgroup information of a customer group. To perform this call, you must be an authorized member of the customermanagergroup.
   *
   * @tags Customer Groups
   * @name GetCustomerGroups
   * @summary Retrieves the subgroups of a customer group.
   * @request GET:/{baseSiteId}/customergroups
   * @secure
   */
  getCustomerGroups = (
    baseSiteId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<UserGroupList, ErrorList>({
      path: `/${baseSiteId}/customergroups`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a new customer group that is a direct subgroup of a customergroup. To try out the methods of the Customer Groups controller, you must authorize a user who belongs to the “customermanagergroup”.
   *
   * @tags Customer Groups
   * @name CreateCustomerGroup
   * @summary Creates a new customer group.
   * @request POST:/{baseSiteId}/customergroups
   * @secure
   */
  createCustomerGroup = (baseSiteId: string, data: UserGroup, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/customergroups`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves a customer group. To try out the methods of the customer groups controller, authorize a customer who belongs to the customermanagergroup.
   *
   * @tags Customer Groups
   * @name GetCustomerGroup
   * @summary Retrieves a customer group.
   * @request GET:/{baseSiteId}/customergroups/{groupId}
   * @secure
   */
  getCustomerGroup = (
    baseSiteId: string,
    groupId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<UserGroup, ErrorList>({
      path: `/${baseSiteId}/customergroups/${groupId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Sets members for a user group. The list of existing members is overwritten with a new one. To try out the methods of the Customer Groups controller, you must authorize a user who belongs to the “customermanagergroup”.
   *
   * @tags Customer Groups
   * @name ReplaceUsersForCustomerGroup
   * @summary Sets members for a user group.
   * @request PUT:/{baseSiteId}/customergroups/{groupId}/members
   * @secure
   */
  replaceUsersForCustomerGroup = (baseSiteId: string, groupId: string, data: MemberList, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/customergroups/${groupId}/members`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Assigns members to a customer group. To perform this call, you must be an authorized member of the customermanagergroup.
   *
   * @tags Customer Groups
   * @name UpdateCustomerGroupWithUsers
   * @summary Assigns members to a customer group.
   * @request PATCH:/{baseSiteId}/customergroups/{groupId}/members
   * @secure
   */
  updateCustomerGroupWithUsers = (baseSiteId: string, groupId: string, data: MemberList, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/customergroups/${groupId}/members`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Deletes the customer from a customer group. To try out the methods in the customer groups controller, authorize a customer who belongs to the customermanagergroup.
   *
   * @tags Customer Groups
   * @name RemoveUsersFromCustomerGroup
   * @summary Deletes the customer from a customer group.
   * @request DELETE:/{baseSiteId}/customergroups/{groupId}/members/{userId}
   * @secure
   */
  removeUsersFromCustomerGroup = (baseSiteId: string, groupId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/customergroups/${groupId}/members/${userId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags ask-product-api-controller
   * @name HandleRequest
   * @request POST:/{baseSiteId}/cxai/ask-product
   * @secure
   */
  handleRequest = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/ask-product`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest15
   * @request GET:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest15 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest18
   * @request PUT:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest18 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "PUT",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest17
   * @request POST:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest17 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest20
   * @request DELETE:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest20 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "DELETE",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest21
   * @request OPTIONS:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest21 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "OPTIONS",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest16
   * @request HEAD:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest16 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "HEAD",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags assistant-api-controller
   * @name HandleRequest19
   * @request PATCH:/{baseSiteId}/cxai/assistant/**
   * @secure
   */
  handleRequest19 = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/cxai/assistant/**`,
      method: "PATCH",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags cxaiocc-controller
   * @name GetConfig1
   * @request GET:/{baseSiteId}/cxai/config
   * @secure
   */
  getConfig1 = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CxaiConfigData, ErrorList>({
      path: `/${baseSiteId}/cxai/config`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags cxaiocc-controller
   * @name GetConfigForCode
   * @request GET:/{baseSiteId}/cxai/config/{code}
   * @secure
   */
  getConfigForCode = (
    code: string,
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CxaiConfigData, ErrorList>({
      path: `/${baseSiteId}/cxai/config/${code}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags cx-ai-image-controller
   * @name UploadImage2
   * @request POST:/{baseSiteId}/cxai/image/upload/{sid}
   * @secure
   */
  uploadImage2 = (
    sid: string,
    baseSiteId: string,
    data: {
      /** @format binary */
      file: File;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/cxai/image/upload/${sid}`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.FormData,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags cx-ai-image-controller
   * @name GetImage2
   * @request GET:/{baseSiteId}/cxai/image/{sid}
   * @secure
   */
  getImage2 = (sid: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Image, ErrorList>({
      path: `/${baseSiteId}/cxai/image/${sid}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags cx-ai-image-controller
   * @name DeleteImage2
   * @request DELETE:/{baseSiteId}/cxai/image/{sid}
   * @secure
   */
  deleteImage2 = (sid: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/cxai/image/${sid}`,
      method: "DELETE",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of the supported delivery countries for the current store. The list is sorted alphabetically.
   *
   * @tags Miscs
   * @name GetDeliveryCountries
   * @summary Retrieves a list of shipping countries.
   * @request GET:/{baseSiteId}/deliverycountries
   * @deprecated
   * @secure
   */
  getDeliveryCountries = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CountryList, ErrorList>({
      path: `/${baseSiteId}/deliverycountries`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-automation-controller
   * @name CreateEmarsysConfig
   * @request POST:/{baseSiteId}/emarsys/automation/create-emarsys-config
   * @secure
   */
  createEmarsysConfig = (
    baseSiteId: string,
    query: {
      merchantId: string;
      secretId?: string;
      userName?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/emarsys/automation/create-emarsys-config`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-automation-controller
   * @name CreateUser1
   * @request POST:/{baseSiteId}/emarsys/automation/create-user
   * @secure
   */
  createUser1 = (
    baseSiteId: string,
    query: {
      password: string;
      userName: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/emarsys/automation/create-user`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-automation-controller
   * @name DeleteEmarsysConfig
   * @request DELETE:/{baseSiteId}/emarsys/automation/delete-emarsys-config
   * @secure
   */
  deleteEmarsysConfig = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/emarsys/automation/delete-emarsys-config`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-data-controller
   * @name GetCategoryPath
   * @request GET:/{baseSiteId}/emarsys/category-path/{categoryCode}
   * @secure
   */
  getCategoryPath = (categoryCode: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/emarsys/category-path/${categoryCode}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-data-controller
   * @name GetLoyaltyPlanTypes
   * @request GET:/{baseSiteId}/emarsys/loyalty/plan-types
   * @secure
   */
  getLoyaltyPlanTypes = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<LoyaltyPlanType[], ErrorList>({
      path: `/${baseSiteId}/emarsys/loyalty/plan-types`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves all of the products or only the products that were modified after the time in the timestamp parameter.
   *
   * @tags Export
   * @name GetExportedProducts
   * @summary Retrieves a list of exported products.
   * @request GET:/{baseSiteId}/export/products
   * @secure
   */
  getExportedProducts = (
    baseSiteId: string,
    query?: {
      /** Only products from this catalog are returned. The catalog must be provided along with the version. */
      catalog?: string;
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Only products that are more recent than the given parameter are returned. The value should be in ISO-8601 format: 2018-01-09T16:28:45+0000. */
      timestamp?: string;
      /** Only products from this catalog version are returned. The catalog version must be provided along with the catalog. */
      version?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductList, ErrorList>({
      path: `/${baseSiteId}/export/products`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the orders that have changed status. Only the properties from the current baseSite that have been updated after the specified timestamp are returned.
   *
   * @tags Feeds
   * @name GetOrderStatusFeed
   * @summary Retrieves a list of orders with status updates.
   * @request GET:/{baseSiteId}/feeds/orders/statusfeed
   * @secure
   */
  getOrderStatusFeed = (
    baseSiteId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Only items newer than the given parameter are retrieved. This parameter should be in ISO-8601 format (for example, 2018-01-09T16:28:45+0000). */
      timestamp: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderStatusUpdateElementList, ErrorList>({
      path: `/${baseSiteId}/feeds/orders/statusfeed`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a token so that customers can restore their forgotten passwords. This endpoint is deprecated in the 2211.24 update and its deletion is planned. Please use the POST /{baseSiteId}/passwordRestoreToken instead.
   *
   * @tags Forgotten Passwords
   * @name DoRestorePassword
   * @summary Creates a token to restore a forgotten password.
   * @request POST:/{baseSiteId}/forgottenpasswordtokens
   * @deprecated
   * @secure
   */
  doRestorePassword = (
    baseSiteId: string,
    query: {
      /** Customer's user id. Customer user id is case insensitive. */
      userId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/forgottenpasswordtokens`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags gdm-cdp-configuration-controller
   * @name GetGdmCdpConfiguration
   * @request GET:/{baseSiteId}/gdmcdp/config
   * @secure
   */
  getGdmCdpConfiguration = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<GdmCdpConfiguration, ErrorList>({
      path: `/${baseSiteId}/gdmcdp/config`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gigya-configuration-controller
   * @name GetCdsConfiguration
   * @request GET:/{baseSiteId}/gigya/configuration
   * @secure
   */
  getCdsConfiguration = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<GigyaConfig, ErrorList>({
      path: `/${baseSiteId}/gigya/configuration`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags google-pay-controller
   * @name GetGooglePayConfig
   * @request GET:/{baseSiteId}/googlepay/config
   * @secure
   */
  getGooglePayConfig = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<GooglePayConfig, ErrorList>({
      path: `/${baseSiteId}/googlepay/config`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gtm-controller
   * @name GetConfig
   * @request GET:/{baseSiteId}/gtm/config
   * @secure
   */
  getConfig = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<GTMConfig, ErrorList>({
      path: `/${baseSiteId}/gtm/config`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Validates the decision of the merchant. Note: The execution of the “Try it out” button always returns an error because the merchant callback controller handles parameters differently depending on which payment provider is used.
   *
   * @tags Merchant Callback
   * @name DoHandleMerchantCallback
   * @summary Validates the decision of the merchant.
   * @request POST:/{baseSiteId}/integration/merchant_callback
   * @secure
   */
  doHandleMerchantCallback = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/integration/merchant_callback`,
      method: "POST",
      secure: true,
      ...params,
    });
  /**
   * @description Handles and validates the decision of the merchant for a cart.The PaymentSubscriptionResult is stored for the cart. Note: The execution of the “Try it out” button always returns an error because the merchant callback controller handles parameters differently, depending on which payment provider is used.
   *
   * @tags Merchant Callback
   * @name DoHandleCartMerchantCallback
   * @summary Validates the decision of the merchant for a SOP payment related to a cart.
   * @request POST:/{baseSiteId}/integration/users/{userId}/carts/{cartId}/payment/sop/response
   * @secure
   */
  doHandleCartMerchantCallback = (baseSiteId: string, cartId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/integration/users/${userId}/carts/${cartId}/payment/sop/response`,
      method: "POST",
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves a list of the available languages of the base store. If the language list is empty, all of the languages available in the system are returned.
   *
   * @tags Miscs
   * @name GetLanguages
   * @summary Retrieves a list of available languages.
   * @request GET:/{baseSiteId}/languages
   * @secure
   */
  getLanguages = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<LanguageList, ErrorList>({
      path: `/${baseSiteId}/languages`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Sends a message, which creates a conversation and returns the conversation data.
   *
   * @tags Message Center
   * @name SendMessage
   * @summary Sends a message.
   * @request POST:/{baseSiteId}/messagecenter/im/conversations
   * @secure
   */
  sendMessage = (baseSiteId: string, data: ConversationMessageList, params: RequestParams = {}) =>
    this.request<Conversation, ErrorList>({
      path: `/${baseSiteId}/messagecenter/im/conversations`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the unassigned or open conversations of the current customer service agent.
   *
   * @tags Message Center
   * @name GetConversationsForAgent
   * @summary Retrieves the unassigned or open conversations.
   * @request GET:/{baseSiteId}/messagecenter/im/conversations/agentconversations
   * @secure
   */
  getConversationsForAgent = (
    baseSiteId: string,
    query: {
      /** Conversation status. */
      status: "open" | "unassigned";
    },
    params: RequestParams = {},
  ) =>
    this.request<ConversationList, ErrorList>({
      path: `/${baseSiteId}/messagecenter/im/conversations/agentconversations`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the conversations of the current customer.
   *
   * @tags Message Center
   * @name GetConversationsForCustomer
   * @summary Retrieves the conversations.
   * @request GET:/{baseSiteId}/messagecenter/im/conversations/customerconversations
   * @secure
   */
  getConversationsForCustomer = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<ConversationList, ErrorList>({
      path: `/${baseSiteId}/messagecenter/im/conversations/customerconversations`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Closes an open conversation and returns the conversation data.
   *
   * @tags Message Center
   * @name CloseConversation
   * @summary Closes an open conversation.
   * @request PATCH:/{baseSiteId}/messagecenter/im/conversations/{conversationId}/close
   * @secure
   */
  closeConversation = (baseSiteId: string, conversationId: string, params: RequestParams = {}) =>
    this.request<Conversation, ErrorList>({
      path: `/${baseSiteId}/messagecenter/im/conversations/${conversationId}/close`,
      method: "PATCH",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the messages of a specific conversation for the current customer or current customer support agent.
   *
   * @tags Message Center
   * @name GetMessagesForConversation
   * @summary Retrieves the messages of a specific conversation.
   * @request GET:/{baseSiteId}/messagecenter/im/conversations/{conversationId}/messages
   * @secure
   */
  getMessagesForConversation = (baseSiteId: string, conversationId: string, params: RequestParams = {}) =>
    this.request<ConversationMessageList, ErrorList>({
      path: `/${baseSiteId}/messagecenter/im/conversations/${conversationId}/messages`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Picks an unassigned conversation and returns the conversation data.
   *
   * @tags Message Center
   * @name PickConversation
   * @summary Picks an unassigned conversation.
   * @request PATCH:/{baseSiteId}/messagecenter/im/conversations/{conversationId}/pick
   * @secure
   */
  pickConversation = (baseSiteId: string, conversationId: string, params: RequestParams = {}) =>
    this.request<Conversation, ErrorList>({
      path: `/${baseSiteId}/messagecenter/im/conversations/${conversationId}/pick`,
      method: "PATCH",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Order Improve Controller
   * @name Generate
   * @request POST:/{baseSiteId}/order-improve/process
   * @secure
   */
  generate = (baseSiteId: string, data: OrderImproveParameter, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/order-improve/process`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Order Approval Permission Types
   * @name GetOrderApprovalPermissionTypes
   * @summary Retrieves the order approval permission types.
   * @request GET:/{baseSiteId}/orderApprovalPermissionTypes
   * @secure
   */
  getOrderApprovalPermissionTypes = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermissionTypeList, ErrorList>({
      path: `/${baseSiteId}/orderApprovalPermissionTypes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the order using the Globally Unique Identifier (GUID) or the order code. To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags Orders
   * @name GetOrder3
   * @summary Retrieves the order.
   * @request GET:/{baseSiteId}/orders/{code}
   * @secure
   */
  getOrder3 = (
    baseSiteId: string,
    code: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Order, ErrorList>({
      path: `/${baseSiteId}/orders/${code}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of a single product using the product identifier.
   *
   * @tags B2B Products
   * @name GetOrgProduct
   * @summary Retrieves product details.
   * @request GET:/{baseSiteId}/orgProducts/{productCode}
   * @secure
   */
  getOrgProduct = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Product, ErrorList>({
      path: `/${baseSiteId}/orgProducts/${productCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Registers a B2B customer. Requires the following parameters: titleCode, firstName, lastName, email, message, verificationTokenId, verificationTokenCode. Only when OTP for registration is enabled, verificationTokenId and verificationTokenCode are required.
   *
   * @tags B2B Users
   * @name CreateRegistrationRequest
   * @summary Creates a registration request for a B2B customer.
   * @request POST:/{baseSiteId}/orgUsers
   * @secure
   */
  createRegistrationRequest = (
    baseSiteId: string,
    data: OrgUserRegistrationData,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/orgUsers`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags B2B Users
   * @name GetOrgUser
   * @summary Retrieves a B2B customer profile.
   * @request GET:/{baseSiteId}/orgUsers/{userId}
   * @secure
   */
  getOrgUser = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<User, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Returns a list of modification applied to the new cart compared to original. e.g lower quantity was added
   *
   * @tags B2B Orders
   * @name CreateCartFromOrder
   * @summary Creates a cart from a previous order.
   * @request POST:/{baseSiteId}/orgUsers/{userId}/cartFromOrder
   * @secure
   */
  createCartFromOrder = (
    baseSiteId: string,
    userId: string,
    query: {
      /** Response configuration. This is the list of fields that should be returned in the response body. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Order code.
       * @example "000002000"
       */
      orderCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModificationList, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/cartFromOrder`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description The updated address country must be a valid delivery country for the current base store.
   *
   * @tags B2B Carts
   * @name ReplaceOrgCartDeliveryAddress
   * @summary Updates the delivery address for a cart.
   * @request PUT:/{baseSiteId}/orgUsers/{userId}/carts/{cartId}/addresses/delivery
   * @secure
   */
  replaceOrgCartDeliveryAddress = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /** The id of the address. */
      addressId: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Cart, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/carts/${cartId}/addresses/delivery`,
      method: "PUT",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Adds specific products or overwrites the details of existing products in the cart, based either on the product code or the entry number. For existing products, attributes not provided in the request body will be defined again (set to null or default).
   *
   * @tags B2B Carts
   * @name ReplaceOrgCartEntries
   * @summary Updates the quantity of the specified products in a cart.
   * @request PUT:/{baseSiteId}/orgUsers/{userId}/carts/{cartId}/entries/
   * @secure
   */
  replaceOrgCartEntries = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: OrderEntryList,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModificationList, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/carts/${cartId}/entries/`,
      method: "PUT",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Creates additional quantity of a product in the cart. Use this endpoint to add the quantities of the existing products. To update the products’ quantities or add new products to the cart, use PUT /{baseSiteId}/orgUsers/{userId}/carts/{cartId}/entries/
   *
   * @tags B2B Carts
   * @name DoAddOrgCartEntries
   * @summary Creates additional quantity of a product in the cart.
   * @request POST:/{baseSiteId}/orgUsers/{userId}/carts/{cartId}/entries/
   * @secure
   */
  doAddOrgCartEntries = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: OrderEntryList,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModificationList, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/carts/${cartId}/entries/`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a B2B order. By default the payment type is ACCOUNT. Set payment type to CARD if placing an order using credit card.
   *
   * @tags B2B Orders
   * @name PlaceOrgOrder
   * @summary Creates a B2B order.
   * @request POST:/{baseSiteId}/orgUsers/{userId}/orders
   * @secure
   */
  placeOrgOrder = (
    baseSiteId: string,
    userId: string,
    query: {
      /**
       * Cart identifier: cart code for logged-in user, cart GUID for anonymous user, or 'current' for the last modified cart.
       * @example "00000110"
       */
      cartId: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Whether terms were accepted or not. */
      termsChecked: boolean;
    },
    params: RequestParams = {},
  ) =>
    this.request<Order, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/orders`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the order history of a default organization branch for a base site. The response may display the results across multiple pages, when applicable.
   *
   * @tags B2B Orders
   * @name GetUserBranchOrderHistory
   * @summary Retrieves the order history for the customer's organization branch.
   * @request GET:/{baseSiteId}/orgUsers/{userId}/orgUnits/orders
   * @secure
   */
  getUserBranchOrderHistory = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Serialized filters applied to the query in the following format: ::facetKey1:facetValue1:facetKey2:facetValue2. Correct values for facetKey are 'user' and 'unit'. */
      filters?: string;
      /**
       * The number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
      /** Filters only certain order statuses. For example, statuses=CANCELLED,CHECKED_VALID would only return orders with status CANCELLED or CHECKED_VALID. */
      statuses?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderHistoryList, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/orgUnits/orders`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the order using a unique order code in the customer's default organization branch. To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags B2B Orders
   * @name GetBranchOrder
   * @summary Retrieves the order from the customer's organization branch.
   * @request GET:/{baseSiteId}/orgUsers/{userId}/orgUnits/orders/{code}
   * @secure
   */
  getBranchOrder = (
    baseSiteId: string,
    code: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Order, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/orgUnits/orders/${code}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates and schedules replenishment orders. By default, the payment type is ACCOUNT. Set payment type to CARD if placing an order using credit card.
   *
   * @tags B2B Orders
   * @name CreateReplenishmentOrder
   * @summary Creates replenishment orders.
   * @request POST:/{baseSiteId}/orgUsers/{userId}/replenishmentOrders
   * @secure
   */
  createReplenishmentOrder = (
    baseSiteId: string,
    userId: string,
    query: {
      /**
       * Cart identifier: cart code for logged-in user, cart GUID for anonymous user, or 'current' for the last modified cart.
       * @example "00000110"
       */
      cartId: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Whether terms were accepted or not. */
      termsChecked: boolean;
    },
    data: ScheduleReplenishmentForm,
    params: RequestParams = {},
  ) =>
    this.request<ReplenishmentOrder, ErrorList>({
      path: `/${baseSiteId}/orgUsers/${userId}/replenishmentOrders`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags advanced-mode-controller
   * @name AdvancedCss
   * @request GET:/{baseSiteId}/paintbox/advanced/css
   * @secure
   */
  advancedCss = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/advanced/css`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags advanced-mode-controller
   * @name UpdatePaintboxCss
   * @request POST:/{baseSiteId}/paintbox/advanced/update-stylesheet
   * @secure
   */
  updatePaintboxCss = (baseSiteId: string, data: Stylesheet, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/advanced/update-stylesheet`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name CreateTheme
   * @request POST:/{baseSiteId}/paintbox/basic/create-theme
   * @secure
   */
  createTheme = (baseSiteId: string, data: EnumData, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/create-theme`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name Css
   * @request GET:/{baseSiteId}/paintbox/basic/css
   * @secure
   */
  css = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/css`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name DeleteTheme
   * @request DELETE:/{baseSiteId}/paintbox/basic/delete-theme
   * @secure
   */
  deleteTheme = (baseSiteId: string, data: EnumData, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/delete-theme`,
      method: "DELETE",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name GetRulesWithTheme
   * @request GET:/{baseSiteId}/paintbox/basic/get-rules
   * @secure
   */
  getRulesWithTheme = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/get-rules`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name GetThemes
   * @request GET:/{baseSiteId}/paintbox/basic/get-themes
   * @secure
   */
  getThemes = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/get-themes`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name SetTheme
   * @request POST:/{baseSiteId}/paintbox/basic/set-theme
   * @secure
   */
  setTheme = (baseSiteId: string, data: EnumData, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/set-theme`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags basic-mode-controller
   * @name UpdatePaintboxTheme
   * @request POST:/{baseSiteId}/paintbox/basic/update-theme
   * @secure
   */
  updatePaintboxTheme = (baseSiteId: string, data: NestedFlexibleRuleData[], params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/paintbox/basic/update-theme`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags static-media-controller
   * @name ServeMedia
   * @request GET:/{baseSiteId}/paintbox/media/{mediaCode}
   * @secure
   */
  serveMedia = (mediaCode: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/paintbox/media/${mediaCode}`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest8
   * @request GET:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest8 = (
    urlId: string,
    baseSiteId: string,
    query: {
      body: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest11
   * @request PUT:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest11 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest10
   * @request POST:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest10 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest13
   * @request DELETE:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest13 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "DELETE",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest14
   * @request OPTIONS:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest14 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "OPTIONS",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest9
   * @request HEAD:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest9 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "HEAD",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags paintbox-proxy-api-controller
   * @name HandleRequest12
   * @request PATCH:/{baseSiteId}/paintbox/proxy/{urlId}/**
   * @secure
   */
  handleRequest12 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/paintbox/proxy/${urlId}/**`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Creates and sends a token that is used to restore a forgotten password in a following asynchronous customer communication. This endpoint is added in the 2211.24 update.
   *
   * @tags Forgotten Passwords
   * @name SendPasswordRestoreToken
   * @summary Creates and sends a token to restore a forgotten password.
   * @request POST:/{baseSiteId}/passwordRestoreToken
   * @secure
   */
  sendPasswordRestoreToken = (baseSiteId: string, data: PasswordRestoreTokenInput, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/passwordRestoreToken`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves the payment modes defined for the base store.
   *
   * @tags Payment Modes
   * @name GetPaymentModes
   * @summary Retrieves the available payment modes.
   * @request GET:/{baseSiteId}/paymentmodes
   * @secure
   */
  getPaymentModes = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentModeList, ErrorList>({
      path: `/${baseSiteId}/paymentmodes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the payment types that are available during the B2B checkout process.
   *
   * @tags B2B Miscs
   * @name GetPaymentTypes
   * @summary Retrieves the available payment types.
   * @request GET:/{baseSiteId}/paymenttypes
   * @secure
   */
  getPaymentTypes = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BPaymentTypeList, ErrorList>({
      path: `/${baseSiteId}/paymenttypes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags pick-up-in-store-occ-controller
   * @name GetAvailableStoresForProduct
   * @request GET:/{baseSiteId}/pick-up-in-store/{productCode}/stores
   * @secure
   */
  getAvailableStoresForProduct = (
    productCode: string,
    baseSiteId: string,
    query: {
      /** @format double */
      latitude: number;
      /** @format double */
      longtitude: number;
      /**
       * @format int32
       * @default 0
       */
      page?: number;
      /**
       * @format int32
       * @default 3
       */
      pageSize?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<PickUpInStore, ErrorList>({
      path: `/${baseSiteId}/pick-up-in-store/${productCode}/stores`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags pps-coupon-controller
   * @name CreatePpsCoupon
   * @request GET:/{baseSiteId}/pps/coupon/create
   * @secure
   */
  createPpsCoupon = (
    baseSiteId: string,
    query: {
      couponId: string;
      ppsCouponPrimaryLabel?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/pps/coupon/create`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags pps-product-price-controller
   * @name GetPpsProductPriceWsDto
   * @request GET:/{baseSiteId}/pps/product/price/{productCode}
   * @secure
   */
  getPpsProductPriceWsDto = (productCode: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<PPSProductPrice, ErrorList>({
      path: `/${baseSiteId}/pps/product/price/${productCode}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the stock availability for the requested products in the requested units. This endpoint is added in the 2211.30 update.”
   *
   * @tags Product Availability
   * @name GetProductAvailability
   * @summary Retrieves availability information for a list of products.
   * @request GET:/{baseSiteId}/productAvailabilities
   * @secure
   */
  getProductAvailability = (
    baseSiteId: string,
    query: {
      /**
       * Product codes and their respective units in which the availability should be retrieved. In the following format -
       *
       * productCodeA:unitCodeA,unitCodeB;productCodeB:unitCodeA,unitCodeB.
       *
       *  Example - 3318057_A:EA,PC;4112097_B:EA
       */
      filters: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SAPAvailability, ErrorList>({
      path: `/${baseSiteId}/productAvailabilities`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves products that were added to the express update feed. Only the properties that were updated after the specified timestamp are returned. The queue is cleared using a defined cronjob.
   *
   * @tags Products
   * @name GetExpressUpdateProducts
   * @summary Retrieves products that were added to the express update feed.
   * @request GET:/{baseSiteId}/products/expressupdate
   * @secure
   */
  getExpressUpdateProducts = (
    baseSiteId: string,
    query: {
      /** Only products from this catalog are returned. Format: catalogId:catalogVersion. */
      catalog?: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Only products that are more recent than the given parameter are returned. The value should be in ISO-8601 format: 2018-01-09T16:28:45+0000. */
      timestamp: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductExpressUpdateElementList, ErrorList>({
      path: `/${baseSiteId}/products/expressupdate`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of products and related product search data, such as available attributes， available facets, available sorting, and spelling suggestions. To enable spelling suggestions, you need to have indexed properties configured to be used for spell checking.
   *
   * @tags Products
   * @name GetProducts
   * @summary Retrieves a list of products.
   * @request GET:/{baseSiteId}/products/search
   * @secure
   */
  getProducts = (
    baseSiteId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Filter conditions that combine attribute keys and attribute values. The attributes are the fields or properties for the Product type configured in the search index type. The format is <attributeKey1>:<attributeValue1>:...:<attributeKeyN>:<attributeValueN>. */
      filters?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Formatted query string. It contains query criteria like free text search, facet. The format is <freeTextSearch>:<sort>:<facetKey1>:<facetValue1>:...:<facetKeyN>:<facetValueN>. */
      query?: string;
      /** Name of the search query template to be used in the search query. Examples: DEFAULT, SUGGESTIONS. */
      searchQueryContext?: string;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductSearchPage, ErrorList>({
      path: `/${baseSiteId}/products/search`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description In the response header, the "x-total-count" property indicates the total number of products for the query.
   *
   * @tags Products
   * @name CountProducts
   * @summary Retrieves the total number of products.
   * @request HEAD:/{baseSiteId}/products/search
   * @secure
   */
  countProducts = (
    baseSiteId: string,
    query?: {
      /** Formatted query string. It contains query criteria like free text search, facet. The format is <freeTextSearch>:<sort>:<facetKey1>:<facetValue1>:...:<facetKeyN>:<facetValueN>. */
      query?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/products/search`,
      method: "HEAD",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the suggestions related to a specified term and limits the results according to the value of the max parameter.
   *
   * @tags Products
   * @name GetSuggestions
   * @summary Retrieves the available suggestions.
   * @request GET:/{baseSiteId}/products/suggestions
   * @secure
   */
  getSuggestions = (
    baseSiteId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Maximum number of results.
       * @format int32
       * @default 10
       */
      max?: number;
      /** Specified term. The suggestions will be given based on it. */
      term: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SuggestionList, ErrorList>({
      path: `/${baseSiteId}/products/suggestions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of a single product using the product identifier.
   *
   * @tags Products
   * @name GetProduct1
   * @summary Retrieves product details.
   * @request GET:/{baseSiteId}/products/{productCode}
   * @secure
   */
  getProduct1 = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Product, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags nutrition-controller
   * @name GetSortedNutritionFacts
   * @request GET:/{baseSiteId}/products/{productCode}/nutritionFacts
   * @secure
   */
  getSortedNutritionFacts = (
    productCode: string,
    baseSiteId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<NutritionFacts, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/nutritionFacts`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the references using the product code and reference type.
   *
   * @tags Products
   * @name GetProductReferences
   * @summary Retrieves the product references.
   * @request GET:/{baseSiteId}/products/{productCode}/references
   * @secure
   */
  getProductReferences = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 2147483647
       */
      pageSize?: number;
      /** Comma-separated list of reference types. If not specified, all types of product references will be used. Example: ACCESSORIES,BASE_PRODUCT. */
      referenceType?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductReferenceList, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/references`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves all the reviews for a product. To limit the number of reviews returned, use the maxCount parameter.
   *
   * @tags Products
   * @name GetProductReviews
   * @summary Retrieves the reviews of a product.
   * @request GET:/{baseSiteId}/products/{productCode}/reviews
   * @secure
   */
  getProductReviews = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Maximum number of reviews.
       * @format int32
       */
      maxCount?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReviewList, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/reviews`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a customer review for a product as an anonymous user.
   *
   * @tags Products
   * @name CreateProductReview
   * @summary Creates a customer review as an anonymous user.
   * @request POST:/{baseSiteId}/products/{productCode}/reviews
   * @secure
   */
  createProductReview = (
    baseSiteId: string,
    productCode: string,
    data: Review,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Review, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/reviews`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description The stock levels are sorted by distance from the specified location, which is defined using the free-text location parameter or the longitude and latitude parameters. Either location parameter or longitude and latitude parameters are required.
   *
   * @tags Products
   * @name GetLocationProductStock
   * @summary Retrieves the stock level of a product.
   * @request GET:/{baseSiteId}/products/{productCode}/stock
   * @secure
   */
  getLocationProductStock = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Coordinate that specifies the north-south position of a point on the Earth's surface.
       * @format double
       */
      latitude?: number;
      /** Free-text location */
      location?: string;
      /**
       * Coordinate that specifies the east-west position of a point on the Earth's surface.
       * @format double
       */
      longitude?: number;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<StoreFinderStockSearchPage, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/stock`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description In the response header, the "x-total-count" property indicates the total number of stock levels of a product. Either location parameter or longitude and latitude parameters are required.
   *
   * @tags Products
   * @name CountProductStockByLocation
   * @summary Retrieves the total number of stock levels of a product.
   * @request HEAD:/{baseSiteId}/products/{productCode}/stock
   * @secure
   */
  countProductStockByLocation = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Coordinate that specifies the north-south position of a point on the Earth's surface.
       * @format double
       */
      latitude?: number;
      /** Free-text location */
      location?: string;
      /**
       * Coordinate that specifies the east-west position of a point on the Earth's surface.
       * @format double
       */
      longitude?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/stock`,
      method: "HEAD",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the stock level of a product for the store.
   *
   * @tags Products
   * @name GetStoreProductStock
   * @summary Retrieves the stock level of a product.
   * @request GET:/{baseSiteId}/products/{productCode}/stock/{storeName}
   * @secure
   */
  getStoreProductStock = (
    baseSiteId: string,
    productCode: string,
    storeName: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Stock, ErrorList>({
      path: `/${baseSiteId}/products/${productCode}/stock/${storeName}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the promotions defined for a current base site. Requests pertaining to promotions have been developed for the previous version of promotions and vouchers and therefore some of them are currently not compatible with the new promotion engine.
   *
   * @tags Promotions
   * @name GetPromotions
   * @summary Retrieves the promotions.
   * @request GET:/{baseSiteId}/promotions
   * @secure
   */
  getPromotions = (
    baseSiteId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
      /** Only promotions from this group are returned */
      promotionGroup?: string;
      /** Type of promotions that should be returned. Possible values are: <ul><li>all: All available promotions are returned. </li><li>product: Only product promotions are returned. </li><li>order: Only order promotions are returned. </li></ul> */
      type: "all" | "product" | "order";
    },
    params: RequestParams = {},
  ) =>
    this.request<PromotionList, ErrorList>({
      path: `/${baseSiteId}/promotions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of a promotion using the specified code. Requests pertaining to promotions have been developed for the previous version of promotions and vouchers and therefore some of them are currently not compatible with the new promotion engine.
   *
   * @tags Promotions
   * @name GetPromotion
   * @summary Retrieves the promotion.
   * @request GET:/{baseSiteId}/promotions/{code}
   * @secure
   */
  getPromotion = (
    baseSiteId: string,
    code: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Promotion, ErrorList>({
      path: `/${baseSiteId}/promotions/${code}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags qualtrics-configuration-controller
   * @name GetQualtricsConfiguration
   * @request GET:/{baseSiteId}/qualtrics/config
   * @secure
   */
  getQualtricsConfiguration = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<QualtricsConfiguration, ErrorList>({
      path: `/${baseSiteId}/qualtrics/config`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags ai-image-storage-controller
   * @name UploadImage1
   * @request POST:/{baseSiteId}/recipe-ai/generated-image/upload/{sid}
   * @secure
   */
  uploadImage1 = (
    sid: string,
    baseSiteId: string,
    data: {
      /** @format binary */
      file: File;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/generated-image/upload/${sid}`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.FormData,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags ai-image-storage-controller
   * @name GetImage1
   * @request GET:/{baseSiteId}/recipe-ai/generated-image/{sid}
   * @secure
   */
  getImage1 = (sid: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Image, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/generated-image/${sid}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags ai-image-storage-controller
   * @name DeleteImage1
   * @request DELETE:/{baseSiteId}/recipe-ai/generated-image/{sid}
   * @secure
   */
  deleteImage1 = (sid: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/generated-image/${sid}`,
      method: "DELETE",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockDetectObjects
   * @request GET:/{baseSiteId}/recipe-ai/mock-ai/detect-objects
   * @secure
   */
  mockDetectObjects = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/detect-objects`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockDetectObjects1
   * @request POST:/{baseSiteId}/recipe-ai/mock-ai/detect-objects
   * @secure
   */
  mockDetectObjects1 = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/detect-objects`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockDetectObjects2
   * @request GET:/{baseSiteId}/recipe-ai/mock-ai/detect-objects/process/url
   * @secure
   */
  mockDetectObjects2 = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/detect-objects/process/url`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockDetectObjects3
   * @request POST:/{baseSiteId}/recipe-ai/mock-ai/detect-objects/process/url
   * @secure
   */
  mockDetectObjects3 = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/detect-objects/process/url`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockDetectProducts
   * @request GET:/{baseSiteId}/recipe-ai/mock-ai/map-ingredients-to-products
   * @secure
   */
  mockDetectProducts = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/map-ingredients-to-products`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockDetectProducts1
   * @request POST:/{baseSiteId}/recipe-ai/mock-ai/map-ingredients-to-products
   * @secure
   */
  mockDetectProducts1 = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/map-ingredients-to-products`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockSuggestRecipes
   * @request GET:/{baseSiteId}/recipe-ai/mock-ai/suggest-recipes/**
   * @secure
   */
  mockSuggestRecipes = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/suggest-recipes/**`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-ai-backend-controller
   * @name MockSuggestRecipes1
   * @request POST:/{baseSiteId}/recipe-ai/mock-ai/suggest-recipes/**
   * @secure
   */
  mockSuggestRecipes1 = (
    baseSiteId: string,
    query?: {
      json?: string;
      /**
       * @format int32
       * @default 0
       */
      sleep?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/mock-ai/suggest-recipes/**`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags recipe-crud-controller
   * @name CreatePrivateRecipe
   * @request POST:/{baseSiteId}/recipe-ai/recipe/create-private
   * @secure
   */
  createPrivateRecipe = (
    baseSiteId: string,
    data: Recipe,
    query?: {
      imageMediaId?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Recipe, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/recipe/create-private`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags shared-image-controller
   * @name UploadImage
   * @request POST:/{baseSiteId}/recipe-ai/shared-image/upload/{sid}
   * @secure
   */
  uploadImage = (
    sid: string,
    baseSiteId: string,
    data: {
      /** @format binary */
      file: File;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/shared-image/upload/${sid}`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.FormData,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags shared-image-controller
   * @name GetImage
   * @request GET:/{baseSiteId}/recipe-ai/shared-image/{sid}
   * @secure
   */
  getImage = (sid: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Image, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/shared-image/${sid}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags shared-image-controller
   * @name DeleteImage
   * @request DELETE:/{baseSiteId}/recipe-ai/shared-image/{sid}
   * @secure
   */
  deleteImage = (sid: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/recipe-ai/shared-image/${sid}`,
      method: "DELETE",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags recipe-controller
   * @name GetRecipe
   * @request GET:/{baseSiteId}/recipes/{recipeCode}
   * @secure
   */
  getRecipe = (
    recipeCode: string,
    baseSiteId: string,
    query?: {
      /** @default "FULL" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Recipe, ErrorList>({
      path: `/${baseSiteId}/recipes/${recipeCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Reset password after customer's clicked forgotten password link. A new password needs to be provided.
   *
   * @tags Forgotten Passwords
   * @name DoResetPassword
   * @summary Resets a forgotten password.
   * @request POST:/{baseSiteId}/resetpassword
   * @secure
   */
  doResetPassword = (baseSiteId: string, data: ResetPassword, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/resetpassword`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags rumcommonocc-controller
   * @name SetProperties
   * @request POST:/{baseSiteId}/rum-common/properties
   * @secure
   */
  setProperties = (baseSiteId: string, data: PropertyList, params: RequestParams = {}) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/rum-common/properties`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rumcommonocc-controller
   * @name SetSingleProperty
   * @request GET:/{baseSiteId}/rum-common/properties/set
   * @secure
   */
  setSingleProperty = (
    baseSiteId: string,
    query: {
      key: string;
      value?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/rum-common/properties/set`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest1
   * @request GET:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest1 = (
    urlId: string,
    baseSiteId: string,
    query: {
      body: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest4
   * @request PUT:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest4 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest3
   * @request POST:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest3 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest6
   * @request DELETE:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest6 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "DELETE",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest7
   * @request OPTIONS:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest7 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "OPTIONS",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest2
   * @request HEAD:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest2 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "HEAD",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags rum-common-proxy-api-controller
   * @name HandleRequest5
   * @request PATCH:/{baseSiteId}/rum-common/proxy/{urlId}/**
   * @secure
   */
  handleRequest5 = (urlId: string, baseSiteId: string, data: string, params: RequestParams = {}) =>
    this.request<object, ErrorList>({
      path: `/${baseSiteId}/rum-common/proxy/${urlId}/**`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags store-selection-controller
   * @name SetReturnStoreForOrder
   * @request POST:/{baseSiteId}/store-selection/order/select-return-store
   * @secure
   */
  setReturnStoreForOrder = (
    baseSiteId: string,
    query: {
      orderCode: string;
      storeName: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/store-selection/order/select-return-store`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags store-selection-controller
   * @name GetStores
   * @request GET:/{baseSiteId}/store-selection/stores
   * @secure
   */
  getStores = (
    baseSiteId: string,
    query: {
      /** @format double */
      latitude: number;
      /** @format double */
      longitude: number;
      /**
       * @format int32
       * @default 0
       */
      page?: number;
      /**
       * @format int32
       * @default 3
       */
      pageSize?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<PointOfServiceList, ErrorList>({
      path: `/${baseSiteId}/store-selection/stores`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the store locations that are near the location specified in a query or the latitude and longitude parameters.
   *
   * @tags Stores
   * @name GetStoreLocations
   * @summary Retrieves the store locations.
   * @request GET:/{baseSiteId}/stores
   * @secure
   */
  getStoreLocations = (
    baseSiteId: string,
    query?: {
      /**
       * Accuracy in meters.
       * @format double
       * @default 0
       */
      accuracy?: number;
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Coordinate that specifies the north-south position of a point on the Earth's surface.
       * @format double
       */
      latitude?: number;
      /**
       * Coordinate that specifies the east-west position of a point on the Earth's surface.
       * @format double
       */
      longitude?: number;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Location in plain text. Example: USA or New York City */
      query?: string;
      /**
       * Radius in meters. Max value: 40075000.0 (Earth's perimeter).
       * @format double
       * @default 100000
       */
      radius?: number;
      /**
       * Sorting method applied to the return results.
       * @default "asc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<StoreFinderSearchPage, ErrorList>({
      path: `/${baseSiteId}/stores`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description In the response header, the "x-total-count" indicates the number of all stores that are near the location specified in the query or based on latitude and longitude.
   *
   * @tags Stores
   * @name CountStoreLocations
   * @summary Retrieves a header that indicates the number of store locations.
   * @request HEAD:/{baseSiteId}/stores
   * @secure
   */
  countStoreLocations = (
    baseSiteId: string,
    query?: {
      /**
       * Accuracy in meters.
       * @format double
       * @default 0
       */
      accuracy?: number;
      /**
       * Coordinate that specifies the north-south position of a point on the Earth's surface.
       * @format double
       */
      latitude?: number;
      /**
       * Coordinate that specifies the east-west position of a point on the Earth's surface.
       * @format double
       */
      longitude?: number;
      /** Location in plain text. Example: USA or New York City */
      query?: string;
      /**
       * Radius in meters. Max value: 40075000.0 (Earth's perimeter).
       * @format double
       * @default 100000
       */
      radius?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/stores`,
      method: "HEAD",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the store locations that are in the specified country.
   *
   * @tags Stores
   * @name GetStoresByCountry
   * @summary Retrieves the store locations in a country.
   * @request GET:/{baseSiteId}/stores/country/{countryIso}
   * @secure
   */
  getStoresByCountry = (
    baseSiteId: string,
    countryIso: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PointOfServiceList, ErrorList>({
      path: `/${baseSiteId}/stores/country/${countryIso}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the store locations in the specified country and region.
   *
   * @tags Stores
   * @name GetStoresByCountryAndRegion
   * @summary Retrieves the store locations.
   * @request GET:/{baseSiteId}/stores/country/{countryIso}/region/{regionIso}
   * @secure
   */
  getStoresByCountryAndRegion = (
    baseSiteId: string,
    countryIso: string,
    regionIso: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PointOfServiceList, ErrorList>({
      path: `/${baseSiteId}/stores/country/${countryIso}/region/${regionIso}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves store counts per country and region.
   *
   * @tags Stores
   * @name GetLocationCounts
   * @summary Retrieves store counts.
   * @request GET:/{baseSiteId}/stores/storescounts
   * @secure
   */
  getLocationCounts = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<StoreCountList, ErrorList>({
      path: `/${baseSiteId}/stores/storescounts`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a store location using its unique name.
   *
   * @tags Stores
   * @name GetStoreLocation
   * @summary Retrieves a store location.
   * @request GET:/{baseSiteId}/stores/{storeId}
   * @secure
   */
  getStoreLocation = (
    baseSiteId: string,
    storeId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PointOfService, ErrorList>({
      path: `/${baseSiteId}/stores/${storeId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags story-book-controller
   * @name GetItems
   * @request GET:/{baseSiteId}/story-book/items
   * @secure
   */
  getItems = (
    baseSiteId: string,
    query: {
      itemCodes: string[];
    },
    params: RequestParams = {},
  ) =>
    this.request<StoryBookItem[], ErrorList>({
      path: `/${baseSiteId}/story-book/items`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags story-book-controller
   * @name GetLayout
   * @request GET:/{baseSiteId}/story-book/layout
   * @secure
   */
  getLayout = (
    baseSiteId: string,
    query: {
      layoutUid: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<StoryBookLayout, ErrorList>({
      path: `/${baseSiteId}/story-book/layout`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name Analyze2
   * @request POST:/{baseSiteId}/style-buddy/api/analyze-image/{mediaId}
   * @secure
   */
  analyze2 = (mediaId: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/analyze-image/${mediaId}`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetRecommendations2
   * @request GET:/{baseSiteId}/style-buddy/api/get-recommendations
   * @secure
   */
  getRecommendations2 = (
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/get-recommendations`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetSearchResults2
   * @request GET:/{baseSiteId}/style-buddy/api/get-search-results
   * @secure
   */
  getSearchResults2 = (
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/get-search-results`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetPublicImageUrl2
   * @request GET:/{baseSiteId}/style-buddy/api/image/{imageId}
   * @secure
   */
  getPublicImageUrl2 = (imageId: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/image/${imageId}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetApiVersion
   * @request GET:/{baseSiteId}/style-buddy/api/version
   * @secure
   */
  getApiVersion = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/version`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name Analyze3
   * @request POST:/{baseSiteId}/style-buddy/api/{apiVersion}/analyze-image/{mediaId}
   * @secure
   */
  analyze3 = (apiVersion: string, mediaId: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/${apiVersion}/analyze-image/${mediaId}`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetRecommendations3
   * @request GET:/{baseSiteId}/style-buddy/api/{apiVersion}/get-recommendations
   * @secure
   */
  getRecommendations3 = (
    apiVersion: string,
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/${apiVersion}/get-recommendations`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetSearchResults3
   * @request GET:/{baseSiteId}/style-buddy/api/{apiVersion}/get-search-results
   * @secure
   */
  getSearchResults3 = (
    apiVersion: string,
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<Record<string, object>, ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/${apiVersion}/get-search-results`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags style-buddy-controller
   * @name GetPublicImageUrl3
   * @request GET:/{baseSiteId}/style-buddy/api/{apiVersion}/image/{imageId}
   * @secure
   */
  getPublicImageUrl3 = (apiVersion: string, imageId: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/style-buddy/api/${apiVersion}/image/${imageId}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name Analyze
   * @request POST:/{baseSiteId}/style-buddy/mock/analyze-image/{mediaId}
   * @secure
   */
  analyze = (
    mediaId: string,
    baseSiteId: string,
    query?: {
      sleep?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/analyze-image/${mediaId}`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name GetRecommendations
   * @request GET:/{baseSiteId}/style-buddy/mock/get-recommendations
   * @secure
   */
  getRecommendations = (
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/get-recommendations`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name GetSearchResults
   * @request GET:/{baseSiteId}/style-buddy/mock/get-search-results
   * @secure
   */
  getSearchResults = (
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/get-search-results`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name GetPublicImageUrl
   * @request GET:/{baseSiteId}/style-buddy/mock/image/{imageId}
   * @secure
   */
  getPublicImageUrl = (imageId: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/image/${imageId}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name Analyze1
   * @request POST:/{baseSiteId}/style-buddy/mock/{apiVersion}/analyze-image/{mediaId}
   * @secure
   */
  analyze1 = (
    apiVersion: string,
    mediaId: string,
    baseSiteId: string,
    query?: {
      sleep?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/${apiVersion}/analyze-image/${mediaId}`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name GetRecommendations1
   * @request GET:/{baseSiteId}/style-buddy/mock/{apiVersion}/get-recommendations
   * @secure
   */
  getRecommendations1 = (
    apiVersion: string,
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/${apiVersion}/get-recommendations`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name GetSearchResults1
   * @request GET:/{baseSiteId}/style-buddy/mock/{apiVersion}/get-search-results
   * @secure
   */
  getSearchResults1 = (
    apiVersion: string,
    baseSiteId: string,
    query: {
      params: MultiValueMapStringString;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/${apiVersion}/get-search-results`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags mock-stylebuddy-controller
   * @name GetPublicImageUrl1
   * @request GET:/{baseSiteId}/style-buddy/mock/{apiVersion}/image/{imageId}
   * @secure
   */
  getPublicImageUrl1 = (apiVersion: string, imageId: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/style-buddy/mock/${apiVersion}/image/${imageId}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Returns details of a single product according to a product code.
   *
   * @tags style-buddy-product-controller
   * @name GetProduct
   * @summary Get product details.
   * @request GET:/{baseSiteId}/style-buddy/products/{productCode}
   * @secure
   */
  getProduct = (
    baseSiteId: string,
    productCode: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Product, ErrorList>({
      path: `/${baseSiteId}/style-buddy/products/${productCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Returns OMF replication status for order code.
   *
   * @tags test-helper-controller
   * @name GetOrder2
   * @summary Get a order.
   * @request GET:/{baseSiteId}/test/orders/{code}/omfReplicationStatus
   * @secure
   */
  getOrder2 = (baseSiteId: string, code: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/orders/${code}/omfReplicationStatus`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Returns reservation id of a specific order based on the order GUID (Globally Unique Identifier) or the order CODE.
   *
   * @tags test-helper-controller
   * @name GetOrder1
   * @summary Get a order.
   * @request GET:/{baseSiteId}/test/orders/{code}/omsaReservationId
   * @secure
   */
  getOrder1 = (baseSiteId: string, code: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/orders/${code}/omsaReservationId`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Returns status of a specific order based on the order GUID (Globally Unique Identifier) or the order CODE.
   *
   * @tags test-helper-controller
   * @name GetOrder
   * @summary Get a order.
   * @request GET:/{baseSiteId}/test/orders/{code}/status
   * @secure
   */
  getOrder = (baseSiteId: string, code: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/orders/${code}/status`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags test-helper-controller
   * @name ResetTestData
   * @request GET:/{baseSiteId}/test/reset-all
   * @secure
   */
  resetTestData = (
    baseSiteId: string,
    query: {
      redirectUrl: string;
      userId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/reset-all`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags test-helper-controller
   * @name ResetCheckoutData
   * @request GET:/{baseSiteId}/test/reset-checkout-data
   * @secure
   */
  resetCheckoutData = (
    baseSiteId: string,
    query: {
      redirectUrl: string;
      userId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/reset-checkout-data`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags test-helper-controller
   * @name SetOutOfStock
   * @request GET:/{baseSiteId}/test/set-outofstock
   * @secure
   */
  setOutOfStock = (
    baseSiteId: string,
    query: {
      productId: string;
      redirectUrl: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/set-outofstock`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags test-helper-controller
   * @name SetStock
   * @request GET:/{baseSiteId}/test/set-stock
   * @secure
   */
  setStock = (
    baseSiteId: string,
    query: {
      productId: string;
      redirectUrl: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/test/set-stock`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of ticket categories from which customers can choose.
   *
   * @tags Tickets
   * @name GetTicketCategories
   * @summary Retrieves the ticket categories.
   * @request GET:/{baseSiteId}/ticketCategories
   * @secure
   */
  getTicketCategories = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<TicketCategoryList, ErrorList>({
      path: `/${baseSiteId}/ticketCategories`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Miscs
   * @name GetTitles
   * @summary Retrieves the localized titles.
   * @request GET:/{baseSiteId}/titles
   * @secure
   */
  getTitles = (
    baseSiteId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<TitleList, ErrorList>({
      path: `/${baseSiteId}/titles`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags translations-controller
   * @name GetTranslations
   * @request GET:/{baseSiteId}/translations/chunks/{namespace}
   * @secure
   */
  getTranslations = (namespace: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/translations/chunks/${namespace}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags translations-controller
   * @name EditLabel
   * @request POST:/{baseSiteId}/translations/labels
   * @secure
   */
  editLabel = (baseSiteId: string, data: LocalizedLabel, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/translations/labels`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags translations-controller
   * @name PublishTranslations
   * @request GET:/{baseSiteId}/translations/publish
   * @secure
   */
  publishTranslations = (baseSiteId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/translations/publish`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags translations-controller
   * @name GetStagedTranslations
   * @request GET:/{baseSiteId}/translations/staged/chunks/{namespace}
   * @secure
   */
  getStagedTranslations = (namespace: string, baseSiteId: string, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/translations/staged/chunks/${namespace}`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags translations-controller
   * @name ImportTranslations
   * @request POST:/{baseSiteId}/translations/{lang}
   * @secure
   */
  importTranslations = (lang: string, baseSiteId: string, data: Record<string, object>, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/translations/${lang}`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Registers a customer. Requires the following parameters: login, password, firstName, lastName, titleCode, verificationTokenId, verificationTokenCode. Only when OTP for registration is enabled, verificationTokenId and verificationTokenCode are required.
   *
   * @tags Users
   * @name CreateUser
   * @summary  Registers a customer.
   * @request POST:/{baseSiteId}/users
   * @secure
   */
  createUser = (
    baseSiteId: string,
    data: UserSignUp,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<User, ErrorList>({
      path: `/${baseSiteId}/users`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Users
   * @name GetUser
   * @summary Retrieves the customer profile.
   * @request GET:/{baseSiteId}/users/{userId}
   * @secure
   */
  getUser = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<User, ErrorList>({
      path: `/${baseSiteId}/users/${userId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates customer profile. Attributes not provided in the request body will be defined again (set to null or default).
   *
   * @tags Users
   * @name ReplaceUser
   * @summary Updates the customer profile.
   * @request PUT:/{baseSiteId}/users/{userId}
   * @secure
   */
  replaceUser = (baseSiteId: string, userId: string, data: User, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags Users
   * @name RemoveUser
   * @summary Deletes the customer profile.
   * @request DELETE:/{baseSiteId}/users/{userId}
   * @secure
   */
  removeUser = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Updates customer profile. Only attributes provided in the request body will be changed.
   *
   * @tags Users
   * @name UpdateUser
   * @summary Updates customer profile
   * @request PATCH:/{baseSiteId}/users/{userId}
   * @secure
   */
  updateUser = (baseSiteId: string, userId: string, data: User, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves a list of all the addresses associated with a customer.
   *
   * @tags Address
   * @name GetAddresses
   * @summary Retrieves the addresses of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/addresses
   * @secure
   */
  getAddresses = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<AddressList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a new address with detailed information provided.
   *
   * @tags Address
   * @name CreateAddress
   * @summary Creates a new address.
   * @request POST:/{baseSiteId}/users/{userId}/addresses
   * @secure
   */
  createAddress = (
    baseSiteId: string,
    userId: string,
    data: Address,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Address, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Validates the address of a customer.
   *
   * @tags Address
   * @name ValidateAddress
   * @summary Verifies the address.
   * @request POST:/{baseSiteId}/users/{userId}/addresses/verification
   * @secure
   */
  validateAddress = (
    baseSiteId: string,
    userId: string,
    data: Address,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<AddressValidation, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses/verification`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Returns detailed information about address with a given id.
   *
   * @tags Address
   * @name GetAddress
   * @summary Retrieves the address details of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/addresses/{addressId}
   * @secure
   */
  getAddress = (
    addressId: string,
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Address, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses/${addressId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the address. Attributes not provided in the request will be defined again (set to null or default).
   *
   * @tags Address
   * @name ReplaceAddress
   * @summary Updates the address of a customer.
   * @request PUT:/{baseSiteId}/users/{userId}/addresses/{addressId}
   * @secure
   */
  replaceAddress = (addressId: string, baseSiteId: string, userId: string, data: Address, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses/${addressId}`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Deletes the address of a customer, which means the address records are erased.
   *
   * @tags Address
   * @name RemoveAddress
   * @summary Deletes the address of a customer.
   * @request DELETE:/{baseSiteId}/users/{userId}/addresses/{addressId}
   * @secure
   */
  removeAddress = (addressId: string, baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses/${addressId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Updates the address. Only attributes provided in the request body will be changed.
   *
   * @tags Address
   * @name UpdateAddress
   * @summary Updates the address
   * @request PATCH:/{baseSiteId}/users/{userId}/addresses/{addressId}
   * @secure
   */
  updateAddress = (addressId: string, baseSiteId: string, userId: string, data: Address, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/addresses/${addressId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name GetApplePayExpressCheckoutPaymentRequest
   * @request GET:/{baseSiteId}/users/{userId}/applepay/paymentrequest/expresscheckout
   * @secure
   */
  getApplePayExpressCheckoutPaymentRequest = (
    baseSiteId: string,
    userId: string,
    query: {
      productCode: string;
      /** @format int64 */
      quantity: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<ApplePayPaymentRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/applepay/paymentrequest/expresscheckout`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name GetAvailableOrgUnitNodes
   * @summary Retrieves the available organizational unit nodes.
   * @request GET:/{baseSiteId}/users/{userId}/availableOrgUnitNodes
   * @secure
   */
  getAvailableOrgUnitNodes = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BUnitNodeList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/availableOrgUnitNodes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the list of budgets available to a customer and base store. The response may display the results across multiple pages, when applicable.
   *
   * @tags Budget Management
   * @name GetBudgets
   * @summary Retrieves the list of budgets.
   * @request GET:/{baseSiteId}/users/{userId}/budgets
   * @secure
   */
  getBudgets = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "code"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<BudgetList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/budgets`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Budget Management
   * @name CreateBudget
   * @summary Creates a new budget.
   * @request POST:/{baseSiteId}/users/{userId}/budgets
   * @secure
   */
  createBudget = (
    baseSiteId: string,
    userId: string,
    data: Budget,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Budget, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/budgets`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the budget details that are available to the user for a base site.
   *
   * @tags Budget Management
   * @name GetBudget
   * @summary Retrieves the details of a budget.
   * @request GET:/{baseSiteId}/users/{userId}/budgets/{budgetCode}
   * @secure
   */
  getBudget = (
    baseSiteId: string,
    budgetCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Budget, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/budgets/${budgetCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the budget. Only the attributes provided in the request body will be changed.
   *
   * @tags Budget Management
   * @name UpdateBudget
   * @summary Updates the budget.
   * @request PATCH:/{baseSiteId}/users/{userId}/budgets/{budgetCode}
   * @secure
   */
  updateBudget = (
    baseSiteId: string,
    budgetCode: string,
    userId: string,
    data: Budget,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Budget, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/budgets/${budgetCode}`,
      method: "PATCH",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of all the carts associated with a customer.
   *
   * @tags Carts
   * @name GetCarts
   * @summary Retrieves the carts of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/carts
   * @secure
   */
  getCarts = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Pagination for savedCartsOnly. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page if the savedCartsOnly parameter is set to true. Default value: 20.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /**
       * If the value is true, only saved carts are returned.
       * @default false
       */
      savedCartsOnly?: boolean;
      /** Sorting method applied to the return results if the savedCartsOnly parameter is set to true. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a new cart or restores an anonymous cart as a user's cart (if an old Cart Id is given in the request).
   *
   * @tags Carts
   * @name CreateCart
   * @summary Creates or restore a cart for a user.
   * @request POST:/{baseSiteId}/users/{userId}/carts
   * @secure
   */
  createCart = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Anonymous cart GUID. */
      oldCartId?: string;
      /** The cart GUID that will be merged with the anonymous cart. */
      toMergeCartGuid?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Cart, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the current cart.  To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags B2B Carts
   * @name GetCurrentOrgCart
   * @summary Gets the current cart.
   * @request GET:/{baseSiteId}/users/{userId}/carts/current
   * @secure
   */
  getCurrentOrgCart = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Cart, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/current`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags shared-cart-controller
   * @name GetSharedWith
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartCode}/sharedWith
   * @secure
   */
  getSharedWith = (
    cartCode: string,
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<User[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartCode}/sharedWith`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags shared-cart-controller
   * @name ShareCart
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartCode}/sharedWith/{email}
   * @secure
   */
  shareCart = (cartCode: string, email: string, baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartCode}/sharedWith/${email}`,
      method: "PUT",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags shared-cart-controller
   * @name UnshareCart
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartCode}/sharedWith/{email}
   * @secure
   */
  unshareCart = (cartCode: string, email: string, baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartCode}/sharedWith/${email}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves a cart using the cart identifier. To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags Carts
   * @name GetCart
   * @summary Retrieves a cart.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}
   * @secure
   */
  getCart = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Cart, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Carts
   * @name RemoveCart
   * @summary Deletes the cart.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}
   * @secure
   */
  removeCart = (baseSiteId: string, cartId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Generates an access code for the specified cart. An access code is composed by a payload part and a signature part.
   *
   * @tags Carts
   * @name GetCartIdAccessCode
   * @summary Generates an access code for the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/accessCode
   * @secure
   */
  getCartIdAccessCode = (baseSiteId: string, cartId: string, userId: string, params: RequestParams = {}) =>
    this.request<SAPAccessCode, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/accessCode`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates or updates the billing address of the cart.
   *
   * @tags Cart Addresses
   * @name UpdateBillingAddress
   * @summary Create or update the billing address of the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/addresses/billing
   * @secure
   */
  updateBillingAddress = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: Address,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/addresses/billing`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description The updated address country must be a valid delivery country for the current base store.
   *
   * @tags Cart Addresses
   * @name ReplaceCartDeliveryAddress
   * @summary Updates the delivery address for a cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/addresses/delivery
   * @secure
   */
  replaceCartDeliveryAddress = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /** Address identifier */
      addressId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/addresses/delivery`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Cart Addresses
   * @name CreateCartDeliveryAddress
   * @summary Creates a delivery address for the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/addresses/delivery
   * @secure
   */
  createCartDeliveryAddress = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: Address,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Address, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/addresses/delivery`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes the delivery address associated with a cart.
   *
   * @tags Cart Addresses
   * @name RemoveCartDeliveryAddress
   * @summary Deletes the delivery address.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/addresses/delivery
   * @secure
   */
  removeCartDeliveryAddress = (baseSiteId: string, cartId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/addresses/delivery`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name Authorize1
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/applepay/authorize
   * @secure
   */
  authorize1 = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: ApplePayPayment,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applepay/authorize`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name PrepareCartToApplePayExpressCheckoutPayment
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/applepay/expresscheckout/preparecart
   * @secure
   */
  prepareCartToApplePayExpressCheckoutPayment = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    params: RequestParams = {},
  ) =>
    this.request<ApplePayPaymentRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applepay/expresscheckout/preparecart`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name GetApplePayPaymentRequest
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/applepay/paymentrequest/create
   * @secure
   */
  getApplePayPaymentRequest = (baseSiteId: string, userId: string, cartId: string, params: RequestParams = {}) =>
    this.request<ApplePayPaymentRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applepay/paymentrequest/create`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name SetPaymentMethod1
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/applepay/select
   * @secure
   */
  setPaymentMethod1 = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: SopPaymentDetails,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applepay/select`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name UpdateShippingAddress
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/applepay/shippingaddress/update
   * @secure
   */
  updateShippingAddress = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: ApplePayPaymentContact,
    params: RequestParams = {},
  ) =>
    this.request<ApplePayShippingMethodUpdate, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applepay/shippingaddress/update`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags apple-pay-controller
   * @name UpdateShippingMethod
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/applepay/shippingmethod/update
   * @secure
   */
  updateShippingMethod = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: ApplePayShippingMethod,
    params: RequestParams = {},
  ) =>
    this.request<ApplePayShippingMethodUpdate, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applepay/shippingmethod/update`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Assigns a voucher to the cart using the voucher identifier. This endpoint is added in the 2211.28 update.
   *
   * @tags Cart Promotions
   * @name ApplyCartVoucher
   * @summary Assigns a voucher to the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/applyVoucher
   * @secure
   */
  applyCartVoucher = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPVoucherRequest,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/applyVoucher`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags cart-suggestion-occ-controller
   * @name GetCartSuggestion
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/cart-suggestion
   * @secure
   */
  getCartSuggestion = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    query: {
      /** @default "FULL" */
      fields?: string;
      filterPurchased: boolean;
      /** @format int32 */
      maximumNumberProducts: number;
      productReferenceTypeEnums: (
        | "ACCESSORIES"
        | "ALTERNATIVE"
        | "COLLECTIONS"
        | "BASE_PRODUCT"
        | "IMPULSE_BUYING"
        | "CONSISTS_OF"
        | "DIFF_ORDERUNIT"
        | "FOLLOWUP"
        | "MANDATORY"
        | "SIMILAR"
        | "SELECT"
        | "SPAREPART"
        | "OTHERS"
        | "UPSELLING"
        | "CROSSELLING"
      )[];
    },
    params: RequestParams = {},
  ) =>
    this.request<Product[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/cart-suggestion`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a clone of a saved cart. Customers can provide a name and a description for the cloned cart even though they aren't mandatory parameters. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use '/copySavedCart' instead.
   *
   * @tags Save Cart
   * @name DoCartClone
   * @summary Creates a clone of a saved cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/clonesavedcart
   * @deprecated
   * @secure
   */
  doCartClone = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /** Description of the cloned cart. */
      description?: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Name of the cloned cart. */
      name?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/clonesavedcart`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of stores that have all the cart entries in stock and ready for pickup. Note: The response returns an empty list if no store has all the products in stock or if the products are all associated with the same pickup location.
   *
   * @tags Carts
   * @name GetConsolidatedPickupLocations
   * @summary Retrieves a list of pickup options.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/consolidate
   * @secure
   */
  getConsolidatedPickupLocations = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PointOfServiceList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/consolidate`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates the store location where the customer will pick up all the products. Note: If any product is out of stock at the specified location, this product is removed from the cart.
   *
   * @tags Carts
   * @name CreateConsolidatedPickupLocation
   * @summary Creates a consolidated pickup location.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/consolidate
   * @secure
   */
  createConsolidatedPickupLocation = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** The name of the store where items will be picked up */
      storeName: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModificationList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/consolidate`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a clone of a saved cart. Customers can provide a name and a description for the cloned cart even though they aren't mandatory parameters. This endpoint is added in the 2211.28 update.
   *
   * @tags Save Cart
   * @name CopySavedCart
   * @summary Creates a clone of a saved cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/copySavedCart
   * @secure
   */
  copySavedCart = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPSavedCartRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/copySavedCart`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the cost center for the cart during the checkout process.
   *
   * @tags B2B Carts
   * @name ReplaceOrgCartCostCenter
   * @summary Updates the cost center for the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/costcenter
   * @secure
   */
  replaceOrgCartCostCenter = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /**
       * Cost center identifier.
       * @example "00000001"
       */
      costCenterId: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Cart, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/costcenter`,
      method: "PUT",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves information about the delivery mode selected for the cart, including the delivery mode code, name, cost, and so on.
   *
   * @tags Cart Delivery Modes
   * @name GetCartDeliveryMode
   * @summary Retrieves the delivery mode for the cart.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/deliverymode
   * @secure
   */
  getCartDeliveryMode = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<DeliveryMode, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/deliverymode`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the delivery mode details for the cart based on the specified delivery mode identifier.
   *
   * @tags Cart Delivery Modes
   * @name ReplaceCartDeliveryMode
   * @summary Updates the delivery mode for the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/deliverymode
   * @secure
   */
  replaceCartDeliveryMode = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /** Delivery mode identifier (code) */
      deliveryModeId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/deliverymode`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Cart Delivery Modes
   * @name RemoveCartDeliveryMode
   * @summary Deletes the delivery mode from the cart.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/deliverymode
   * @secure
   */
  removeCartDeliveryMode = (baseSiteId: string, cartId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/deliverymode`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the delivery modes defined for the current base store and the cart delivery address. If the cart does not have a delivery address, an empty list will be returned.
   *
   * @tags Cart Delivery Modes
   * @name GetCartDeliveryModes
   * @summary Retrieves the delivery modes for the current store and delivery address.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/deliverymodes
   * @secure
   */
  getCartDeliveryModes = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<DeliveryModeList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/deliverymodes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Assigns an email to the cart. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use '/setEmail' instead.
   *
   * @tags Carts
   * @name ReplaceCartGuestUser
   * @summary Assigns an email address to the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/email
   * @deprecated
   * @secure
   */
  replaceCartGuestUser = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /** Email of the guest user. It will be used during the checkout process. */
      email: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/email`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves a list of cart entries with the product data.
   *
   * @tags Cart Entries
   * @name GetCartEntries
   * @summary Retrieves the cart entries.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/entries
   * @secure
   */
  getCartEntries = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderEntryList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entries`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Adds a product to the specified cart.
   *
   * @tags Cart Entries
   * @name CreateCartEntry
   * @summary Assigns a product to the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/entries
   * @secure
   */
  createCartEntry = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: OrderEntry,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entries`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Cart Entries
   * @name GetCartEntry
   * @summary Retrieves the details of a cart entry.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/entries/{entryNumber}
   * @secure
   */
  getCartEntry = (
    baseSiteId: string,
    cartId: string,
    entryNumber: number,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderEntry, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entries/${entryNumber}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the quantity of a single cart entry and the details of the pickup store. Attributes not provided in the request will be defined again (set to null or default)
   *
   * @tags Cart Entries
   * @name ReplaceCartEntry
   * @summary Updates the details of a cart entry.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/entries/{entryNumber}
   * @secure
   */
  replaceCartEntry = (
    baseSiteId: string,
    cartId: string,
    entryNumber: number,
    userId: string,
    data: OrderEntry,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entries/${entryNumber}`,
      method: "PUT",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Cart Entries
   * @name RemoveCartEntry
   * @summary Deletes the cart entry.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/entries/{entryNumber}
   * @secure
   */
  removeCartEntry = (
    baseSiteId: string,
    cartId: string,
    entryNumber: number,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entries/${entryNumber}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Updates the quantity of a single cart entry and the details of the pickup store.
   *
   * @tags Cart Entries
   * @name UpdateCartEntry
   * @summary Updates the details of a cart entry.
   * @request PATCH:/{baseSiteId}/users/{userId}/carts/{cartId}/entries/{entryNumber}
   * @secure
   */
  updateCartEntry = (
    baseSiteId: string,
    cartId: string,
    entryNumber: number,
    userId: string,
    data: OrderEntry,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entries/${entryNumber}`,
      method: "PATCH",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Cart Entry Groups
   * @name AddToCartEntryGroup
   * @summary Assigns a product to a cart entry group.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/entrygroups/{entryGroupNumber}
   * @secure
   */
  addToCartEntryGroup = (
    baseSiteId: string,
    cartId: string,
    entryGroupNumber: number,
    userId: string,
    data: OrderEntry,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entrygroups/${entryGroupNumber}`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes an entry group from the associated cart.
   *
   * @tags Cart Entry Groups
   * @name RemoveCartEntryGroup
   * @summary Deletes an entry group.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/entrygroups/{entryGroupNumber}
   * @secure
   */
  removeCartEntryGroup = (
    baseSiteId: string,
    cartId: string,
    entryGroupNumber: number,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/entrygroups/${entryGroupNumber}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Updates the cart without corresponding saved cart attributes by flagging it for deletion. The cart is not deleted from the database, but without the saved cart properties, the cart will be handled by the cart removal job just like any other cart.
   *
   * @tags Save Cart
   * @name DoUpdateFlagForDeletion
   * @summary Updates the cart by flagging it for deletion.
   * @request PATCH:/{baseSiteId}/users/{userId}/carts/{cartId}/flagForDeletion
   * @secure
   */
  doUpdateFlagForDeletion = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/flagForDeletion`,
      method: "PATCH",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name ApplyGiftCard
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/gift-cards/{code}/apply
   * @secure
   */
  applyGiftCard = (
    code: string,
    baseSiteId: string,
    userId: string,
    cartId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
      /** @format double */
      maxAmount?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<GiftCardPayment, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/gift-cards/${code}/apply`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name RemoveGiftCardFromCart2
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/gift-cards/{code}/remove
   * @secure
   */
  removeGiftCardFromCart2 = (
    code: string,
    baseSiteId: string,
    userId: string,
    cartId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/gift-cards/${code}/remove`,
      method: "DELETE",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name RemoveGiftCardFromCart
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/gift-cards/{code}/set-max-amount
   * @secure
   */
  removeGiftCardFromCart = (
    code: string,
    baseSiteId: string,
    userId: string,
    cartId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
      /** @format double */
      maxAmount?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<GiftCardPayment, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/gift-cards/${code}/set-max-amount`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags google-pay-controller
   * @name Authorize
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/googlepay/authorize
   * @secure
   */
  authorize = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: GooglePayResponsePayment,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/googlepay/authorize`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags google-pay-controller
   * @name SetPaymentMethod
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/googlepay/select
   * @secure
   */
  setPaymentMethod = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: SopPaymentDetails,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/googlepay/select`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags google-pay-controller
   * @name GetShippingOptions
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/googlepay/shippingoptions
   * @secure
   */
  getShippingOptions = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: GooglePayIntermediateAddress,
    params: RequestParams = {},
  ) =>
    this.request<GooglePayShippingMethodConfig, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/googlepay/shippingoptions`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags google-pay-controller
   * @name GetTransactionInfo
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/googlepay/transactioninfo
   * @secure
   */
  getTransactionInfo = (baseSiteId: string, userId: string, cartId: string, params: RequestParams = {}) =>
    this.request<string, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/googlepay/transactioninfo`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a guest user, and assigns the user to the cart. This api is specifically designed to create a guest user for a cart that only has an anonymous user assigned. Note: API will deny access if the cart already has a normal user or a guest user assigned
   *
   * @tags Carts
   * @name CreateCartGuestUser
   * @summary Creates a guest user for the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/guestuser
   * @secure
   */
  createCartGuestUser = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPGuestUserRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SAPGuestUserRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/guestuser`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Updates profile for current cart guest user. This API is specifically designed to update profile for guest user, so it can only be accessed after a guest user has been created for the cart. Only attributes provided in the request body will be changed. Note: API will deny access if the cart already has a normal user or no user assigned
   *
   * @tags Carts
   * @name UpdateCurrentUserProfile
   * @summary Updates profile for current cart guest user.
   * @request PATCH:/{baseSiteId}/users/{userId}/carts/{cartId}/guestuser
   * @secure
   */
  updateCurrentUserProfile = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPGuestUserRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SAPGuestUserRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/guestuser`,
      method: "PATCH",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the information required to create a subscription that contacts the payment provider directly. This information contains the URL of the payment provider and a list of required parameters.
   *
   * @tags Carts
   * @name GetSopPaymentRequestDetails
   * @summary Retrieves the information required to create a subscription.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/payment/sop/request
   * @secure
   */
  getSopPaymentRequestDetails = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /**
       * Define which url should be returned
       * @default false
       */
      extendedMerchantCallback?: boolean;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** The URL that the payment provider uses to return payment information. Possible values for responseUrl include the following: “orderPage_cancelResponseURL”, “orderPage_declineResponseURL”, and “orderPage_receiptResponseURL”. */
      responseUrl: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/payment/sop/request`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the response from the payment provider after creating the SOP payment subscription. If the payment subscription was created successfully, the payment details are returned. If no response from the payment provider, a "202 Accepted" status is returned. Otherwise, an error response is returned. Note: The execution of the “Try it out” button always returns an error because the extended carts controller handles parameters differently depending on which payment provider is used.
   *
   * @tags Carts
   * @name GetSopPaymentResponse
   * @summary Retrieves the create subscription response from the payment provider.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/payment/sop/response
   * @secure
   */
  getSopPaymentResponse = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentDetails, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/payment/sop/response`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description If the SOP payment subscription was successfully created, the payment details are defined and returned. Note: The execution of the “Try it out” button always returns an error because the extended carts controller handles parameters differently, depending on which payment provider is used.
   *
   * @tags Carts
   * @name DoHandleSopPaymentResponse
   * @summary Creates the SOP payment details.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/payment/sop/response
   * @secure
   */
  doHandleSopPaymentResponse = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentDetails, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/payment/sop/response`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes the payment provider response for the SOP payment subscription.
   *
   * @tags Carts
   * @name RemoveSopPaymentResponse
   * @summary Deletes the response from the payment provider.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/payment/sop/response
   * @secure
   */
  removeSopPaymentResponse = (baseSiteId: string, cartId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/payment/sop/response`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Sets credit card payment details for the specified cart.
   *
   * @tags Cart Payments
   * @name ReplaceCartPaymentDetails
   * @summary Sets credit card payment details for the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/paymentdetails
   * @secure
   */
  replaceCartPaymentDetails = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /** Payment details identifier. */
      paymentDetailsId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/paymentdetails`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Creates the details of a new credit card payment and assigns it to the cart.
   *
   * @tags Cart Payments
   * @name CreateCartPaymentDetails
   * @summary Creates details of a new credit card payment for the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/paymentdetails
   * @secure
   */
  createCartPaymentDetails = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: PaymentDetails,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentDetails, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/paymentdetails`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the payment type for the cart during the checkout process. If the purchaseOrderNumber is not null, it will also be updated for the cart.
   *
   * @tags B2B Carts
   * @name ReplaceOrgCartPaymentType
   * @summary Updates the payment type for the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/paymenttype
   * @secure
   */
  replaceOrgCartPaymentType = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Payment type choice. Examples:card,account */
      paymentType: string;
      /** Purchase order number to assign to the cart during the checkout process. */
      purchaseOrderNumber?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Cart, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/paymenttype`,
      method: "PUT",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags product-personalization-controller
   * @name AddProductPersonalizationForEntry
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/personalization/entries/{entryNumber}
   * @secure
   */
  addProductPersonalizationForEntry = (
    entryNumber: number,
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: {
      /** @format binary */
      productPersonalizedImage: File;
      /** @format binary */
      customImage?: File;
    },
    query?: {
      customImagePosition?: string;
      customText?: string;
      customTextColor?: string;
      customTextPosition?: string;
      customTextSize?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/personalization/entries/${entryNumber}`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.FormData,
      ...params,
    });
  /**
   * @description Retrieves information about the promotions applied to the cart. Requests pertaining to promotions have been developed for the previous version of promotions and vouchers, and as a result, some of them are currently not compatible with the new promotions engine.
   *
   * @tags Cart Promotions
   * @name GetCartPromotions
   * @summary Retrieves the cart promotions.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/promotions
   * @secure
   */
  getCartPromotions = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PromotionResultList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/promotions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Applies a promotion to the cart using the promotion identifier. Requests pertaining to promotions have been developed for the previous version of promotions and vouchers, and as a result, some of them are currently not compatible with the new promotions engine.
   *
   * @tags Cart Promotions
   * @name DoApplyCartPromotion
   * @summary Assigns a promotion to the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/promotions
   * @secure
   */
  doApplyCartPromotion = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /**
       * Promotion identifier.
       * @example "percentage_discount_on_camera"
       */
      promotionId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/promotions`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves information about the promotion using the promotion identifier associated with the cart. Requests pertaining to promotions have been developed for the previous version of promotions and vouchers, and as a result, some of them are currently not compatible with the new promotions engine.
   *
   * @tags Cart Promotions
   * @name GetCartPromotion
   * @summary Retrieves information about the promotion.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/promotions/{promotionId}
   * @secure
   */
  getCartPromotion = (
    baseSiteId: string,
    cartId: string,
    promotionId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PromotionResultList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/promotions/${promotionId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes the promotion of the order using the promotion identifier defined for the cart. Requests pertaining to promotions have been developed for the previous version of promotions and vouchers, and as a result, some of them are currently not compatible with the new promotions engine.
   *
   * @tags Cart Promotions
   * @name RemoveCartPromotion
   * @summary Deletes the promotion.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/promotions/{promotionId}
   * @secure
   */
  removeCartPromotion = (
    baseSiteId: string,
    cartId: string,
    promotionId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/promotions/${promotionId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Removes a voucher associated with the current cart.
   *
   * @tags Cart Promotions
   * @name DoCartVoucherRemoval
   * @summary Removes a voucher defined for the current cart. This endpoint is added in the 2211.28 update.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/removeVoucher
   * @secure
   */
  doCartVoucherRemoval = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPVoucherRequest,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/removeVoucher`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Sets the requested retrieval date with a given date for the cart.
   *
   * @tags Carts
   * @name SetCartRequestedRetrievalDate
   * @summary Sets the requested retrieval date for a cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/requestedretrievaldate
   * @secure
   */
  setCartRequestedRetrievalDate = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Customer requested date for order retrieval
       * @example "2023-03-29"
       */
      requestedRetrievalAt?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/requestedretrievaldate`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Restores the data of a saved cart.
   *
   * @tags Save Cart
   * @name DoUpdateSavedCart
   * @summary Restores a saved cart.
   * @request PATCH:/{baseSiteId}/users/{userId}/carts/{cartId}/restoresavedcart
   * @secure
   */
  doUpdateSavedCart = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/restoresavedcart`,
      method: "PATCH",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates a cart to explicitly save it. Adds the name and description of the saved cart if specified. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use '/savedCart' instead.
   *
   * @tags Save Cart
   * @name DoSaveCart
   * @summary Updates a cart to save it.
   * @request PATCH:/{baseSiteId}/users/{userId}/carts/{cartId}/save
   * @deprecated
   * @secure
   */
  doSaveCart = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Description of the saved cart. */
      saveCartDescription?: string;
      /** Name of the saved cart. */
      saveCartName?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/save`,
      method: "PATCH",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates a cart to explicitly save it. Adds the name and description of the saved cart if specified. This endpoint is added in the 2211.28 update.
   *
   * @tags Save Cart
   * @name DoCartSave
   * @summary Updates a cart to save it.
   * @request PATCH:/{baseSiteId}/users/{userId}/carts/{cartId}/savedCart
   * @secure
   */
  doCartSave = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPSavedCartRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/savedCart`,
      method: "PATCH",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the saved cart for an authenticated customer using the cart identifier.  To get entryGroup information, set fields value as follows: fields=savedCartData(entryGroups(BASIC)), fields=savedCartData(entryGroups(DEFAULT)), or fields=savedCartData(entryGroups(FULL)).
   *
   * @tags Save Cart
   * @name GetSavedCart
   * @summary Retrieves the saved cart.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/savedcart
   * @secure
   */
  getSavedCart = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SaveCartResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/savedcart`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Assigns an email to the cart. This endpoint is added in the 2211.28 update.
   *
   * @tags Carts
   * @name SetGuestUserEmail
   * @summary Assigns an email address to the cart.
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/setEmail
   * @secure
   */
  setGuestUserEmail = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    data: SAPGuestUserRequest,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/setEmail`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags generic-add-to-cart-controller
   * @name SetShipSeparately
   * @request PUT:/{baseSiteId}/users/{userId}/carts/{cartId}/ship-separately
   * @secure
   */
  setShipSeparately = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    query: {
      shipSeparately: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/ship-separately`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags tradein-controller
   * @name AddCreditDiscount
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/tradein/credit-discount
   * @secure
   */
  addCreditDiscount = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    query: {
      /** @format double */
      creditValue: number;
      /** @format int32 */
      entryNumber: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/tradein/credit-discount`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags tradein-controller
   * @name UploadTradeinImage
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/tradein/image
   * @secure
   */
  uploadTradeinImage = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    query: {
      /** @format int32 */
      entryNumber: number;
      images: File[];
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/tradein/image`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags tradein-controller
   * @name AddPaymentForCheckout
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/tradein/payment-for-checkout
   * @secure
   */
  addPaymentForCheckout = (baseSiteId: string, userId: string, cartId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/tradein/payment-for-checkout`,
      method: "POST",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags tradein-controller
   * @name AddTradeinVehicle
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/tradein/vehicle
   * @secure
   */
  addTradeinVehicle = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    query: {
      /** @format int32 */
      entryNumber: number;
      vehicleCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/tradein/vehicle`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Validates the cart and returns the cart data during checkout and quotation.
   *
   * @tags Carts
   * @name ValidateCart
   * @summary Validates the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/validate
   * @secure
   */
  validateCart = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModificationList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/validate`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a list of vouchers associated with the cart.
   *
   * @tags Cart Promotions
   * @name GetCartVouchers
   * @summary Retrieves a list of vouchers.
   * @request GET:/{baseSiteId}/users/{userId}/carts/{cartId}/vouchers
   * @secure
   */
  getCartVouchers = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<VoucherList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/vouchers`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Assigns a voucher to the cart using the voucher identifier. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use '/applyVoucher' instead.
   *
   * @tags Cart Promotions
   * @name DoApplyCartVoucher
   * @summary Assigns a voucher to the cart.
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/vouchers
   * @deprecated
   * @secure
   */
  doApplyCartVoucher = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    query: {
      /**
       * Voucher identifier (code)
       * @example "VCHR-H8BC-Y3D5-34AL"
       */
      voucherId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/vouchers`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Deletes a voucher associated with the current cart. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use '/removeVoucher' instead.
   *
   * @tags Cart Promotions
   * @name RemoveCartVoucher
   * @summary Deletes a voucher defined for the current cart.
   * @request DELETE:/{baseSiteId}/users/{userId}/carts/{cartId}/vouchers/{voucherId}
   * @deprecated
   * @secure
   */
  removeCartVoucher = (
    baseSiteId: string,
    cartId: string,
    userId: string,
    voucherId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/vouchers/${voucherId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags generic-add-to-cart-controller
   * @name AddToCart
   * @request POST:/{baseSiteId}/users/{userId}/carts/{cartId}/xadd
   * @secure
   */
  addToCart = (
    baseSiteId: string,
    userId: string,
    cartId: string,
    data: AddToCartParams[],
    query?: {
      /** fields */
      fields?: "BASIC" | "DEFAULT" | "FULL";
    },
    params: RequestParams = {},
  ) =>
    this.request<CartModification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/carts/${cartId}/xadd`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the CMS components using the specified identifiers. If you don't provide any component identifiers, all of the components will be retrieved. The components list is filtered by the specified catalog, product, or category restrictions.The result is sorted according to the sort parameter.
   *
   * @tags Components
   * @name GetComponentsByIdsAndUser
   * @summary Retrieves the component data.
   * @request GET:/{baseSiteId}/users/{userId}/cms/components
   * @secure
   */
  getComponentsByIdsAndUser = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Catalog code
       * @example "electronics"
       */
      catalogCode?: string;
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /**
       * List of Component identifiers
       * @example "FacebookLink,ContactUsLink"
       */
      componentIds?: string[];
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Number of results returned per page. Default value: 10.
       * @format int32
       * @default 10
       */
      pageSize?: number;
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
      /**
       * Sorting method applied to the return results.
       * @example "uid:asc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ComponentList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/cms/components`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the CMS component data.
   *
   * @tags Components
   * @name GetComponentByIdAndUser
   * @summary Retrieves the component data.
   * @request GET:/{baseSiteId}/users/{userId}/cms/components/{componentId}
   * @secure
   */
  getComponentByIdAndUser = (
    baseSiteId: string,
    componentId: string,
    userId: string,
    query?: {
      /**
       * Catalog code
       * @example "electronics"
       */
      catalogCode?: string;
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Component, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/cms/components/${componentId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the page data and CMS content slots using the pageLabel/pageId or the code parameter. If you don't provide a value for one of these parameters, the homepage CMS content slots are retrieved. Content pages can be filtered using pageLabel/pageId while the other page types can be filtered using the specified code.
   *
   * @tags Pages
   * @name GetPageWithUser
   * @summary Retrieves the page data and the CMS content slots.
   * @request GET:/{baseSiteId}/users/{userId}/cms/pages
   * @secure
   */
  getPageWithUser = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** Page code. Examples: homepage, electronics, cameras, 585. */
      code?: string;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Page id. When pageId is provided, pageLabelOrId will be ignored.
       * @example "cartPage"
       */
      pageId?: string;
      /**
       * Page label. If no page has a label that matches the page label exactly, try to find pages whose label starts with a section of the page label.
       * Note: URL encoding on the page label should be applied when the label contains special characters. When pageLabel is provided, pageLabelOrId will be ignored.
       * @example "/cart"
       */
      pageLabel?: string;
      /**
       * Page Label or Id. If no page has a label that matches the page label exactly, try to find pages whose label starts with a section of the page label. Otherwise, try to find the page by id.
       * When label and ID values can match, passing in the pageId parameter may result in obtaining variation pages with the same pageLabel but different pageId. Therefore, it is advisable to use both the pageId and pageLabel parameters to ensure accuracy.Note: URL encoding on the page label should be applied when the label contains special characters.
       * @deprecated
       * @example "/cart"
       */
      pageLabelOrId?: string;
      /** Page type */
      pageType?: "ContentPage" | "ProductPage" | "CategoryPage" | "CatalogPage";
    },
    params: RequestParams = {},
  ) =>
    this.request<CMSPage, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/cms/pages`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the page data and CMS content slots, each of which contains a list of CMS component data. The page identifier is required.
   *
   * @tags Pages
   * @name GetPageByIdAndUser
   * @summary Retrieves the page data and CMS content slots using the page identifier.
   * @request GET:/{baseSiteId}/users/{userId}/cms/pages/{pageId}
   * @secure
   */
  getPageByIdAndUser = (
    baseSiteId: string,
    pageId: string,
    userId: string,
    query?: {
      /**
       * Category code
       * @example 576
       */
      categoryCode?: string;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Product code
       * @example 553637
       */
      productCode?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CMSPage, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/cms/pages/${pageId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Pages
   * @name GetAllPagesWithUser
   * @summary Retrieves the page data.
   * @request GET:/{baseSiteId}/users/{userId}/cms/sitepages
   * @secure
   */
  getAllPagesWithUser = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /** Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC, DEFAULT, FULL. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
      /**
       * Number of results returned per page. Default value: 10.
       * @format int32
       * @default 10
       */
      pageSize?: number;
      /** Page type. */
      pageType?: "ContentPage" | "ProductPage" | "CategoryPage" | "CatalogPage";
      /**
       * Sorting method applied to the return results.
       * @example "uid:asc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CMSPageList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/cms/sitepages`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates consent to collect or transfer the personal data of a customer.
   *
   * @tags Consents
   * @name DoGiveConsent
   * @summary Creates consent.
   * @request POST:/{baseSiteId}/users/{userId}/consents
   * @secure
   */
  doGiveConsent = (
    baseSiteId: string,
    userId: string,
    query: {
      /**
       * Consent template identifier.
       * @example "00001000"
       */
      consentTemplateId: string;
      /**
       * Consent template version.
       * @format int32
       * @example "00001000"
       */
      consentTemplateVersion: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<ConsentTemplate, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/consents`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description If the consent was given, then the consent is deleted. If the consent was withdrawn, then it returns a withdrawal error. If the consent doesn't exist, it returns a "not found" error. If the customer is anonymous, then it returns an "access denied" error.
   *
   * @tags Consents
   * @name RemoveConsent
   * @summary Deletes the user consent.
   * @request DELETE:/{baseSiteId}/users/{userId}/consents/{consentCode}
   * @secure
   */
  removeConsent = (baseSiteId: string, consentCode: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/consents/${consentCode}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description If a customer has not given or has withdrawn their consent to the template, a date is not returned.
   *
   * @tags Consents
   * @name GetConsentTemplates
   * @summary Retrieves the consents.
   * @request GET:/{baseSiteId}/users/{userId}/consenttemplates
   * @secure
   */
  getConsentTemplates = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ConsentTemplateList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/consenttemplates`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the consent using the template identifier. If a customer has not given or has withdrawn their consent to the template, a date is not returned.
   *
   * @tags Consents
   * @name GetConsentTemplate
   * @summary Retrieves the consent.
   * @request GET:/{baseSiteId}/users/{userId}/consenttemplates/{consentTemplateId}
   * @secure
   */
  getConsentTemplate = (
    baseSiteId: string,
    consentTemplateId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ConsentTemplate, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/consenttemplates/${consentTemplateId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the list of customer coupons associated with a customer.
   *
   * @tags Customer Coupons
   * @name GetCustomerCoupons
   * @summary Retrieves the coupons of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/customercoupons
   * @secure
   */
  getCustomerCoupons = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /** Flag to indicate if the total number of results is needed or not. */
      needsTotal?: "true" | "false";
      /**
       * The number of results returned per page.
       * @format int32
       * @default 10
       * @example 10
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @example "key1:asc,key2:desc"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CustomerCouponSearchResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Claims a customer coupon by coupon code. Once the coupon is claimed, customer can apply it to the cart to enjoy discounts or other benefits. This endpoint is added in the 2211.28 update.
   *
   * @tags Customer Coupons
   * @name ClaimCustomerCoupon
   * @summary Claims a customer coupon.
   * @request POST:/{baseSiteId}/users/{userId}/customercoupons/claim
   * @secure
   */
  claimCustomerCoupon = (
    baseSiteId: string,
    userId: string,
    data: SAPCustomerCouponOperationRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CustomerCoupon2Customer, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/claim`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Discards a customer coupon by coupon code. Once the coupon is discarded, customer will no longer be able to apply it to the cart. This endpoint is added in the 2211.28 update.
   *
   * @tags Customer Coupons
   * @name DiscardCustomerCoupon
   * @summary Discards a customer coupon.
   * @request POST:/{baseSiteId}/users/{userId}/customercoupons/discard
   * @secure
   */
  discardCustomerCoupon = (
    baseSiteId: string,
    userId: string,
    data: SAPCustomerCouponOperationRequest,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/discard`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Subscribes to coupon notifications to receive alerts when the coupon date is approaching or expiring. This endpoint is added in the 2211.28 update.
   *
   * @tags Customer Coupons
   * @name SubscribeNotificationsOfCustomerCoupon
   * @summary Subscribes to coupon notifications.
   * @request POST:/{baseSiteId}/users/{userId}/customercoupons/subscribeNotifications
   * @secure
   */
  subscribeNotificationsOfCustomerCoupon = (
    baseSiteId: string,
    userId: string,
    data: SAPCustomerCouponOperationRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CustomerCouponNotification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/subscribeNotifications`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Unsubscribes from coupon notifications for a specific coupon to stop receiving alerts when the coupon date is approaching or expiring. This endpoint is added in the 2211.28 update.
   *
   * @tags Customer Coupons
   * @name UnsubscribeNotificationsOfCustomerCoupon
   * @summary Unsubscribes from coupon notifications.
   * @request POST:/{baseSiteId}/users/{userId}/customercoupons/unsubscribeNotifications
   * @secure
   */
  unsubscribeNotificationsOfCustomerCoupon = (
    baseSiteId: string,
    userId: string,
    data: SAPCustomerCouponOperationRequest,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/unsubscribeNotifications`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Claims and remembers a customer coupon by coupon code. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use the POST {baseSiteId}/users/{userId}/customercoupons/claim instead.
   *
   * @tags Customer Coupons
   * @name DoClaimCustomerCoupon
   * @summary Claims and remembers a customer coupon.
   * @request POST:/{baseSiteId}/users/{userId}/customercoupons/{couponCode}/claim
   * @deprecated
   * @secure
   */
  doClaimCustomerCoupon = (
    baseSiteId: string,
    couponCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CustomerCoupon2Customer, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/${couponCode}/claim`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Disclaims a customer coupon by coupon code. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use the POST {baseSiteId}/users/{userId}/customercoupons/discard instead.
   *
   * @tags Customer Coupons
   * @name UnassignCustomerCoupon
   * @summary Disclaims a customer coupon.
   * @request DELETE:/{baseSiteId}/users/{userId}/customercoupons/{couponCode}/claim
   * @deprecated
   * @secure
   */
  unassignCustomerCoupon = (baseSiteId: string, couponCode: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/${couponCode}/claim`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Creates a coupon notification to alert a customer when the coupon date is approaching or expiring. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use the POST {baseSiteId}/users/{userId}/customercoupons/subscribeNotifications instead.
   *
   * @tags Customer Coupons
   * @name DoSubscribeToCustomerCoupon
   * @summary Creates a coupon notification.
   * @request POST:/{baseSiteId}/users/{userId}/customercoupons/{couponCode}/notification
   * @deprecated
   * @secure
   */
  doSubscribeToCustomerCoupon = (
    baseSiteId: string,
    couponCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CustomerCouponNotification, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/${couponCode}/notification`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes the coupon notification that alerts a customer when the coupon date is approaching or expiring. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use the POST /{baseSiteId}/users/{userId}/customercoupons/unsubscribeNotifications instead.
   *
   * @tags Customer Coupons
   * @name DoUnsubscribeFromCustomerCoupon
   * @summary Deletes a coupon notification.
   * @request DELETE:/{baseSiteId}/users/{userId}/customercoupons/{couponCode}/notification
   * @deprecated
   * @secure
   */
  doUnsubscribeFromCustomerCoupon = (
    baseSiteId: string,
    couponCode: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customercoupons/${couponCode}/notification`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Users
   * @name GetUserCustomerGroups
   * @summary Retrieves the customer groups.
   * @request GET:/{baseSiteId}/users/{userId}/customergroups
   * @secure
   */
  getUserCustomerGroups = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<UserGroupList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/customergroups`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags purchase-dashboard-controller
   * @name GetAnnualExpensesSummary
   * @request GET:/{baseSiteId}/users/{userId}/dashboard/annualExpensesSummary
   * @secure
   */
  getAnnualExpensesSummary = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<AnnualExpensesSummary, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/dashboard/annualExpensesSummary`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags purchase-dashboard-controller
   * @name GetCategorySpendSummary
   * @request GET:/{baseSiteId}/users/{userId}/dashboard/categorySpend
   * @secure
   */
  getCategorySpendSummary = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<CategorySpendSummary, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/dashboard/categorySpend`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags purchase-dashboard-controller
   * @name GetPagedCouponsRedemption
   * @request GET:/{baseSiteId}/users/{userId}/dashboard/coupons/redemption
   * @secure
   */
  getPagedCouponsRedemption = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * @format int32
       * @default 5
       */
      pageSize?: number;
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CouponRedemptionResponseList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/dashboard/coupons/redemption`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags purchase-dashboard-controller
   * @name GetMostExpensiveItems
   * @request GET:/{baseSiteId}/users/{userId}/dashboard/mostExpensive
   * @secure
   */
  getMostExpensiveItems = (
    baseSiteId: string,
    userId: string,
    query: {
      /** @default "DEFAULT" */
      fields?: string;
      /** @format int32 */
      itemsNumber: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/dashboard/mostExpensive`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags purchase-dashboard-controller
   * @name GetMostPurchasedItems
   * @request GET:/{baseSiteId}/users/{userId}/dashboard/mostPurchased
   * @secure
   */
  getMostPurchasedItems = (
    baseSiteId: string,
    userId: string,
    query: {
      /** @default "DEFAULT" */
      fields?: string;
      /** @format int32 */
      itemsNumber: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<PurchaseSummaryList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/dashboard/mostPurchased`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-data-controller
   * @name GetConfigDetails
   * @request GET:/{baseSiteId}/users/{userId}/emarsys/config
   * @secure
   */
  getConfigDetails = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<EmarsysConfig, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/emarsys/config`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-data-controller
   * @name GetLoyaltyConfig
   * @request GET:/{baseSiteId}/users/{userId}/emarsys/loyalty/config
   * @secure
   */
  getLoyaltyConfig = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<LoyaltyConfig, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/emarsys/loyalty/config`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags emarsys-data-controller
   * @name SelectLoyaltyPlanType
   * @request POST:/{baseSiteId}/users/{userId}/emarsys/loyalty/select-plan-type
   * @secure
   */
  selectLoyaltyPlanType = (
    baseSiteId: string,
    userId: string,
    query: {
      planType: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/emarsys/loyalty/select-plan-type`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the products and their future availabilities.
   *
   * @tags Future Stocks
   * @name GetFutureStocksList
   * @summary Retrieves the future availability of the products.
   * @request GET:/{baseSiteId}/users/{userId}/futureStocks
   * @secure
   */
  getFutureStocksList = (
    baseSiteId: string,
    userId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Products identifiers.
       * @example "3318057,72399000_55,72399000_56"
       */
      productCodes: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductFutureStocksList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/futureStocks`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Future Stocks
   * @name GetFutureStocks
   * @summary Retrieves the future availability of a product.
   * @request GET:/{baseSiteId}/users/{userId}/futureStocks/{productCode}
   * @secure
   */
  getFutureStocks = (
    baseSiteId: string,
    productCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductFutureStocks, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/futureStocks/${productCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name GetBoughtGiftCards
   * @request GET:/{baseSiteId}/users/{userId}/gift-cards/bought
   * @secure
   */
  getBoughtGiftCards = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<GiftCardList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/gift-cards/bought`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name GetOwnedGiftCards
   * @request GET:/{baseSiteId}/users/{userId}/gift-cards/owned
   * @secure
   */
  getOwnedGiftCards = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<GiftCardList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/gift-cards/owned`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name ActivateGiftCard
   * @request POST:/{baseSiteId}/users/{userId}/gift-cards/{code}/activate
   * @secure
   */
  activateGiftCard = (
    code: string,
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<GiftCard, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/gift-cards/${code}/activate`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name ApplyGiftCardToCart
   * @request POST:/{baseSiteId}/users/{userId}/gift-cards/{code}/applyToCart
   * @secure
   */
  applyGiftCardToCart = (
    code: string,
    baseSiteId: string,
    userId: string,
    query: {
      cartCode: string;
      cartUserUid: string;
      /** @default "DEFAULT" */
      fields?: string;
      /** @format double */
      maxAmount?: number;
    },
    params: RequestParams = {},
  ) =>
    this.request<GiftCardPayment, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/gift-cards/${code}/applyToCart`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags gift-card-controller
   * @name RemoveGiftCardFromCart1
   * @request DELETE:/{baseSiteId}/users/{userId}/gift-cards/{code}/removeFromCart
   * @secure
   */
  removeGiftCardFromCart1 = (
    code: string,
    baseSiteId: string,
    userId: string,
    query: {
      cartCode: string;
      cartUserUid: string;
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/gift-cards/${code}/removeFromCart`,
      method: "DELETE",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags gigya-configuration-controller
   * @name GuestCheckoutRegister
   * @request POST:/{baseSiteId}/users/{userId}/gigya/guest-checkout-register
   * @secure
   */
  guestCheckoutRegister = (
    baseSiteId: string,
    userId: string,
    query: {
      guid: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/gigya/guest-checkout-register`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Changes a customer's login name. Requires the customer's current password. This endpoint is deprecated in the 2211.23 update and its deletion is planned. Please use the POST /{baseSiteId}/users/{userId}/login instead.
   *
   * @tags Users
   * @name ReplaceUserLogin
   * @summary Changes customer's login name.
   * @request PUT:/{baseSiteId}/users/{userId}/login
   * @deprecated
   * @secure
   */
  replaceUserLogin = (
    baseSiteId: string,
    userId: string,
    query: {
      /** New login name of a customer. The name is case insensitive. */
      newLogin: string;
      /** Current password of a customer. */
      password: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/login`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Changes a customer's login id. Requires the customer's current password. This endpoint is added in the 2211.23 update.
   *
   * @tags Users
   * @name ChangeUserLoginId
   * @summary Changes customer's login id.
   * @request POST:/{baseSiteId}/users/{userId}/login
   * @secure
   */
  changeUserLoginId = (baseSiteId: string, userId: string, data: ReplaceLoginIdInput, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/login`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Publish notification event about successful login.
   *
   * @tags Login Notification
   * @name DoPublishSuccessfulLoginEvent
   * @summary Notify about successful login.
   * @request POST:/{baseSiteId}/users/{userId}/loginnotification
   * @secure
   */
  doPublishSuccessfulLoginEvent = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/loginnotification`,
      method: "POST",
      secure: true,
      ...params,
    });
  /**
   * @description Returns the notification preferences of the current customer.
   *
   * @tags Notification Preference
   * @name GetNotificationPreferences
   * @summary Gets all notification preferences of the current customer
   * @request GET:/{baseSiteId}/users/{userId}/notificationpreferences
   * @secure
   */
  getNotificationPreferences = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<NotificationPreferenceList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notificationpreferences`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the notification preference of the current customer.
   *
   * @tags Notification Preference
   * @name UpdateNotificationPreferences
   * @summary Updates the notification preferences of the current customer
   * @request PATCH:/{baseSiteId}/users/{userId}/notificationpreferences
   * @secure
   */
  updateNotificationPreferences = (
    baseSiteId: string,
    userId: string,
    data: BasicnotificationPreferenceList,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notificationpreferences`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags notification-controller
   * @name GetActiveNotificationsForUser
   * @request GET:/{baseSiteId}/users/{userId}/notifications
   * @secure
   */
  getActiveNotificationsForUser = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<NotificationList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notifications`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags notification-controller
   * @name CreateNotification
   * @request POST:/{baseSiteId}/users/{userId}/notifications
   * @secure
   */
  createNotification = (baseSiteId: string, userId: string, data: Notification, params: RequestParams = {}) =>
    this.request<Record<string, string>, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notifications`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags notification-controller
   * @name DeleteNotification
   * @request DELETE:/{baseSiteId}/users/{userId}/notifications/notification/{notificationId}
   * @secure
   */
  deleteNotification = (baseSiteId: string, notificationId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notifications/notification/${notificationId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags notification-controller
   * @name MarkNotificationAsRead
   * @request POST:/{baseSiteId}/users/{userId}/notifications/notification/{notificationId}/read
   * @secure
   */
  markNotificationAsRead = (baseSiteId: string, notificationId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notifications/notification/${notificationId}/read`,
      method: "POST",
      secure: true,
      ...params,
    });
  /**
   * @description Returns the site messages of current customer.
   *
   * @tags Site Messages
   * @name SiteMessages
   * @summary Gets all site messages of current customer.
   * @request GET:/{baseSiteId}/users/{userId}/notifications/sitemessages
   * @secure
   */
  siteMessages = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * The current result page requested.
       * @default "0"
       */
      currentPage?: string;
      /**
       * The flag for indicating if total number of results is needed or not.
       * @default "true"
       */
      needsTotal?: "true" | "false";
      /**
       * The number of results returned per page.
       * @default "10"
       */
      pageSize?: string;
      /** The sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SiteMessageSearchResult, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/notifications/sitemessages`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the list of order approval permissions given to a user. Such permissions allow the approval to exceed order, budget, or time threshold. The response may display the results across multiple pages, when applicable.
   *
   * @tags Order Approval Permissions
   * @name GetOrderApprovalPermissions
   * @summary Retrieves the order approval permissions.
   * @request GET:/{baseSiteId}/users/{userId}/orderApprovalPermissions
   * @secure
   */
  getOrderApprovalPermissions = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermissionList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderApprovalPermissions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates an order approval permission for a user. These permissions allow the approval to exceed order, budget, or time threshold in a workflow.
   *
   * @tags Order Approval Permissions
   * @name CreateOrderApprovalPermission
   * @summary Creates an order approval permission.
   * @request POST:/{baseSiteId}/users/{userId}/orderApprovalPermissions
   * @secure
   */
  createOrderApprovalPermission = (
    baseSiteId: string,
    userId: string,
    data: OrderApprovalPermission,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermission, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderApprovalPermissions`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Order Approval Permissions
   * @name GetOrderApprovalPermission
   * @summary Retrieves the order approval permission.
   * @request GET:/{baseSiteId}/users/{userId}/orderApprovalPermissions/{orderApprovalPermissionCode}
   * @secure
   */
  getOrderApprovalPermission = (
    baseSiteId: string,
    orderApprovalPermissionCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermission, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderApprovalPermissions/${orderApprovalPermissionCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Order Approval Permissions
   * @name UpdateOrderApprovalPermission
   * @summary Updates the order approval permission.
   * @request PATCH:/{baseSiteId}/users/{userId}/orderApprovalPermissions/{orderApprovalPermissionCode}
   * @secure
   */
  updateOrderApprovalPermission = (
    baseSiteId: string,
    orderApprovalPermissionCode: string,
    userId: string,
    data: OrderApprovalPermission,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermission, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderApprovalPermissions/${orderApprovalPermissionCode}`,
      method: "PATCH",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the order history for all return requests associated with a customer.
   *
   * @tags Return Requests
   * @name GetReturnRequests
   * @summary Retrieves the return request history of the customer.
   * @request GET:/{baseSiteId}/users/{userId}/orderReturns
   * @secure
   */
  getReturnRequests = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReturnRequestList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderReturns`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates an order return request. An order can be completely or partially returned. For a complete return, add all order entry numbers and quantities in the request body. For a partial return, only add the order entry numbers and quantities of the selected products.
   *
   * @tags Return Requests
   * @name CreateReturnRequest
   * @summary Creates an order return request.
   * @request POST:/{baseSiteId}/users/{userId}/orderReturns
   * @secure
   */
  createReturnRequest = (
    baseSiteId: string,
    userId: string,
    data: ReturnRequestEntryInputList,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReturnRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderReturns`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of a return request. To get entryGroup information, set fields value as follows: fields=order(entryGroups(BASIC)), fields=order(entryGroups(DEFAULT)), or fields=order(entryGroups(FULL)).
   *
   * @tags Return Requests
   * @name GetReturnRequest
   * @summary Retrieves the details of a return request.
   * @request GET:/{baseSiteId}/users/{userId}/orderReturns/{returnRequestCode}
   * @secure
   */
  getReturnRequest = (
    baseSiteId: string,
    returnRequestCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReturnRequest, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderReturns/${returnRequestCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the order return request. Only cancellation of the request is supported by setting the attribute status to CANCELLING. Cancellation of the return request cannot be reverted
   *
   * @tags Return Requests
   * @name UpdateReturnRequest
   * @summary Updates the order return request using the specified code.
   * @request PATCH:/{baseSiteId}/users/{userId}/orderReturns/{returnRequestCode}
   * @secure
   */
  updateReturnRequest = (
    baseSiteId: string,
    returnRequestCode: string,
    userId: string,
    data: ReturnRequestModification,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderReturns/${returnRequestCode}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves the orders that the user is allowed to approve.
   *
   * @tags Order Approvals
   * @name GetOrderApprovals
   * @summary Retrieves the orders to approve.
   * @request GET:/{baseSiteId}/users/{userId}/orderapprovals
   * @secure
   */
  getOrderApprovals = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderapprovals`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of an order to approve.
   *
   * @tags Order Approvals
   * @name GetOrderApproval
   * @summary Retrieves an order to approve.
   * @request GET:/{baseSiteId}/users/{userId}/orderapprovals/{orderApprovalCode}
   * @secure
   */
  getOrderApproval = (
    baseSiteId: string,
    orderApprovalCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApproval, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderapprovals/${orderApprovalCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a decision (approval or rejection) for the order, which will trigger the next step in the approval workflow.
   *
   * @tags Order Approvals
   * @name DoMakeOrderApprovalDecision
   * @summary Creates a decision for the order approval.
   * @request POST:/{baseSiteId}/users/{userId}/orderapprovals/{orderApprovalCode}/decision
   * @secure
   */
  doMakeOrderApprovalDecision = (
    baseSiteId: string,
    orderApprovalCode: string,
    userId: string,
    data: OrderApprovalDecision,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalDecision, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orderapprovals/${orderApprovalCode}/decision`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the order history of a customer. The response may display the results across multiple pages, when applicable.
   *
   * @tags Orders
   * @name GetUserOrderHistory
   * @summary Retrieves the order history of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/orders
   * @secure
   */
  getUserOrderHistory = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * The number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
      /**
       * Filters orders with specified status(es). For example, statuses = CANCELLED returns CANCELLED orders. To filter multiple statues, separate statues with "," and all orders with these statuses will be returned. For example, statuses = CANCELLED,COMPLETED,READY returns all orders with statuses CANCELLED,COMPLETED, and READY.
       * Options available are:
       * CANCELLING,
       * CHECKED_VALID,
       * CREATED,
       * OPEN,
       * READY,
       * CHECKED_INVALID,
       * ON_HOLD,
       * ON_VALIDATION,
       * PENDING_APPROVAL,
       * SUSPENDED,
       * COMPLETED,
       * PAYMENT_AUTHORIZED,
       * PENDING_APPROVAL_FROM_MERCHANT,
       * CANCELLED,
       * PAYMENT_NOT_AUTHORIZED,
       * PENDING_QUOTE,
       * APPROVED_QUOTE,
       * PAYMENT_AMOUNT_RESERVED,
       * PAYMENT_AMOUNT_NOT_RESERVED,
       * REJECTED_QUOTE,
       * APPROVED,
       * PAYMENT_CAPTURED,
       * PAYMENT_NOT_CAPTURED,
       * REJECTED,
       * APPROVED_BY_MERCHANT,
       * FRAUD_CHECKED,
       * ORDER_SPLIT,
       * REJECTED_BY_MERCHANT,
       * ASSIGNED_TO_ADMIN,
       * PROCESSING_ERROR,
       * B2B_PROCESSING_ERROR,
       * WAIT_FRAUD_MANUAL_CHECK,
       * PAYMENT_NOT_VOIDED,
       * TAX_NOT_VOIDED,
       * TAX_NOT_COMMITTED,
       * TAX_NOT_REQUOTED
       */
      statuses?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderHistoryList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates an order and returns the order details. The response contains all the order data.
   *
   * @tags Orders
   * @name PlaceOrder
   * @summary Creates an order.
   * @request POST:/{baseSiteId}/users/{userId}/orders
   * @secure
   */
  placeOrder = (
    baseSiteId: string,
    userId: string,
    query: {
      /** Cart code for logged in user, cart GUID for guest checkout */
      cartId: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Order, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the total number of orders for a customer in the response header, under the "x-total-count" attribute.
   *
   * @tags Orders
   * @name CountUserOrders
   * @summary Retrieves the total number of orders for a customer.
   * @request HEAD:/{baseSiteId}/users/{userId}/orders
   * @secure
   */
  countUserOrders = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** Filters only certain order statuses. For example, statuses=CANCELLED,CHECKED_VALID would only return orders with status CANCELLED or CHECKED_VALID. */
      statuses?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders`,
      method: "HEAD",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description This API supports placing order with asynchronous payment patterns like iFrame, hosted payment page and hosted field. With these payment patterns, the payment authorization is done independently with order placement API and the payment result is handled through asynchronous notifications. For instant payment method and delayed payment method, the order is placed directly after customers have successfully submitted the payments but the order process shall be in paused state until the payment notification is received and processed on Commerce side. Note: API can only be used when the baseStore's payment provider is configured as OPF, and completion of OPF-related order processes is required; otherwise, it will throw an exception.
   *
   * @tags Orders
   * @name PaymentAuthorizedOrderPlacement
   * @summary Place an order with authorized payment.
   * @request POST:/{baseSiteId}/users/{userId}/orders/paymentAuthorizedOrderPlacement
   * @secure
   */
  paymentAuthorizedOrderPlacement = (
    baseSiteId: string,
    userId: string,
    query: {
      /** Cart code for logged in user, cart GUID for guest checkout */
      cartId: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Order, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders/paymentAuthorizedOrderPlacement`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the order. To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags Orders
   * @name GetUserOrders
   * @summary Retrieves the order.
   * @request GET:/{baseSiteId}/users/{userId}/orders/{code}
   * @secure
   */
  getUserOrders = (
    baseSiteId: string,
    code: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Order, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders/${code}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Cancels an order, completely or partially. For a complete cancellation, add all the order entry numbers and quantities in the request body. For partial cancellation, only add the order entry numbers and quantities to be cancelled.
   *
   * @tags Orders
   * @name DoCancelOrder
   * @summary Cancels an order.
   * @request POST:/{baseSiteId}/users/{userId}/orders/{code}/cancellation
   * @secure
   */
  doCancelOrder = (
    baseSiteId: string,
    code: string,
    userId: string,
    data: CancellationRequestEntryInputList,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders/${code}/cancellation`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Returns invoices based on a specific order code. The response contains list of invoice information.
   *
   * @tags Invoices
   * @name GetUserOrderInvoices
   * @summary Get invoices for an order.
   * @request GET:/{baseSiteId}/users/{userId}/orders/{code}/invoices
   * @secure
   */
  getUserOrderInvoices = (
    baseSiteId: string,
    code: string,
    userId: string,
    query?: {
      /**
       * The current result page requested.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * The number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<SAPInvoiceList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders/${code}/invoices`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Get invoice of an order in encoded byte array
   *
   * @tags Invoices
   * @name GetUserOrderInvoiceBinary
   * @summary Get binary invoice of an order
   * @request GET:/{baseSiteId}/users/{userId}/orders/{code}/invoices/{invoiceId}/download
   * @secure
   */
  getUserOrderInvoiceBinary = (
    baseSiteId: string,
    code: string,
    invoiceId: string,
    userId: string,
    query?: {
      /**
       * External system identifier where the invoice resides.
       * @example "S4SALES"
       */
      externalSystemId?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders/${code}/invoices/${invoiceId}/download`,
      method: "GET",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Returns details of consignment tracking information based on the order code and the consignment code.
   *
   * @tags Consignment Tracking
   * @name GetConsignmentTrackingData
   * @summary Retrieves consignment tracking information
   * @request GET:/{baseSiteId}/users/{userId}/orders/{orderCode}/consignments/{consignmentCode}/tracking
   * @secure
   */
  getConsignmentTrackingData = (
    baseSiteId: string,
    consignmentCode: string,
    orderCode: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<ConsignmentTracking, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orders/${orderCode}/consignments/${consignmentCode}/tracking`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the list of organizational customers. The response may display the results across multiple pages, when applicable.
   *
   * @tags Organizational Unit Customer Management
   * @name GetOrgCustomers
   * @summary Retrieves the list of organizational customers.
   * @request GET:/{baseSiteId}/users/{userId}/orgCustomers
   * @secure
   */
  getOrgCustomers = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "name"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name CreateOrgCustomer
   * @summary Creates an organizational customer profile.
   * @request POST:/{baseSiteId}/users/{userId}/orgCustomers
   * @secure
   */
  createOrgCustomer = (
    baseSiteId: string,
    userId: string,
    data: OrgCustomerCreation,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<User, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name GetOrgCustomer
   * @summary Retrieves the profile of the organizational unit customer.
   * @request GET:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}
   * @secure
   */
  getOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query?: {
      /** Response configuration. This is the list of fields that should be returned in the response body. */
      fields?: "BASIC" | "DEFAULT" | "FULL";
    },
    params: RequestParams = {},
  ) =>
    this.request<User, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name UpdateOrgCustomer
   * @summary Updates the profile of the organizational unit customer.
   * @request PATCH:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}
   * @secure
   */
  updateOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    data: OrgCustomerModification,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves a list of approvers for the customer in the organizational unit.
   *
   * @tags Organizational Unit Customer Management
   * @name GetOrgCustomerApprovers
   * @summary Retrieves the approvers.
   * @request GET:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/approvers
   * @secure
   */
  getOrgCustomerApprovers = (
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the returned results.
       * @default "name"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/approvers`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name DoAddApproverToOrgCustomer
   * @summary Adds an approver for an organizational customer.
   * @request POST:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/approvers/{approverId}
   * @secure
   */
  doAddApproverToOrgCustomer = (
    approverId: string,
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/approvers/${approverId}`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name RemoveApproverFromOrgCustomer
   * @summary Deletes an approver for an organizational customer.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/approvers/{approverId}
   * @secure
   */
  removeApproverFromOrgCustomer = (
    approverId: string,
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/approvers/${approverId}`,
      method: "DELETE",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the organizational user groups in the organizational unit.
   *
   * @tags Organizational Unit Customer Management
   * @name GetOrgCustomerOrgUserGroups
   * @summary Retrieves the organizational user groups.
   * @request GET:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/orgUserGroups
   * @secure
   */
  getOrgCustomerOrgUserGroups = (
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "name"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserGroupList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/orgUserGroups`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name DoAddOrgUserGroupToOrgCustomer
   * @summary Creates an Organizational organizational user group  objfor an organizational customer.
   * @request POST:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/orgUserGroups/{userGroupId}
   * @secure
   */
  doAddOrgUserGroupToOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    userGroupId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/orgUserGroups/${userGroupId}`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes an organizational user group for an organizational customer using the userGroupId.
   *
   * @tags Organizational Unit Customer Management
   * @name RemoveOrgUserGroupFromOrgCustomer
   * @summary Deletes an organizational user group for an organizational customer.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/orgUserGroups/{userGroupId}
   * @secure
   */
  removeOrgUserGroupFromOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    userGroupId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/orgUserGroups/${userGroupId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the permissions of the customer in the organizational unit.
   *
   * @tags Organizational Unit Customer Management
   * @name GetOrgCustomerPermissions
   * @summary Retrieves the permissions of the customer.
   * @request GET:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/permissions
   * @secure
   */
  getOrgCustomerPermissions = (
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the returned results.
       * @default "name"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermissionList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/permissions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name DoAddPermissionToOrgCustomer
   * @summary Creates a permission for an organizational customer.
   * @request POST:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/permissions/{permissionId}
   * @secure
   */
  doAddPermissionToOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    permissionId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/permissions/${permissionId}`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Customer Management
   * @name RemovePermissionFromOrgCustomer
   * @summary Deletes a permission for an organizational customer.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/permissions/{permissionId}
   * @secure
   */
  removePermissionFromOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    permissionId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/permissions/${permissionId}`,
      method: "DELETE",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name DoAddRoleToOrgCustomer
   * @summary Creates a role for an organizational customer.
   * @request POST:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/roles
   * @secure
   */
  doAddRoleToOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    userId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Role that is added to the user.
       * @example "b2bapprovergroup"
       */
      roleId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/roles`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name RemoveRoleFromOrgCustomer
   * @summary Deletes the role from the organizational customer.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgCustomers/{orgCustomerId}/roles/{roleId}
   * @secure
   */
  removeRoleFromOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    roleId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgCustomers/${orgCustomerId}/roles/${roleId}`,
      method: "DELETE",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the user group that is accessible by the base site.
   *
   * @tags Organizational Unit User Groups
   * @name GetOrgUnitUserGroups
   * @summary Retrieves the list of user groups in an organizational unit.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnitUserGroups
   * @secure
   */
  getOrgUnitUserGroups = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "uid"
       * @example "uid"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserGroupList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a new organizational unit user group.
   *
   * @tags Organizational Unit User Groups
   * @name CreateOrgUnitUserGroup
   * @summary Creates a new user group in an organizational unit.
   * @request POST:/{baseSiteId}/users/{userId}/orgUnitUserGroups
   * @secure
   */
  createOrgUnitUserGroup = (
    baseSiteId: string,
    userId: string,
    data: OrgUnitUserGroup,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserGroup, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the user group that is accessible by the base site.
   *
   * @tags Organizational Unit User Groups
   * @name GetOrgUnitUserGroup
   * @summary Retrieves the details of the organizational unit user group.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}
   * @secure
   */
  getOrgUnitUserGroup = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserGroup, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit User Groups
   * @name RemoveOrgUnitUserGroup
   * @summary Deletes the organizational unit user group.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}
   * @secure
   */
  removeOrgUnitUserGroup = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit User Groups
   * @name UpdateOrgUnitUserGroup
   * @summary Updates the organizational unit user group.
   * @request PATCH:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}
   * @secure
   */
  updateOrgUnitUserGroup = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    data: OrgUnitUserGroup,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves the order approval permissions that can belong to the organizational unit user group. The 'selected' property of permissions that already belong to the user group is true.
   *
   * @tags Organizational Unit User Groups
   * @name GetOrderApprovalPermissionsForOrgUnitUserGroup
   * @summary Retrieves the order approval permissions.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/availableOrderApprovalPermissions
   * @secure
   */
  getOrderApprovalPermissionsForOrgUnitUserGroup = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "name"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderApprovalPermissionList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/availableOrderApprovalPermissions`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the organizational customers who can belong to the specified organizational unit user group. The 'selected' property of customers who already belong to the user group is true.
   *
   * @tags Organizational Unit User Groups
   * @name GetAvailableOrgCustomersForUserGroup
   * @summary Retrieves the organizational customers.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/availableOrgCustomers
   * @secure
   */
  getAvailableOrgCustomersForUserGroup = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "name"
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/availableOrgCustomers`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit User Groups
   * @name DoAddOrgCustomerToOrgUnitUserGroupMembers
   * @summary Adds an organizational customer as a member of an organizational unit user group.
   * @request POST:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/members
   * @secure
   */
  doAddOrgCustomerToOrgUnitUserGroupMembers = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    query: {
      /**
       * Organizational customer that will be added to the organizational unit user group.
       * @example "ceff469f-25aa-4a10-99e3-da31245204e7"
       */
      orgCustomerId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/members`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Deletes all organizational customers as user group members in the organizational unit, which deactivates the user group until a new member is added.
   *
   * @tags Organizational Unit User Groups
   * @name RemoveOrgUnitUserGroupMembers
   * @summary Deletes all organizational customers as user group members in the organizational unit.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/members
   * @secure
   */
  removeOrgUnitUserGroupMembers = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/members`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit User Groups
   * @name RemoveOrgCustomerFromOrgUnitUserGroupMembers
   * @summary Deletes an organizational customer from the organizational unit group members.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/members/{orgCustomerId}
   * @secure
   */
  removeOrgCustomerFromOrgUnitUserGroupMembers = (
    baseSiteId: string,
    orgCustomerId: string,
    orgUnitUserGroupId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/members/${orgCustomerId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Adds an order approval permission to a specific organizational unit user group.
   *
   * @tags Organizational Unit User Groups
   * @name DoAddOrderApprovalPermissionToOrgUnitUserGroup
   * @summary Creates an order approval permission to a user group in the organizational unit.
   * @request POST:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/orderApprovalPermissions
   * @secure
   */
  doAddOrderApprovalPermissionToOrgUnitUserGroup = (
    baseSiteId: string,
    orgUnitUserGroupId: string,
    userId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Order approval permission that will be added to the organizational unit user group.
       * @example "OrderLessThan3000"
       */
      orderApprovalPermissionCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/orderApprovalPermissions`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit User Groups
   * @name RemoveOrderApprovalPermissionFromOrgUnitUserGroup
   * @summary Deletes the order approval permission from the organizational unit user group.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgUnitUserGroups/{orgUnitUserGroupId}/orderApprovalPermissions/{orderApprovalPermissionCode}
   * @secure
   */
  removeOrderApprovalPermissionFromOrgUnitUserGroup = (
    baseSiteId: string,
    orderApprovalPermissionCode: string,
    orgUnitUserGroupId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BSelectionData, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitUserGroups/${orgUnitUserGroupId}/orderApprovalPermissions/${orderApprovalPermissionCode}`,
      method: "DELETE",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a new organizational unit. For example, the Rustic Organization used the word 'Rustic' to refer to their organizational unit.
   *
   * @tags Organizational Unit Management
   * @name CreateOrgUnit
   * @summary Creates a new organizational unit.
   * @request POST:/{baseSiteId}/users/{userId}/orgUnits
   * @secure
   */
  createOrgUnit = (
    baseSiteId: string,
    userId: string,
    data: B2BUnit,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BUnit, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the organizational unit based on the specified identifier.
   *
   * @tags Organizational Unit Management
   * @name GetOrgUnit
   * @summary Retrieves the organizational unit.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}
   * @secure
   */
  getOrgUnit = (
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BUnit, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name UpdateOrgUnit
   * @summary Updates the organizational unit.
   * @request PATCH:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}
   * @secure
   */
  updateOrgUnit = (baseSiteId: string, orgUnitId: string, userId: string, data: B2BUnit, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves the account summary for the organizational unit.
   *
   * @tags Organizational Unit Account Summary
   * @name GetAccountSummary
   * @summary Retrieves the account summary.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/accountSummary
   * @secure
   */
  getAccountSummary = (baseSiteId: string, orgUnitId: string, userId: string, params: RequestParams = {}) =>
    this.request<AccountSummary, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/accountSummary`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves all the addresses of an organizational unit.
   *
   * @tags Organizational Unit Management
   * @name GetOrgUnitAddresses
   * @summary Retrieves the addresses of an organizational unit.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/addresses
   * @secure
   */
  getOrgUnitAddresses = (
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<AddressList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/addresses`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a new address for the organizational unit.
   *
   * @tags Organizational Unit Management
   * @name CreateOrgUnitAddress
   * @summary Creates an address for the organizational unit.
   * @request POST:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/addresses
   * @secure
   */
  createOrgUnitAddress = (
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    data: Address,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Address, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/addresses`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name RemoveOrgUnitAddress
   * @summary Deletes the organizational unit address.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/addresses/{addressId}
   * @secure
   */
  removeOrgUnitAddress = (
    addressId: string,
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/addresses/${addressId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name UpdateOrgUnitAddress
   * @summary Updates the organizational unit address.
   * @request PATCH:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/addresses/{addressId}
   * @secure
   */
  updateOrgUnitAddress = (
    addressId: string,
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    data: Address,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/addresses/${addressId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves a list of units which can be parents of current units.
   *
   * @tags Organizational Unit Management
   * @name GetAvailableParentUnits
   * @summary Retrieves the available parent units.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/availableParents
   * @secure
   */
  getAvailableParentUnits = (
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BUnitNodeList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/availableParents`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the users who belong to the organizational unit and can be assigned to a specific role. The 'selected' property of users who are already assigned to the role is true.
   *
   * @tags Organizational Unit Management
   * @name GetOrgUnitUsers
   * @summary Retrieves the users who belong to the organizational unit.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/availableUsers/{roleId}
   * @secure
   */
  getOrgUnitUsers = (
    baseSiteId: string,
    orgUnitId: string,
    roleId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the display search results.
       * @example "name"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgUnitUserList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/availableUsers/${roleId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name DoAddOrgUnitRoleToOrgCustomer
   * @summary Adds an organizational unit dependent role to a specific organizational customer.
   * @request POST:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/orgCustomers/{orgCustomerId}/roles
   * @secure
   */
  doAddOrgUnitRoleToOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    orgUnitId: string,
    userId: string,
    query: {
      /** Role that is added to the user. Example role: b2bapprovergroup. */
      roleId: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/orgCustomers/${orgCustomerId}/roles`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name RemoveOrgUnitRoleFromOrgCustomer
   * @summary Deletes an organizational, unit-dependent role from an organizational customer.
   * @request DELETE:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/orgCustomers/{orgCustomerId}/roles/{roleId}
   * @secure
   */
  removeOrgUnitRoleFromOrgCustomer = (
    baseSiteId: string,
    orgCustomerId: string,
    orgUnitId: string,
    roleId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/orgCustomers/${orgCustomerId}/roles/${roleId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Retrieves the list of financial documents for the organizational unit.
   *
   * @tags Organizational Unit Account Summary
   * @name GetOrgDocuments
   * @summary Retrieves the financial organizational documents.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/orgDocuments
   * @secure
   */
  getOrgDocuments = (
    baseSiteId: string,
    orgUnitId: string,
    userId: string,
    query?: {
      /**
       * Upper limit for a specified range filter (for range filterByKeys: orgDocumentIdRange, createdAtDateRange (format: MM/dd/yyyy), dueAtDateRange (format: MM/dd/yyyy), amountRange (number) and openAmountRange (number).)
       * @default ""
       */
      endRange?: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Filter to apply on the retrieved list of organizational documents. Possible values are: orgDocumentId, orgDocumentIdRange, orgDocumentType, createdAtDateRange, dueAtDateRange, amountRange, and openAmountRange.
       * @default "orgDocumentId"
       */
      filterByKey?: string;
      /**
       * Value for a specified filter (for single value filterByKeys: orgDocumentId and orgDocumentType.)
       * @default ""
       */
      filterByValue?: string;
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      page?: number;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 10
       * @example 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results. Default value is: byCreatedAtDateAsc.
       * @default "byCreatedAtDateAsc"
       * @example "byCreatedAtDateAsc"
       */
      sort?: string;
      /**
       * Lower limit for a specified range filter (for range filterByKeys: orgDocumentIdRange, createdAtDateRange (format: MM/dd/yyyy), dueAtDateRange (format: MM/dd/yyyy), amountRange (number) and openAmountRange (number).)
       * @default ""
       */
      startRange?: string;
      /**
       * Organizational document status. Possible values are: open, closed, and all.
       * @default "open"
       */
      status?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrgDocumentList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/orgDocuments`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the attachment associated with a given organizational document for the given attachment identifier.
   *
   * @tags Organizational Unit Account Summary
   * @name GetOrgDocumentAttachment
   * @summary Retrieves the attachment of a document.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnits/{orgUnitId}/orgDocuments/{orgDocumentId}/attachments/{orgDocumentAttachmentId}
   * @secure
   */
  getOrgDocumentAttachment = (
    baseSiteId: string,
    orgDocumentAttachmentId: string,
    orgDocumentId: string,
    orgUnitId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnits/${orgUnitId}/orgDocuments/${orgDocumentId}/attachments/${orgDocumentAttachmentId}`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags Organizational Unit Management
   * @name GetOrgUnitsAvailableApprovalProcesses
   * @summary Retrieves the available business approval processes.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnitsAvailableApprovalProcesses
   * @secure
   */
  getOrgUnitsAvailableApprovalProcesses = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BApprovalProcessList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitsAvailableApprovalProcesses`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the root organizational unit node and the child nodes associated with it.
   *
   * @tags Organizational Unit Management
   * @name GetOrgUnitsRootNodeTree
   * @summary Retrieves the root organizational unit node.
   * @request GET:/{baseSiteId}/users/{userId}/orgUnitsRootNodeTree
   * @secure
   */
  getOrgUnitsRootNodeTree = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<B2BUnitNode, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/orgUnitsRootNodeTree`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the password of a customer. This endpoint is deprecated in the 2211.23 update and its deletion is planned. Please use the POST /{baseSiteId}/users/{userId}/password instead.
   *
   * @tags Users
   * @name ReplaceUserPassword
   * @summary Updates the password of a customer.
   * @request PUT:/{baseSiteId}/users/{userId}/password
   * @deprecated
   * @secure
   */
  replaceUserPassword = (
    baseSiteId: string,
    userId: string,
    query: {
      /** New password. */
      new: string;
      /** Old password. */
      old: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/password`,
      method: "PUT",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * @description Updates the password of a customer. This endpoint is added in the 2211.23 update.
   *
   * @tags Users
   * @name ChangeUserPassword
   * @summary Updates the password of a customer.
   * @request POST:/{baseSiteId}/users/{userId}/password
   * @secure
   */
  changeUserPassword = (baseSiteId: string, userId: string, data: ReplacePasswordInput, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/password`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves all credit card payment details made by the customer.
   *
   * @tags Payment Details
   * @name GetPaymentDetailsList
   * @summary Retrieves all credit card payment details of the customer.
   * @request GET:/{baseSiteId}/users/{userId}/paymentdetails
   * @secure
   */
  getPaymentDetailsList = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * The flag to mark if the detailed payment is a saved one.
       * @default false
       */
      saved?: boolean;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentDetailsList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/paymentdetails`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves specific credit card payment details made by the customer using the paymentDetailsId.
   *
   * @tags Payment Details
   * @name GetPaymentDetails
   * @summary Retrieves detailed information for a specific credit card payment.
   * @request GET:/{baseSiteId}/users/{userId}/paymentdetails/{paymentDetailsId}
   * @secure
   */
  getPaymentDetails = (
    baseSiteId: string,
    paymentDetailsId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PaymentDetails, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/paymentdetails/${paymentDetailsId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates existing credit card payment details made by the customer using the paymentDetailsId. Attributes not given in request will be defined again (set to null or default).
   *
   * @tags Payment Details
   * @name ReplacePaymentDetails
   * @summary Updates existing detailed information for a specific credit card payment.
   * @request PUT:/{baseSiteId}/users/{userId}/paymentdetails/{paymentDetailsId}
   * @secure
   */
  replacePaymentDetails = (
    baseSiteId: string,
    paymentDetailsId: string,
    userId: string,
    data: PaymentDetails,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/paymentdetails/${paymentDetailsId}`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Deletes specific credit card payment details made by the customer using the paymentDetailsId.
   *
   * @tags Payment Details
   * @name RemovePaymentDetails
   * @summary Deletes detailed information for a specific credit card payment.
   * @request DELETE:/{baseSiteId}/users/{userId}/paymentdetails/{paymentDetailsId}
   * @secure
   */
  removePaymentDetails = (baseSiteId: string, paymentDetailsId: string, userId: string, params: RequestParams = {}) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/paymentdetails/${paymentDetailsId}`,
      method: "DELETE",
      secure: true,
      ...params,
    });
  /**
   * @description Updates existing credit card payment details made by the customer using the paymentDetailsId. Only those attributes provided in the request will be updated.
   *
   * @tags Payment Details
   * @name UpdatePaymentDetails
   * @summary Updates existing detailed information for a specific credit card payment.
   * @request PATCH:/{baseSiteId}/users/{userId}/paymentdetails/{paymentDetailsId}
   * @secure
   */
  updatePaymentDetails = (
    baseSiteId: string,
    paymentDetailsId: string,
    userId: string,
    data: PaymentDetails,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/paymentdetails/${paymentDetailsId}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags pps-loyalty-card-controller
   * @name GetPpsCurrentCustomerLoyaltyCard
   * @request GET:/{baseSiteId}/users/{userId}/pps/loyalty-card/card
   * @secure
   */
  getPpsCurrentCustomerLoyaltyCard = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<PPSCustomerLoyaltyCard, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/pps/loyalty-card/card`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves product interests as CustomerInterestsSearchResult for a specific user.
   *
   * @tags Product Interests
   * @name GetProductInterests
   * @summary Retrieves the product interests of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/productinterests
   * @secure
   */
  getProductInterests = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @default "0"
       */
      currentPage?: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Flag to indicate if the total number of results is needed or not.
       * @default "true"
       */
      needsTotal?: "true" | "false";
      /**
       * Notification type.
       * @example "BACK_IN_STOCK"
       */
      notificationType?: string;
      /**
       * The number of results returned per page.
       * @default "20"
       */
      pageSize?: string;
      /**
       * Product identifier.
       * @example "00001000"
       */
      productCode?: string;
      /** Sorting method applied to the return results. Default value is by name. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<CustomerInterestsSearchPage, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/productinterests`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a product interest for a customer at a time.
   *
   * @tags Product Interests
   * @name CreateProductInterest
   * @summary Creates product interests.
   * @request POST:/{baseSiteId}/users/{userId}/productinterests
   * @secure
   */
  createProductInterest = (
    baseSiteId: string,
    userId: string,
    query: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Notification type.
       * @example "BACK_IN_STOCK"
       */
      notificationType: string;
      /**
       * Product identifier.
       * @example "00001000"
       */
      productCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ProductInterestRelation, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/productinterests`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Deletes the product interests that a customer saved with product code and notification type.
   *
   * @tags Product Interests
   * @name RemoveProductInterest
   * @summary Deletes the product interests.
   * @request DELETE:/{baseSiteId}/users/{userId}/productinterests
   * @secure
   */
  removeProductInterest = (
    baseSiteId: string,
    userId: string,
    query: {
      /**
       * Notification type.
       * @example "BACK_IN_STOCK"
       */
      notificationType: string;
      /**
       * Product identifier.
       * @example "00001000"
       */
      productCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/productinterests`,
      method: "DELETE",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags products-reservation-controller
   * @name SetReservationDetails
   * @request POST:/{baseSiteId}/users/{userId}/products-reservation/set-reservation-details
   * @secure
   */
  setReservationDetails = (
    baseSiteId: string,
    userId: string,
    query: {
      cartCode: string;
      /** @format date-time */
      reservationPickUpDate: string;
      reservationStoreName: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/products-reservation/set-reservation-details`,
      method: "POST",
      query: query,
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags purchase-history-controller
   * @name GetPurchaseHistory
   * @summary Get list of previously purchased products.
   * @request GET:/{baseSiteId}/users/{userId}/purchase-history
   * @secure
   */
  getPurchaseHistory = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * The current result page requested.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Filtering method applied to the return results
       * @format date-time
       */
      endDate?: string;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * The number of results returned per page.
       * @format int32
       * @default 10
       */
      pageSize?: number;
      /** Sorting method applied to the return results - byDate, byQuantity (default) */
      sort?: string;
      /**
       * Filtering method applied to the return results
       * @format date-time
       */
      startDate?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<PurchaseHistoryList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/purchase-history`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves all quote details associated with a customer. The response may display the results across multiple pages, when applicable.
   *
   * @tags Quotes
   * @name GetQuotes
   * @summary Retrieves all quotes for a customer.
   * @request GET:/{baseSiteId}/users/{userId}/quotes
   * @secure
   */
  getQuotes = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /** Sorting method applied to the return results. */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<QuoteList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a quote by linking a cart using the cart identifier (cartId) to the quote. To trigger a requote, provide a value to the quoteCode parameter, instead of the cartId parameter inside the request body. The response body will contain the new data for the quote.
   *
   * @tags Quotes
   * @name CreateQuote
   * @summary Creates a quote.
   * @request POST:/{baseSiteId}/users/{userId}/quotes
   * @secure
   */
  createQuote = (
    baseSiteId: string,
    userId: string,
    data: QuoteStarter,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Quote, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of a quote. To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags Quotes
   * @name GetQuote
   * @summary Retrieves the quote.
   * @request GET:/{baseSiteId}/users/{userId}/quotes/{quoteCode}
   * @secure
   */
  getQuote = (
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Quote, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the name, description, and expiration date of the quote.
   *
   * @tags Quotes
   * @name ReplaceQuote
   * @summary Updates the quote.
   * @request PUT:/{baseSiteId}/users/{userId}/quotes/{quoteCode}
   * @secure
   */
  replaceQuote = (
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    data: QuoteMetadata,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Updates the name, description, or expiration date of the quote.
   *
   * @tags Quotes
   * @name UpdateQuote
   * @summary Updates the quote.
   * @request PATCH:/{baseSiteId}/users/{userId}/quotes/{quoteCode}
   * @secure
   */
  updateQuote = (
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    data: QuoteMetadata,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}`,
      method: "PATCH",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Creates workflow action during the quote editing process. Possible values are: CANCEL, SUBMIT, EDIT, CHECKOUT, APPROVE, or REJECT.
   *
   * @tags Quotes
   * @name PerformQuoteAction
   * @summary Creates workflow actions for the quote.
   * @request POST:/{baseSiteId}/users/{userId}/quotes/{quoteCode}/action
   * @secure
   */
  performQuoteAction = (
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    data: QuoteAction,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}/action`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves quote attachment for provided attachment Id
   *
   * @tags Quotes
   * @name GetQuoteAttachment
   * @summary Retrieves the quote attachment.
   * @request GET:/{baseSiteId}/users/{userId}/quotes/{quoteCode}/attachments/{attachmentId}
   * @secure
   */
  getQuoteAttachment = (
    attachmentId: string,
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}/attachments/${attachmentId}`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * @description Creates a comment for a quote. Text is added in the request body.
   *
   * @tags Quotes
   * @name CreateCommentForQuote
   * @summary Creates a comment for a quote.
   * @request POST:/{baseSiteId}/users/{userId}/quotes/{quoteCode}/comments
   * @secure
   */
  createCommentForQuote = (
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    data: CreateComment,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}/comments`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Creates a discount for an open quote. Only sellers are allowed to apply a discount to a quote. The types of discount are: PERCENT, for discount by percentage; ABSOLUTE, for discount by amount; and TARGET, for discount by adjustment of the total value.
   *
   * @tags Quotes
   * @name CreateQuoteDiscount
   * @summary Creates a discount for an existing quote.
   * @request POST:/{baseSiteId}/users/{userId}/quotes/{quoteCode}/discounts
   * @secure
   */
  createQuoteDiscount = (
    baseSiteId: string,
    quoteCode: string,
    userId: string,
    data: QuoteDiscount,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}/discounts`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Creates a comment for a quote entry. Text is added in the request body.
   *
   * @tags Quotes
   * @name CreateQuoteEntryComment
   * @summary Creates a comment for a quote entry.
   * @request POST:/{baseSiteId}/users/{userId}/quotes/{quoteCode}/entries/{entryNumber}/comments
   * @secure
   */
  createQuoteEntryComment = (
    baseSiteId: string,
    entryNumber: number,
    quoteCode: string,
    userId: string,
    data: CreateComment,
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/quotes/${quoteCode}/entries/${entryNumber}/comments`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * No description
   *
   * @tags recipe-controller
   * @name GetFavouriteProducts
   * @request GET:/{baseSiteId}/users/{userId}/recipes/my-products
   * @secure
   */
  getFavouriteProducts = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<MyRecipesSummary, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/recipes/my-products`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags recipe-controller
   * @name AddRecipeToCustomerRecipes
   * @request POST:/{baseSiteId}/users/{userId}/recipes/my-products/add
   * @secure
   */
  addRecipeToCustomerRecipes = (
    baseSiteId: string,
    userId: string,
    query: {
      /** @default "DEFAULT" */
      fields?: string;
      productCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<MyRecipesSummary, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/recipes/my-products/add`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags recipe-controller
   * @name RemoveProductFromFavourites
   * @request POST:/{baseSiteId}/users/{userId}/recipes/my-products/remove
   * @secure
   */
  removeProductFromFavourites = (
    baseSiteId: string,
    userId: string,
    query: {
      /** @default "DEFAULT" */
      fields?: string;
      productCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<MyRecipesSummary, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/recipes/my-products/remove`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the replenishment orders that are available by the customer.
   *
   * @tags Replenishment Order
   * @name GetReplenishmentOrders
   * @summary Retrieves the replenishment orders.
   * @request GET:/{baseSiteId}/users/{userId}/replenishmentOrders
   * @secure
   */
  getReplenishmentOrders = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "code"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReplenishmentOrderList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/replenishmentOrders`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags fashion-replenishment-order-controller
   * @name UpdateReplenishmentCart
   * @request PUT:/{baseSiteId}/users/{userId}/replenishmentOrders/{replenishmentId}
   * @secure
   */
  updateReplenishmentCart = (
    replenishmentId: string,
    baseSiteId: string,
    userId: string,
    data: ReplenishmentEdit[],
    params: RequestParams = {},
  ) =>
    this.request<void, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/replenishmentOrders/${replenishmentId}`,
      method: "PUT",
      body: data,
      secure: true,
      type: ContentType.Json,
      ...params,
    });
  /**
   * @description Retrieves the details of a replenishment order. To get entryGroup information, set fields value as follows: fields=entryGroups(BASIC), fields=entryGroups(DEFAULT), or fields=entryGroups(FULL).
   *
   * @tags Replenishment Order
   * @name GetReplenishmentOrder
   * @summary Retrieves the replenishment order.
   * @request GET:/{baseSiteId}/users/{userId}/replenishmentOrders/{replenishmentOrderCode}
   * @secure
   */
  getReplenishmentOrder = (
    baseSiteId: string,
    replenishmentOrderCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReplenishmentOrder, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/replenishmentOrders/${replenishmentOrderCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Updates the replenishment order of the specified user using the specified code. The cancellation of the replenishment order is supported by setting the active property to FALSE. The cancellation cannot be reverted.
   *
   * @tags Replenishment Order
   * @name UpdateReplenishmentOrder
   * @summary Updates the replenishment order.
   * @request PATCH:/{baseSiteId}/users/{userId}/replenishmentOrders/{replenishmentOrderCode}
   * @secure
   */
  updateReplenishmentOrder = (
    baseSiteId: string,
    replenishmentOrderCode: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<ReplenishmentOrder, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/replenishmentOrders/${replenishmentOrderCode}`,
      method: "PATCH",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the history data of the replenishment order that was placed by the customer.
   *
   * @tags Replenishment Order
   * @name GetReplenishmentOrderHistory
   * @summary Retrieves the history of the replenishment order.
   * @request GET:/{baseSiteId}/users/{userId}/replenishmentOrders/{replenishmentOrderCode}/orders
   * @secure
   */
  getReplenishmentOrderHistory = (
    baseSiteId: string,
    replenishmentOrderCode: string,
    userId: string,
    query?: {
      /**
       * Current result page. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
      /**
       * Number of results returned per page.
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results.
       * @default "code"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<OrderHistoryList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/replenishmentOrders/${replenishmentOrderCode}/orders`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the order or cart that is associated with the customer ticket.
   *
   * @tags Tickets
   * @name GetTicketAssociatedObjects
   * @summary Retrieves the object associated with a ticket.
   * @request GET:/{baseSiteId}/users/{userId}/ticketAssociatedObjects
   * @secure
   */
  getTicketAssociatedObjects = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<TicketAssociatedObjectList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/ticketAssociatedObjects`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the ticket history of a customer. The response may display the results across multiple pages, when applicable.
   *
   * @tags Tickets
   * @name GetTickets
   * @summary Retrieves the tickets of a customer.
   * @request GET:/{baseSiteId}/users/{userId}/tickets
   * @secure
   */
  getTickets = (
    baseSiteId: string,
    userId: string,
    query?: {
      /**
       * The current result page requested. Default value is 0.
       * @format int32
       * @default 0
       */
      currentPage?: number;
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
      /**
       * Number of results returned per page. Example: 20
       * @format int32
       * @default 20
       */
      pageSize?: number;
      /**
       * Sorting method applied to the return results. Possible values are: byDate and byTicketId.
       * @default "byDate"
       */
      sort?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<TicketList, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tickets`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a ticket associated with a customer.
   *
   * @tags Tickets
   * @name CreateTicket
   * @summary Creates a ticket.
   * @request POST:/{baseSiteId}/users/{userId}/tickets
   * @secure
   */
  createTicket = (
    baseSiteId: string,
    userId: string,
    data: TicketStarter,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Ticket, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tickets`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves a ticket associated with a customer.
   *
   * @tags Tickets
   * @name GetTicket
   * @summary Retrieves a ticket.
   * @request GET:/{baseSiteId}/users/{userId}/tickets/{ticketId}
   * @secure
   */
  getTicket = (
    baseSiteId: string,
    ticketId: string,
    userId: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Ticket, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tickets/${ticketId}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates a ticket event, which is defined as any kind of updated communication regarding the ticket, such as a new message. The message property is required while the toStatus property is optional.
   *
   * @tags Tickets
   * @name CreateTicketEvent
   * @summary Creates a ticket event.
   * @request POST:/{baseSiteId}/users/{userId}/tickets/{ticketId}/events
   * @secure
   */
  createTicketEvent = (
    baseSiteId: string,
    ticketId: string,
    userId: string,
    data: TicketEvent,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<TicketEvent, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tickets/${ticketId}/events`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Creates an attachment associated with a ticket event.
   *
   * @tags Tickets
   * @name CreateTicketEventAttachment
   * @summary Creates an attachment for an event in a ticket.
   * @request POST:/{baseSiteId}/users/{userId}/tickets/{ticketId}/events/{eventCode}/attachments
   * @secure
   */
  createTicketEventAttachment = (
    baseSiteId: string,
    eventCode: string,
    ticketId: string,
    userId: string,
    data: {
      /**
       * File to be attached to a ticket event.
       * @format binary
       */
      ticketEventAttachment: File;
    },
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "DEFAULT"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<TicketEventAttachment, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tickets/${ticketId}/events/${eventCode}/attachments`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.FormData,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves an attachment associated with a ticket event.
   *
   * @tags Tickets
   * @name GetTicketEventAttachment
   * @summary Retrieves an attachment for an event in a ticket.
   * @request GET:/{baseSiteId}/users/{userId}/tickets/{ticketId}/events/{eventCode}/attachments/{attachmentId}
   * @secure
   */
  getTicketEventAttachment = (
    attachmentId: string,
    baseSiteId: string,
    eventCode: string,
    ticketId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<string[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tickets/${ticketId}/events/${eventCode}/attachments/${attachmentId}`,
      method: "GET",
      secure: true,
      ...params,
    });
  /**
   * No description
   *
   * @tags tradein-controller
   * @name GetCustomerVehicles
   * @request GET:/{baseSiteId}/users/{userId}/tradein/customer-vehicles
   * @secure
   */
  getCustomerVehicles = (baseSiteId: string, userId: string, params: RequestParams = {}) =>
    this.request<Product[], ErrorList>({
      path: `/${baseSiteId}/users/${userId}/tradein/customer-vehicles`,
      method: "GET",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Creates verification token, and sends token code via designated channel e.g. email.
   *
   * @tags Verification Token
   * @name CreateVerificationToken
   * @summary Creates verification token
   * @request POST:/{baseSiteId}/users/{userId}/verificationToken
   * @secure
   */
  createVerificationToken = (
    baseSiteId: string,
    userId: string,
    data: CreateVerificationTokenInput,
    params: RequestParams = {},
  ) =>
    this.request<VerificationToken, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/verificationToken`,
      method: "POST",
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags weekly-meal-planner-controller
   * @name AddRecipeToCustomerWeeklyMeals
   * @request POST:/{baseSiteId}/users/{userId}/weekly-meal-plan/add/{dayCode}
   * @secure
   */
  addRecipeToCustomerWeeklyMeals = (
    dayCode: string,
    baseSiteId: string,
    userId: string,
    query: {
      /** @default "DEFAULT" */
      fields?: string;
      recipeCode: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<WeeklyMealPlannerDay, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/weekly-meal-plan/add/${dayCode}`,
      method: "POST",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags weekly-meal-planner-controller
   * @name GetRecipeForDayOfWeek
   * @request GET:/{baseSiteId}/users/{userId}/weekly-meal-plan/get
   * @secure
   */
  getRecipeForDayOfWeek = (
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<WeeklyMealPlanner, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/weekly-meal-plan/get`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags weekly-meal-planner-controller
   * @name GetRecipeForDayOfWeek1
   * @request GET:/{baseSiteId}/users/{userId}/weekly-meal-plan/get/{dayCode}
   * @secure
   */
  getRecipeForDayOfWeek1 = (
    dayCode: string,
    baseSiteId: string,
    userId: string,
    query?: {
      /** @default "DEFAULT" */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<WeeklyMealPlannerDay, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/weekly-meal-plan/get/${dayCode}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * No description
   *
   * @tags weekly-meal-planner-controller
   * @name RemoveRecipeFromCustomerWeeklyMeals
   * @request POST:/{baseSiteId}/users/{userId}/weekly-meal-plan/remove/{dayCode}
   * @secure
   */
  removeRecipeFromCustomerWeeklyMeals = (
    dayCode: string,
    baseSiteId: string,
    userId: string,
    params: RequestParams = {},
  ) =>
    this.request<WeeklyMealPlannerDay, ErrorList>({
      path: `/${baseSiteId}/users/${userId}/weekly-meal-plan/remove/${dayCode}`,
      method: "POST",
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the voucher by voucher code. This endpoint is added in the 2211.28 update.
   *
   * @tags Vouchers
   * @name GetVoucherByCode
   * @summary Retrieves the voucher by voucher code.
   * @request POST:/{baseSiteId}/vouchers/code/search
   * @secure
   */
  getVoucherByCode = (
    baseSiteId: string,
    data: SAPVoucherOperationRequest,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Voucher, ErrorList>({
      path: `/${baseSiteId}/vouchers/code/search`,
      method: "POST",
      query: query,
      body: data,
      secure: true,
      type: ContentType.Json,
      format: "json",
      ...params,
    });
  /**
   * @description Retrieves the details of the voucher using the voucher identifier. This endpoint is deprecated in the 2211.28 update and its deletion is planned. Please use the POST {baseSiteId}/vouchers/code/search instead.
   *
   * @tags Vouchers
   * @name GetVoucher
   * @summary Retrieves the voucher.
   * @request GET:/{baseSiteId}/vouchers/{code}
   * @deprecated
   * @secure
   */
  getVoucher = (
    baseSiteId: string,
    code: string,
    query?: {
      /**
       * Response configuration. This is the list of fields that should be returned in the response body. Examples: BASIC,DEFAULT,FULL
       * @default "BASIC"
       */
      fields?: string;
    },
    params: RequestParams = {},
  ) =>
    this.request<Voucher, ErrorList>({
      path: `/${baseSiteId}/vouchers/${code}`,
      method: "GET",
      query: query,
      secure: true,
      format: "json",
      ...params,
    });
  /**
   * @description testGet description
   *
   * @tags Test OCC
   * @name BaseSiteIdEasyTestGet
   * @summary testGet summary
   * @request GET:/{baseSiteId}/easy/testGet
   * @secure
   */
  baseSiteIdEasyTestGet = (
    baseSiteId: any,
    query: {
      /** Your firstname */
      firstname: any;
    },
    params: RequestParams = {},
  ) =>
    this.request<string, any>({
      path: `/${baseSiteId}/easy/testGet`,
      method: "GET",
      query: query,
      secure: true,
      ...params,
    });
}
