/* tslint:disable */
/* eslint-disable */
/**
 * Apideck
 * The Apideck OpenAPI Spec: SDK Optimized
 *
 * The version of the OpenAPI document: 10.13.0
 * Contact: support@apideck.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import {
  CreateItemResponse,
  CreateItemResponseFromJSON,
  CreateLocationResponse,
  CreateLocationResponseFromJSON,
  CreateMerchantResponse,
  CreateMerchantResponseFromJSON,
  CreateModifierGroupResponse,
  CreateModifierGroupResponseFromJSON,
  CreateModifierResponse,
  CreateModifierResponseFromJSON,
  CreateOrderResponse,
  CreateOrderResponseFromJSON,
  CreateOrderTypeResponse,
  CreateOrderTypeResponseFromJSON,
  CreatePosPaymentResponse,
  CreatePosPaymentResponseFromJSON,
  CreateTenderResponse,
  CreateTenderResponseFromJSON,
  DeleteItemResponse,
  DeleteItemResponseFromJSON,
  DeleteLocationResponse,
  DeleteLocationResponseFromJSON,
  DeleteMerchantResponse,
  DeleteMerchantResponseFromJSON,
  DeleteModifierGroupResponse,
  DeleteModifierGroupResponseFromJSON,
  DeleteModifierResponse,
  DeleteModifierResponseFromJSON,
  DeleteOrderResponse,
  DeleteOrderResponseFromJSON,
  DeleteOrderTypeResponse,
  DeleteOrderTypeResponseFromJSON,
  DeletePosPaymentResponse,
  DeletePosPaymentResponseFromJSON,
  DeleteTenderResponse,
  DeleteTenderResponseFromJSON,
  GetItemResponse,
  GetItemResponseFromJSON,
  GetItemsResponse,
  GetItemsResponseFromJSON,
  GetLocationResponse,
  GetLocationResponseFromJSON,
  GetLocationsResponse,
  GetLocationsResponseFromJSON,
  GetMerchantResponse,
  GetMerchantResponseFromJSON,
  GetMerchantsResponse,
  GetMerchantsResponseFromJSON,
  GetModifierGroupResponse,
  GetModifierGroupResponseFromJSON,
  GetModifierGroupsResponse,
  GetModifierGroupsResponseFromJSON,
  GetModifierResponse,
  GetModifierResponseFromJSON,
  GetModifiersResponse,
  GetModifiersResponseFromJSON,
  GetOrderResponse,
  GetOrderResponseFromJSON,
  GetOrdersResponse,
  GetOrdersResponseFromJSON,
  GetOrderTypeResponse,
  GetOrderTypeResponseFromJSON,
  GetOrderTypesResponse,
  GetOrderTypesResponseFromJSON,
  GetPosPaymentResponse,
  GetPosPaymentResponseFromJSON,
  GetPosPaymentsResponse,
  GetPosPaymentsResponseFromJSON,
  GetTenderResponse,
  GetTenderResponseFromJSON,
  GetTendersResponse,
  GetTendersResponseFromJSON,
  Item,
  ItemToJSON,
  Location,
  LocationToJSON,
  Merchant,
  MerchantToJSON,
  Modifier,
  ModifierGroup,
  ModifierGroupFilter,
  ModifierGroupToJSON,
  ModifierToJSON,
  Order,
  OrderToJSON,
  OrderType,
  OrderTypeToJSON,
  PosPayment,
  PosPaymentToJSON,
  Tender,
  TenderToJSON,
  UpdateItemResponse,
  UpdateItemResponseFromJSON,
  UpdateLocationResponse,
  UpdateLocationResponseFromJSON,
  UpdateMerchantResponse,
  UpdateMerchantResponseFromJSON,
  UpdateModifierGroupResponse,
  UpdateModifierGroupResponseFromJSON,
  UpdateModifierResponse,
  UpdateModifierResponseFromJSON,
  UpdateOrderResponse,
  UpdateOrderResponseFromJSON,
  UpdateOrderTypeResponse,
  UpdateOrderTypeResponseFromJSON,
  UpdatePosPaymentResponse,
  UpdatePosPaymentResponseFromJSON,
  UpdateTenderResponse,
  UpdateTenderResponseFromJSON
} from '../models'
import * as runtime from '../runtime'

export interface PosApiItemsAddRequest {
  item: Item
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiItemsAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiItemsDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiItemsOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiItemsUpdateRequest {
  id: string
  item: Item
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiLocationsAddRequest {
  location: Location
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiLocationsAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiLocationsDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiLocationsOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiLocationsUpdateRequest {
  id: string
  location: Location
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiMerchantsAddRequest {
  merchant: Merchant
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiMerchantsAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiMerchantsDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiMerchantsOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiMerchantsUpdateRequest {
  id: string
  merchant: Merchant
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiModifierGroupsAddRequest {
  modifierGroup: ModifierGroup
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiModifierGroupsAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiModifierGroupsDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiModifierGroupsOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiModifierGroupsUpdateRequest {
  id: string
  modifierGroup: ModifierGroup
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiModifiersAddRequest {
  modifier: Modifier
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiModifiersAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiModifiersDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  filter?: ModifierGroupFilter
}

export interface PosApiModifiersOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  filter?: ModifierGroupFilter
  fields?: string | null
}

export interface PosApiModifiersUpdateRequest {
  id: string
  modifier: Modifier
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiOrderTypesAddRequest {
  orderType: OrderType
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiOrderTypesAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiOrderTypesDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiOrderTypesOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiOrderTypesUpdateRequest {
  id: string
  orderType: OrderType
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiOrdersAddRequest {
  order: Order
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiOrdersAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  locationId?: string
  fields?: string | null
}

export interface PosApiOrdersDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiOrdersOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiOrdersPayRequest {
  id: string
  order: Order
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  fields?: string | null
}

export interface PosApiOrdersUpdateRequest {
  id: string
  order: Order
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiPaymentsAddRequest {
  payment: PosPayment
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiPaymentsAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiPaymentsDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiPaymentsOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiPaymentsUpdateRequest {
  id: string
  payment: PosPayment
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiTendersAddRequest {
  tender: Tender
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
}

export interface PosApiTendersAllRequest {
  raw?: boolean
  consumerId?: string
  appId?: string
  serviceId?: string
  cursor?: string | null
  limit?: number
  fields?: string | null
}

export interface PosApiTendersDeleteRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

export interface PosApiTendersOneRequest {
  id: string
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
  fields?: string | null
}

export interface PosApiTendersUpdateRequest {
  id: string
  tender: Tender
  consumerId?: string
  appId?: string
  serviceId?: string
  raw?: boolean
}

/**
 *
 */
export class PosApi extends runtime.BaseAPI {
  /**
   * Create Item
   * Create Item
   */
  async itemsAddRaw(
    requestParameters: PosApiItemsAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateItemResponse>> {
    if (requestParameters.item === null || requestParameters.item === undefined) {
      throw new runtime.RequiredError(
        'item',
        'Required parameter requestParameters.item was null or undefined when calling itemsAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/items`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: ItemToJSON(requestParameters.item)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => CreateItemResponseFromJSON(jsonValue))
  }

  /**
   * Create Item
   * Create Item
   */
  async itemsAdd(
    requestParameters: PosApiItemsAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateItemResponse> {
    const response = await this.itemsAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Items
   * List Items
   */
  async itemsAllRaw(
    requestParameters: PosApiItemsAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetItemsResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/items`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => GetItemsResponseFromJSON(jsonValue))
  }

  /**
   * List Items
   * List Items
   */
  async itemsAll(
    requestParameters: PosApiItemsAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetItemsResponse> {
    const response = await this.itemsAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Item
   * Delete Item
   */
  async itemsDeleteRaw(
    requestParameters: PosApiItemsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteItemResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling itemsDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/items/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => DeleteItemResponseFromJSON(jsonValue))
  }

  /**
   * Delete Item
   * Delete Item
   */
  async itemsDelete(
    requestParameters: PosApiItemsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteItemResponse> {
    const response = await this.itemsDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Item
   * Get Item
   */
  async itemsOneRaw(
    requestParameters: PosApiItemsOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetItemResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling itemsOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/items/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => GetItemResponseFromJSON(jsonValue))
  }

  /**
   * Get Item
   * Get Item
   */
  async itemsOne(
    requestParameters: PosApiItemsOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetItemResponse> {
    const response = await this.itemsOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Item
   * Update Item
   */
  async itemsUpdateRaw(
    requestParameters: PosApiItemsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateItemResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling itemsUpdate.'
      )
    }

    if (requestParameters.item === null || requestParameters.item === undefined) {
      throw new runtime.RequiredError(
        'item',
        'Required parameter requestParameters.item was null or undefined when calling itemsUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/items/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: ItemToJSON(requestParameters.item)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => UpdateItemResponseFromJSON(jsonValue))
  }

  /**
   * Update Item
   * Update Item
   */
  async itemsUpdate(
    requestParameters: PosApiItemsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateItemResponse> {
    const response = await this.itemsUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Location
   * Create Location
   */
  async locationsAddRaw(
    requestParameters: PosApiLocationsAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateLocationResponse>> {
    if (requestParameters.location === null || requestParameters.location === undefined) {
      throw new runtime.RequiredError(
        'location',
        'Required parameter requestParameters.location was null or undefined when calling locationsAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/locations`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: LocationToJSON(requestParameters.location)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateLocationResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Location
   * Create Location
   */
  async locationsAdd(
    requestParameters: PosApiLocationsAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateLocationResponse> {
    const response = await this.locationsAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Locations
   * List Locations
   */
  async locationsAllRaw(
    requestParameters: PosApiLocationsAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetLocationsResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/locations`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetLocationsResponseFromJSON(jsonValue)
    )
  }

  /**
   * List Locations
   * List Locations
   */
  async locationsAll(
    requestParameters: PosApiLocationsAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetLocationsResponse> {
    const response = await this.locationsAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Location
   * Delete Location
   */
  async locationsDeleteRaw(
    requestParameters: PosApiLocationsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteLocationResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling locationsDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/locations/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteLocationResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Location
   * Delete Location
   */
  async locationsDelete(
    requestParameters: PosApiLocationsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteLocationResponse> {
    const response = await this.locationsDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Location
   * Get Location
   */
  async locationsOneRaw(
    requestParameters: PosApiLocationsOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetLocationResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling locationsOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/locations/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetLocationResponseFromJSON(jsonValue)
    )
  }

  /**
   * Get Location
   * Get Location
   */
  async locationsOne(
    requestParameters: PosApiLocationsOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetLocationResponse> {
    const response = await this.locationsOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Location
   * Update Location
   */
  async locationsUpdateRaw(
    requestParameters: PosApiLocationsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateLocationResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling locationsUpdate.'
      )
    }

    if (requestParameters.location === null || requestParameters.location === undefined) {
      throw new runtime.RequiredError(
        'location',
        'Required parameter requestParameters.location was null or undefined when calling locationsUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/locations/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: LocationToJSON(requestParameters.location)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateLocationResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Location
   * Update Location
   */
  async locationsUpdate(
    requestParameters: PosApiLocationsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateLocationResponse> {
    const response = await this.locationsUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Merchant
   * Create Merchant
   */
  async merchantsAddRaw(
    requestParameters: PosApiMerchantsAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateMerchantResponse>> {
    if (requestParameters.merchant === null || requestParameters.merchant === undefined) {
      throw new runtime.RequiredError(
        'merchant',
        'Required parameter requestParameters.merchant was null or undefined when calling merchantsAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/merchants`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: MerchantToJSON(requestParameters.merchant)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateMerchantResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Merchant
   * Create Merchant
   */
  async merchantsAdd(
    requestParameters: PosApiMerchantsAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateMerchantResponse> {
    const response = await this.merchantsAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Merchants
   * List Merchants
   */
  async merchantsAllRaw(
    requestParameters: PosApiMerchantsAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetMerchantsResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/merchants`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetMerchantsResponseFromJSON(jsonValue)
    )
  }

  /**
   * List Merchants
   * List Merchants
   */
  async merchantsAll(
    requestParameters: PosApiMerchantsAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetMerchantsResponse> {
    const response = await this.merchantsAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Merchant
   * Delete Merchant
   */
  async merchantsDeleteRaw(
    requestParameters: PosApiMerchantsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteMerchantResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling merchantsDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/merchants/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteMerchantResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Merchant
   * Delete Merchant
   */
  async merchantsDelete(
    requestParameters: PosApiMerchantsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteMerchantResponse> {
    const response = await this.merchantsDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Merchant
   * Get Merchant
   */
  async merchantsOneRaw(
    requestParameters: PosApiMerchantsOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetMerchantResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling merchantsOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/merchants/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetMerchantResponseFromJSON(jsonValue)
    )
  }

  /**
   * Get Merchant
   * Get Merchant
   */
  async merchantsOne(
    requestParameters: PosApiMerchantsOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetMerchantResponse> {
    const response = await this.merchantsOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Merchant
   * Update Merchant
   */
  async merchantsUpdateRaw(
    requestParameters: PosApiMerchantsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateMerchantResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling merchantsUpdate.'
      )
    }

    if (requestParameters.merchant === null || requestParameters.merchant === undefined) {
      throw new runtime.RequiredError(
        'merchant',
        'Required parameter requestParameters.merchant was null or undefined when calling merchantsUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/merchants/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: MerchantToJSON(requestParameters.merchant)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateMerchantResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Merchant
   * Update Merchant
   */
  async merchantsUpdate(
    requestParameters: PosApiMerchantsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateMerchantResponse> {
    const response = await this.merchantsUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Modifier Group
   * Create Modifier Group
   */
  async modifierGroupsAddRaw(
    requestParameters: PosApiModifierGroupsAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateModifierGroupResponse>> {
    if (requestParameters.modifierGroup === null || requestParameters.modifierGroup === undefined) {
      throw new runtime.RequiredError(
        'modifierGroup',
        'Required parameter requestParameters.modifierGroup was null or undefined when calling modifierGroupsAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifier-groups`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: ModifierGroupToJSON(requestParameters.modifierGroup)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateModifierGroupResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Modifier Group
   * Create Modifier Group
   */
  async modifierGroupsAdd(
    requestParameters: PosApiModifierGroupsAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateModifierGroupResponse> {
    const response = await this.modifierGroupsAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Modifier Groups
   * List Modifier Groups
   */
  async modifierGroupsAllRaw(
    requestParameters: PosApiModifierGroupsAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetModifierGroupsResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifier-groups`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetModifierGroupsResponseFromJSON(jsonValue)
    )
  }

  /**
   * List Modifier Groups
   * List Modifier Groups
   */
  async modifierGroupsAll(
    requestParameters: PosApiModifierGroupsAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetModifierGroupsResponse> {
    const response = await this.modifierGroupsAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Modifier Group
   * Delete Modifier Group
   */
  async modifierGroupsDeleteRaw(
    requestParameters: PosApiModifierGroupsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteModifierGroupResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling modifierGroupsDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifier-groups/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteModifierGroupResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Modifier Group
   * Delete Modifier Group
   */
  async modifierGroupsDelete(
    requestParameters: PosApiModifierGroupsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteModifierGroupResponse> {
    const response = await this.modifierGroupsDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Modifier Group
   * Get Modifier Group
   */
  async modifierGroupsOneRaw(
    requestParameters: PosApiModifierGroupsOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetModifierGroupResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling modifierGroupsOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifier-groups/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetModifierGroupResponseFromJSON(jsonValue)
    )
  }

  /**
   * Get Modifier Group
   * Get Modifier Group
   */
  async modifierGroupsOne(
    requestParameters: PosApiModifierGroupsOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetModifierGroupResponse> {
    const response = await this.modifierGroupsOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Modifier Group
   * Update Modifier Group
   */
  async modifierGroupsUpdateRaw(
    requestParameters: PosApiModifierGroupsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateModifierGroupResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling modifierGroupsUpdate.'
      )
    }

    if (requestParameters.modifierGroup === null || requestParameters.modifierGroup === undefined) {
      throw new runtime.RequiredError(
        'modifierGroup',
        'Required parameter requestParameters.modifierGroup was null or undefined when calling modifierGroupsUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifier-groups/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: ModifierGroupToJSON(requestParameters.modifierGroup)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateModifierGroupResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Modifier Group
   * Update Modifier Group
   */
  async modifierGroupsUpdate(
    requestParameters: PosApiModifierGroupsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateModifierGroupResponse> {
    const response = await this.modifierGroupsUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Modifier
   * Create Modifier
   */
  async modifiersAddRaw(
    requestParameters: PosApiModifiersAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateModifierResponse>> {
    if (requestParameters.modifier === null || requestParameters.modifier === undefined) {
      throw new runtime.RequiredError(
        'modifier',
        'Required parameter requestParameters.modifier was null or undefined when calling modifiersAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifiers`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: ModifierToJSON(requestParameters.modifier)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateModifierResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Modifier
   * Create Modifier
   */
  async modifiersAdd(
    requestParameters: PosApiModifiersAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateModifierResponse> {
    const response = await this.modifiersAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Modifiers
   * List Modifiers
   */
  async modifiersAllRaw(
    requestParameters: PosApiModifiersAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetModifiersResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifiers`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetModifiersResponseFromJSON(jsonValue)
    )
  }

  /**
   * List Modifiers
   * List Modifiers
   */
  async modifiersAll(
    requestParameters: PosApiModifiersAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetModifiersResponse> {
    const response = await this.modifiersAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Modifier
   * Delete Modifier
   */
  async modifiersDeleteRaw(
    requestParameters: PosApiModifiersDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteModifierResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling modifiersDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.filter !== undefined) {
      queryParameters['filter'] = requestParameters.filter
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifiers/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteModifierResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Modifier
   * Delete Modifier
   */
  async modifiersDelete(
    requestParameters: PosApiModifiersDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteModifierResponse> {
    const response = await this.modifiersDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Modifier
   * Get Modifier
   */
  async modifiersOneRaw(
    requestParameters: PosApiModifiersOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetModifierResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling modifiersOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.filter !== undefined) {
      queryParameters['filter'] = requestParameters.filter
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifiers/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetModifierResponseFromJSON(jsonValue)
    )
  }

  /**
   * Get Modifier
   * Get Modifier
   */
  async modifiersOne(
    requestParameters: PosApiModifiersOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetModifierResponse> {
    const response = await this.modifiersOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Modifier
   * Update Modifier
   */
  async modifiersUpdateRaw(
    requestParameters: PosApiModifiersUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateModifierResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling modifiersUpdate.'
      )
    }

    if (requestParameters.modifier === null || requestParameters.modifier === undefined) {
      throw new runtime.RequiredError(
        'modifier',
        'Required parameter requestParameters.modifier was null or undefined when calling modifiersUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/modifiers/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: ModifierToJSON(requestParameters.modifier)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateModifierResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Modifier
   * Update Modifier
   */
  async modifiersUpdate(
    requestParameters: PosApiModifiersUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateModifierResponse> {
    const response = await this.modifiersUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Order Type
   * Create Order Type
   */
  async orderTypesAddRaw(
    requestParameters: PosApiOrderTypesAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateOrderTypeResponse>> {
    if (requestParameters.orderType === null || requestParameters.orderType === undefined) {
      throw new runtime.RequiredError(
        'orderType',
        'Required parameter requestParameters.orderType was null or undefined when calling orderTypesAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/order-types`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: OrderTypeToJSON(requestParameters.orderType)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateOrderTypeResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Order Type
   * Create Order Type
   */
  async orderTypesAdd(
    requestParameters: PosApiOrderTypesAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateOrderTypeResponse> {
    const response = await this.orderTypesAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Order Types
   * List Order Types
   */
  async orderTypesAllRaw(
    requestParameters: PosApiOrderTypesAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetOrderTypesResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/order-types`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetOrderTypesResponseFromJSON(jsonValue)
    )
  }

  /**
   * List Order Types
   * List Order Types
   */
  async orderTypesAll(
    requestParameters: PosApiOrderTypesAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetOrderTypesResponse> {
    const response = await this.orderTypesAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Order Type
   * Delete Order Type
   */
  async orderTypesDeleteRaw(
    requestParameters: PosApiOrderTypesDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteOrderTypeResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling orderTypesDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/order-types/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteOrderTypeResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Order Type
   * Delete Order Type
   */
  async orderTypesDelete(
    requestParameters: PosApiOrderTypesDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteOrderTypeResponse> {
    const response = await this.orderTypesDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Order Type
   * Get Order Type
   */
  async orderTypesOneRaw(
    requestParameters: PosApiOrderTypesOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetOrderTypeResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling orderTypesOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/order-types/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetOrderTypeResponseFromJSON(jsonValue)
    )
  }

  /**
   * Get Order Type
   * Get Order Type
   */
  async orderTypesOne(
    requestParameters: PosApiOrderTypesOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetOrderTypeResponse> {
    const response = await this.orderTypesOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Order Type
   * Update Order Type
   */
  async orderTypesUpdateRaw(
    requestParameters: PosApiOrderTypesUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateOrderTypeResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling orderTypesUpdate.'
      )
    }

    if (requestParameters.orderType === null || requestParameters.orderType === undefined) {
      throw new runtime.RequiredError(
        'orderType',
        'Required parameter requestParameters.orderType was null or undefined when calling orderTypesUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/order-types/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: OrderTypeToJSON(requestParameters.orderType)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateOrderTypeResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Order Type
   * Update Order Type
   */
  async orderTypesUpdate(
    requestParameters: PosApiOrderTypesUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateOrderTypeResponse> {
    const response = await this.orderTypesUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Order
   * Create Order
   */
  async ordersAddRaw(
    requestParameters: PosApiOrdersAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateOrderResponse>> {
    if (requestParameters.order === null || requestParameters.order === undefined) {
      throw new runtime.RequiredError(
        'order',
        'Required parameter requestParameters.order was null or undefined when calling ordersAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/orders`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: OrderToJSON(requestParameters.order)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateOrderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Order
   * Create Order
   */
  async ordersAdd(
    requestParameters: PosApiOrdersAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateOrderResponse> {
    const response = await this.ordersAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Orders
   * List Orders
   */
  async ordersAllRaw(
    requestParameters: PosApiOrdersAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetOrdersResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.locationId !== undefined) {
      queryParameters['location_id'] = requestParameters.locationId
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/orders`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => GetOrdersResponseFromJSON(jsonValue))
  }

  /**
   * List Orders
   * List Orders
   */
  async ordersAll(
    requestParameters: PosApiOrdersAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetOrdersResponse> {
    const response = await this.ordersAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Order
   * Delete Order
   */
  async ordersDeleteRaw(
    requestParameters: PosApiOrdersDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteOrderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling ordersDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/orders/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteOrderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Order
   * Delete Order
   */
  async ordersDelete(
    requestParameters: PosApiOrdersDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteOrderResponse> {
    const response = await this.ordersDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Order
   * Get Order
   */
  async ordersOneRaw(
    requestParameters: PosApiOrdersOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetOrderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling ordersOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/orders/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => GetOrderResponseFromJSON(jsonValue))
  }

  /**
   * Get Order
   * Get Order
   */
  async ordersOne(
    requestParameters: PosApiOrdersOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetOrderResponse> {
    const response = await this.ordersOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Pay Order
   * Pay Order
   */
  async ordersPayRaw(
    requestParameters: PosApiOrdersPayRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateOrderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling ordersPay.'
      )
    }

    if (requestParameters.order === null || requestParameters.order === undefined) {
      throw new runtime.RequiredError(
        'order',
        'Required parameter requestParameters.order was null or undefined when calling ordersPay.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/orders/{id}/pay`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: OrderToJSON(requestParameters.order)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateOrderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Pay Order
   * Pay Order
   */
  async ordersPay(
    requestParameters: PosApiOrdersPayRequest,
    initOverrides?: RequestInit
  ): Promise<CreateOrderResponse> {
    const response = await this.ordersPayRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Updates an open order by adding, replacing, or deleting fields. Square-only: Orders with a `completed` or `canceled` status cannot be updated. To pay for an order, use the [payments endpoint](#tag/Payments).
   * Update Order
   */
  async ordersUpdateRaw(
    requestParameters: PosApiOrdersUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateOrderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling ordersUpdate.'
      )
    }

    if (requestParameters.order === null || requestParameters.order === undefined) {
      throw new runtime.RequiredError(
        'order',
        'Required parameter requestParameters.order was null or undefined when calling ordersUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/orders/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: OrderToJSON(requestParameters.order)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateOrderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Updates an open order by adding, replacing, or deleting fields. Square-only: Orders with a `completed` or `canceled` status cannot be updated. To pay for an order, use the [payments endpoint](#tag/Payments).
   * Update Order
   */
  async ordersUpdate(
    requestParameters: PosApiOrdersUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateOrderResponse> {
    const response = await this.ordersUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Payment
   * Create Payment
   */
  async paymentsAddRaw(
    requestParameters: PosApiPaymentsAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreatePosPaymentResponse>> {
    if (requestParameters.payment === null || requestParameters.payment === undefined) {
      throw new runtime.RequiredError(
        'payment',
        'Required parameter requestParameters.payment was null or undefined when calling paymentsAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/payments`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: PosPaymentToJSON(requestParameters.payment)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreatePosPaymentResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Payment
   * Create Payment
   */
  async paymentsAdd(
    requestParameters: PosApiPaymentsAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreatePosPaymentResponse> {
    const response = await this.paymentsAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Payments
   * List Payments
   */
  async paymentsAllRaw(
    requestParameters: PosApiPaymentsAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetPosPaymentsResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/payments`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetPosPaymentsResponseFromJSON(jsonValue)
    )
  }

  /**
   * List Payments
   * List Payments
   */
  async paymentsAll(
    requestParameters: PosApiPaymentsAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetPosPaymentsResponse> {
    const response = await this.paymentsAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Payment
   * Delete Payment
   */
  async paymentsDeleteRaw(
    requestParameters: PosApiPaymentsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeletePosPaymentResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling paymentsDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/payments/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeletePosPaymentResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Payment
   * Delete Payment
   */
  async paymentsDelete(
    requestParameters: PosApiPaymentsDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeletePosPaymentResponse> {
    const response = await this.paymentsDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Payment
   * Get Payment
   */
  async paymentsOneRaw(
    requestParameters: PosApiPaymentsOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetPosPaymentResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling paymentsOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/payments/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      GetPosPaymentResponseFromJSON(jsonValue)
    )
  }

  /**
   * Get Payment
   * Get Payment
   */
  async paymentsOne(
    requestParameters: PosApiPaymentsOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetPosPaymentResponse> {
    const response = await this.paymentsOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Payment
   * Update Payment
   */
  async paymentsUpdateRaw(
    requestParameters: PosApiPaymentsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdatePosPaymentResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling paymentsUpdate.'
      )
    }

    if (requestParameters.payment === null || requestParameters.payment === undefined) {
      throw new runtime.RequiredError(
        'payment',
        'Required parameter requestParameters.payment was null or undefined when calling paymentsUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/payments/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: PosPaymentToJSON(requestParameters.payment)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdatePosPaymentResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Payment
   * Update Payment
   */
  async paymentsUpdate(
    requestParameters: PosApiPaymentsUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdatePosPaymentResponse> {
    const response = await this.paymentsUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Create Tender
   * Create Tender
   */
  async tendersAddRaw(
    requestParameters: PosApiTendersAddRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<CreateTenderResponse>> {
    if (requestParameters.tender === null || requestParameters.tender === undefined) {
      throw new runtime.RequiredError(
        'tender',
        'Required parameter requestParameters.tender was null or undefined when calling tendersAdd.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/tenders`,
        method: 'POST',
        headers: headerParameters,
        query: queryParameters,
        body: TenderToJSON(requestParameters.tender)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      CreateTenderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Create Tender
   * Create Tender
   */
  async tendersAdd(
    requestParameters: PosApiTendersAddRequest,
    initOverrides?: RequestInit
  ): Promise<CreateTenderResponse> {
    const response = await this.tendersAddRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * List Tenders
   * List Tenders
   */
  async tendersAllRaw(
    requestParameters: PosApiTendersAllRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetTendersResponse>> {
    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.cursor !== undefined) {
      queryParameters['cursor'] = requestParameters.cursor
    }

    if (requestParameters.limit !== undefined) {
      queryParameters['limit'] = requestParameters.limit
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/tenders`,
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => GetTendersResponseFromJSON(jsonValue))
  }

  /**
   * List Tenders
   * List Tenders
   */
  async tendersAll(
    requestParameters: PosApiTendersAllRequest = {},
    initOverrides?: RequestInit
  ): Promise<GetTendersResponse> {
    const response = await this.tendersAllRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Delete Tender
   * Delete Tender
   */
  async tendersDeleteRaw(
    requestParameters: PosApiTendersDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<DeleteTenderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling tendersDelete.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/tenders/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'DELETE',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      DeleteTenderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Delete Tender
   * Delete Tender
   */
  async tendersDelete(
    requestParameters: PosApiTendersDeleteRequest,
    initOverrides?: RequestInit
  ): Promise<DeleteTenderResponse> {
    const response = await this.tendersDeleteRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Get Tender
   * Get Tender
   */
  async tendersOneRaw(
    requestParameters: PosApiTendersOneRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<GetTenderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling tendersOne.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    if (requestParameters.fields !== undefined) {
      queryParameters['fields'] = requestParameters.fields
    }

    const headerParameters: runtime.HTTPHeaders = {}

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/tenders/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'GET',
        headers: headerParameters,
        query: queryParameters
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue => GetTenderResponseFromJSON(jsonValue))
  }

  /**
   * Get Tender
   * Get Tender
   */
  async tendersOne(
    requestParameters: PosApiTendersOneRequest,
    initOverrides?: RequestInit
  ): Promise<GetTenderResponse> {
    const response = await this.tendersOneRaw(requestParameters, initOverrides)
    return await response.value()
  }

  /**
   * Update Tender
   * Update Tender
   */
  async tendersUpdateRaw(
    requestParameters: PosApiTendersUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<runtime.ApiResponse<UpdateTenderResponse>> {
    if (requestParameters.id === null || requestParameters.id === undefined) {
      throw new runtime.RequiredError(
        'id',
        'Required parameter requestParameters.id was null or undefined when calling tendersUpdate.'
      )
    }

    if (requestParameters.tender === null || requestParameters.tender === undefined) {
      throw new runtime.RequiredError(
        'tender',
        'Required parameter requestParameters.tender was null or undefined when calling tendersUpdate.'
      )
    }

    const queryParameters: any = {}

    if (requestParameters.raw !== undefined) {
      queryParameters['raw'] = requestParameters.raw
    }

    const headerParameters: runtime.HTTPHeaders = {}

    headerParameters['Content-Type'] = 'application/json'

    if (requestParameters.consumerId !== undefined && requestParameters.consumerId !== null) {
      headerParameters['x-apideck-consumer-id'] = String(requestParameters.consumerId)
    }

    if (requestParameters.appId !== undefined && requestParameters.appId !== null) {
      headerParameters['x-apideck-app-id'] = String(requestParameters.appId)
    }

    if (requestParameters.serviceId !== undefined && requestParameters.serviceId !== null) {
      headerParameters['x-apideck-service-id'] = String(requestParameters.serviceId)
    }

    if (this.configuration && this.configuration.apiKey) {
      headerParameters['Authorization'] = this.configuration.apiKey('Authorization') // apiKey authentication
    }

    const response = await this.request(
      {
        path: `/pos/tenders/{id}`.replace(
          `{${'id'}}`,
          encodeURIComponent(String(requestParameters.id))
        ),
        method: 'PATCH',
        headers: headerParameters,
        query: queryParameters,
        body: TenderToJSON(requestParameters.tender)
      },
      initOverrides
    )

    return new runtime.JSONApiResponse(response, jsonValue =>
      UpdateTenderResponseFromJSON(jsonValue)
    )
  }

  /**
   * Update Tender
   * Update Tender
   */
  async tendersUpdate(
    requestParameters: PosApiTendersUpdateRequest,
    initOverrides?: RequestInit
  ): Promise<UpdateTenderResponse> {
    const response = await this.tendersUpdateRaw(requestParameters, initOverrides)
    return await response.value()
  }
}
