components:
  schemas:
    ActivationLink:
      description: Activation link
      properties:
        enabled:
          type: boolean
        providerId:
          type: string
      type: object
    CustomFields:
      properties:
        catalogId:
          description: Catalog ID
          type: string
        createDate:
          deprecated: true
          format: date-time
          type: string
        customFields:
          additionalProperties:
            type: object
          type: object
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        modelVersion:
          deprecated: true
          type: string
        originalId:
          type: string
          writeOnly: true
        updateDate:
          deprecated: true
          format: date-time
          type: string
      type: object
    CustomFieldsDefinition:
      properties:
        createDate:
          deprecated: true
          format: date-time
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        description:
          description: Custom field description
          example: VPN product
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        modelVersion:
          deprecated: true
          type: string
        name:
          description: Custom field name
          example: vpnIncludedFeature
          type: string
        originalId:
          type: string
          writeOnly: true
        type:
          description: Custom field type
          enum:
            - LOCALIZED_TEXT
            - INTEGER
            - BOOLEAN
          example: LOCALIZED_TEXT, INTEGER, BOOLEAN
          type: string
        updateDate:
          deprecated: true
          format: date-time
          type: string
      type: object
    CustomizedProduct:
      properties:
        catalogId:
          description: Optional catalog ID
          type: string
        createDate:
          deprecated: true
          format: date-time
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        fulfillmentTemplate:
          description: Fulfillment template name
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        modelVersion:
          deprecated: true
          type: string
        originalId:
          type: string
          writeOnly: true
        paidTrial:
          description: Indicator if it is a paid trial product
          type: boolean
        prices:
          $ref: '#/components/schemas/Prices'
        productId:
          description: Product ID of merchant
          type: string
        sellingStores:
          description: List of stores selling this product
          items:
            description: List of stores selling this product
            type: string
          type: array
        status:
          description: Product status
          enum:
            - ENABLED
            - DISABLED
          type: string
        subscriptionTemplate:
          description: Subscription template name
          type: string
        trialAllowed:
          description: Indicator if subscription trial is allowed on this product
          type: boolean
        trialDuration:
          description: Duration of subscription trial on this product (in days)
          format: int32
          type: integer
        updateDate:
          deprecated: true
          format: date-time
          type: string
      required:
        - productId
      type: object
    Description:
      properties:
        catalogId:
          description: Catalog ID
          type: string
        createDate:
          deprecated: true
          format: date-time
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        description:
          description: Description's comment
          type: string
        fallbackLocale:
          description: Fallback locale
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        localizedLongDesc:
          additionalProperties:
            description: Localized long descriptions
            type: string
          description: Localized long descriptions
          type: object
        localizedManualRenewalEmailDesc:
          additionalProperties:
            description: Localized manual Renewal email descriptions
            type: string
          description: Localized manual Renewal email descriptions
          type: object
        localizedMarketingName:
          additionalProperties:
            description: Localized marketing name descriptions
            type: string
          description: Localized marketing name descriptions
          type: object
        localizedPurchaseEmailDesc:
          additionalProperties:
            description: Localized purchase email descriptions
            type: string
          description: Localized purchase email descriptions
          type: object
        localizedShortDesc:
          additionalProperties:
            description: Localized short descriptions
            type: string
          description: Localized short descriptions
          type: object
        localizedSubscriptionEmailDesc:
          additionalProperties:
            description: Localized subscription email descriptions
            type: string
          description: Localized subscription email descriptions
          type: object
        localizedThankYouDesc:
          additionalProperties:
            description: Localized thank you page descriptions
            type: string
          description: Localized thank you page descriptions
          type: object
        longDesc:
          description: Long description (fallback language used)
          readOnly: true
          type: string
        manualRenewalEmailDesc:
          description: Manual renewal email description (fallback language used)
          readOnly: true
          type: string
        marketingName:
          description: Product Name (fallback language used)
          readOnly: true
          type: string
        modelVersion:
          deprecated: true
          type: string
        originalId:
          type: string
          writeOnly: true
        purchaseEmailDesc:
          description: Purchase email description (fallback language used)
          readOnly: true
          type: string
        shortDesc:
          description: Short description (fallback language used)
          readOnly: true
          type: string
        subscriptionEmailDesc:
          description: Subscription email description (fallback language used)
          readOnly: true
          type: string
        thankYouDesc:
          description: Thank you page description (fallback language used)
          readOnly: true
          type: string
        updateDate:
          deprecated: true
          format: date-time
          type: string
        variableDescriptions:
          description: Variable Descriptions
          items:
            $ref: '#/components/schemas/VariableDescription'
          type: array
      required:
        - description
        - localizedMarketingName
      type: object
    DiscountPlan:
      properties:
        discountStep:
          format: int32
          type: integer
        ignorePurchaseDiscount:
          type: boolean
        tag:
          type: string
      required:
        - discountStep
        - tag
      type: object
    DiscountStatus:
      description: Discount status
      type: object
    DiscountedPrice:
      description: Discounted price
      properties:
        discountedGrossPrice:
          format: double
          type: number
      readOnly: true
      type: object
    Document:
      additionalProperties:
        type: object
      properties:
        empty:
          type: boolean
      type: object
    DuplicateProductRequest:
      properties:
        duplicationOptions:
          $ref: '#/components/schemas/ProductDuplicationOptions'
        productName:
          description: Product name of the new product
          example: My Product
          type: string
        publisherRefId:
          description: Publisher reference ID of the new product
          example: 49FD453
          type: string
      required:
        - productName
        - publisherRefId
      type: object
    DuplicateProductResponse:
      properties:
        id:
          description: Duplicated product ID
          example: 3584f058-fd8a-439e-be21-126a0b16c128
          type: string
      required:
        - id
      type: object
    ExceptionDetail:
      properties:
        errorType:
          type: string
        resourceDisplayName:
          type: string
        resourceId:
          type: string
        resourceType:
          type: string
        specific:
          type: object
      type: object
    FullPrice:
      description: Unit price of the product
      properties:
        crossSell:
          description: >-
            The cross sell price; enter -1 to use the currency cross sell price
            for this country
          format: double
          type: number
        currency:
          description: Purchase currency (ISO-4217 format)
          properties:
            currencyCode:
              type: string
            defaultFractionDigits:
              format: int32
              type: integer
            displayName:
              type: string
            numericCode:
              format: int32
              type: integer
            numericCodeAsString:
              type: string
            symbol:
              type: string
          type: object
        discountedPrice:
          $ref: '#/components/schemas/DiscountedPrice'
        grossMsrp:
          description: MSRP (Manufacturer Suggested Retail Price) with taxes included
          format: double
          type: number
        grossPrice:
          description: Cost of product with taxes included
          format: double
          type: number
        initialGrossPrice:
          description: Cost of product with taxes included
          format: double
          type: number
        initialNetPrice:
          description: Net price
          format: double
          type: number
        initialValue:
          description: The initial product price
          format: double
          type: number
        initialVatAmount:
          description: VAT amount (grossPrice - netPrice)
          format: double
          type: number
        mandateValue:
          description: Mandate value
          format: double
          type: number
        marketingCampaignId:
          description: Marketing Campaign ID
          type: string
        msrp:
          description: >-
            The msrp price; enter -1 to use the currency msrp price for this
            country
          format: double
          type: number
        netMsrp:
          description: MSRP (Manufacturer Suggested Retail Price) net
          format: double
          type: number
        netPrice:
          description: Net price
          format: double
          type: number
        productRecoType:
          description: Product Reco Type
          type: string
        remotePrice:
          $ref: '#/components/schemas/RemotePrice'
        source:
          description: Source of price
          enum:
            - INTERNAL
            - EXTERNAL
            - INTERNAL_CONVERTED
          type: string
        upSell:
          description: >-
            The up sell price; enter -1 to use the currency up sell price for
            this country
          format: double
          type: number
        value:
          description: >-
            The product price; enter -1 to use the currency price for this
            country
          format: double
          type: number
        vatAmount:
          description: VAT amount (grossPrice - netPrice)
          format: double
          type: number
        vatAmountMsrp:
          description: >-
            VAT amount (grossPrice - netPrice) for MSRP (Manufacturer Suggested
            Retail Price)
          format: double
          type: number
        vatIncluded:
          description: Indicates if the price includes VAT
          type: boolean
        vatRate:
          description: Sales tax rate
          format: double
          type: number
      required:
        - currency
        - grossPrice
        - initialGrossPrice
        - initialNetPrice
        - initialValue
        - initialVatAmount
        - msrp
        - netPrice
        - value
        - vatAmount
        - vatRate
      type: object
    Matrix:
      properties:
        format:
          description: Order of variables in the matrix
          readOnly: true
          type: string
        matrix:
          description: Matrix
          readOnly: true
          type: object
        matrixVariables:
          description: List of variables
          items:
            $ref: '#/components/schemas/Variable'
          readOnly: true
          type: array
      type: object
    NextGenerationsQueryParameters:
      properties:
        country:
          type: string
        currency:
          type: string
        endUserCity:
          type: string
        endUserStreet:
          type: string
        endUserZipCode:
          type: string
        numberOfNextGeneration:
          format: int32
          maximum: 10
          minimum: 2
          type: integer
        priceFunctionParameters:
          additionalProperties:
            type: string
          type: object
        region:
          type: string
        startAt:
          format: date-time
          type: string
        storeId:
          type: string
        taxExempt:
          type: boolean
        trial:
          type: boolean
      required:
        - country
        - currency
        - storeId
      type: object
    NormalizeException:
      properties:
        details:
          items:
            $ref: '#/components/schemas/ExceptionDetail'
          type: array
        error:
          type: string
        message:
          type: string
        status:
          format: int32
          type: integer
        timestamp:
          format: int64
          type: integer
      type: object
    Pageable:
      properties:
        page:
          format: int32
          minimum: 0
          type: integer
        size:
          format: int32
          minimum: 1
          type: integer
        sort:
          items:
            type: string
          type: array
      type: object
    Parameter:
      description: Parameters of the expression
      properties:
        defaultValue:
          description: Parameter default value
          type: string
        field:
          description: Parameter name
          type: string
        internalDesc:
          description: Parameter internal description
          type: string
        labels:
          additionalProperties:
            description: Parameter labels
            type: string
          description: Parameter labels
          type: object
        max:
          description: Maximum value
          format: int32
          type: integer
        min:
          description: Minimum value
          format: int32
          type: integer
        pattern:
          description: Pattern value
          type: string
        type:
          description: Parameter type
          enum:
            - INTEGER
            - STRING
          type: string
      required:
        - defaultValue
        - field
        - max
        - min
        - pattern
        - type
      type: object
    PriceFunction:
      properties:
        createDate:
          deprecated: true
          format: date-time
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        expression:
          description: JEXL expression for price function
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        modelVersion:
          deprecated: true
          type: string
        name:
          description: Name of the price function
          type: string
        originalId:
          type: string
          writeOnly: true
        parameters:
          description: Parameters of the expression
          items:
            $ref: '#/components/schemas/Parameter'
          type: array
        productFields:
          description: Product fields used in the expression
          items:
            description: Product fields used in the expression
            type: string
          type: array
          uniqueItems: true
        updateDate:
          deprecated: true
          format: date-time
          type: string
        variables:
          description: Variables used in the expression
          items:
            description: Variables used in the expression
            type: string
          type: array
          uniqueItems: true
      required:
        - expression
        - name
      type: object
    PriceInformation:
      description: >-
        Product price by currency (ISO-4217) and country (ISO-3166-1 alpha-2);
        each currency requires a default price
      properties:
        crossSell:
          description: >-
            The cross sell price; enter -1 to use the currency cross sell price
            for this country
          format: double
          type: number
        initialValue:
          description: The initial product price
          format: double
          type: number
        msrp:
          description: >-
            The msrp price; enter -1 to use the currency msrp price for this
            country
          format: double
          type: number
        upSell:
          description: >-
            The up sell price; enter -1 to use the currency up sell price for
            this country
          format: double
          type: number
        value:
          description: >-
            The product price; enter -1 to use the currency price for this
            country
          format: double
          type: number
        vatIncluded:
          description: Indicates if the price includes VAT
          type: boolean
      required:
        - initialValue
        - msrp
        - value
      type: object
    Prices:
      description: Price of product by currency and country
      properties:
        defaultCurrency:
          description: Product default currency (ISO-4217 format)
          properties:
            currencyCode:
              type: string
            defaultFractionDigits:
              format: int32
              type: integer
            displayName:
              type: string
            numericCode:
              format: int32
              type: integer
            numericCodeAsString:
              type: string
            symbol:
              type: string
          type: object
        priceByCountryByCurrency:
          additionalProperties:
            additionalProperties:
              $ref: '#/components/schemas/PriceInformation'
            description: >-
              Product price by currency (ISO-4217) and country (ISO-3166-1
              alpha-2); each currency requires a default price
            type: object
          description: >-
            Product price by currency (ISO-4217) and country (ISO-3166-1
            alpha-2); each currency requires a default price
          type: object
      required:
        - defaultCurrency
        - priceByCountryByCurrency
      type: object
    Product:
      properties:
        activationLink:
          $ref: '#/components/schemas/ActivationLink'
        availableVariables:
          description: Available product variables
          items:
            $ref: '#/components/schemas/Variable'
          type: array
        blackListedCountries:
          description: List of countries not authorized for this product
          items:
            description: List of countries not authorized for this product
            type: string
          type: array
          uniqueItems: true
        businessSegment:
          description: Business segment. Describe who you intend to sell this product.
          enum:
            - B2C
            - B2B
            - STRICT_B2C
            - STRICT_B2B
          type: string
        catalogId:
          description: Catalog ID
          type: string
        codeName:
          description: Code name of product
          type: string
        createDate:
          deprecated: true
          format: date-time
          type: string
        customFieldsId:
          description: CustomFields ID
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        descriptionId:
          description: Description ID
          type: string
        externalContext:
          description: External context
          type: string
        forcedCrossSaleProductIds:
          description: List of forced cross-sales product IDs
          items:
            description: List of forced cross-sales product IDs
            type: string
          type: array
          uniqueItems: true
        fulfillmentTemplate:
          description: Fulfillment template name or id depending on the fulfillment version
          type: string
        fulfillmentTemplateName:
          description: Fulfillment template name
          type: string
        genericName:
          description: Name of product
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        lifeTime:
          description: lifeTime
          example: 1YEAR
          pattern: >-
            ^(((?<duration>[0-9]*)(?<period>MONTH|YEAR|DAY|MONTHS|YEARS|DAYS))|PERMANENT)$
          type: string
        modelVersion:
          deprecated: true
          type: string
        nextGenerationOf:
          description: List of old generation IDs
          items:
            description: List of old generation IDs
            type: string
          type: array
          uniqueItems: true
        originalId:
          type: string
          writeOnly: true
        paidTrial:
          description: Flag for paid trial product
          type: boolean
        parentId:
          description: Product parent ID
          readOnly: true
          type: string
        physical:
          description: 'How do we deliver product : physical/digital'
          type: boolean
        priceFunction:
          description: Price function ID
          type: string
        prices:
          $ref: '#/components/schemas/Prices'
        productFamily:
          description: Product family
          maxLength: 128
          minLength: 0
          type: string
        publisherProductId:
          type: string
        publisherRefId:
          description: Product publisher reference
          maxLength: 80
          minLength: 0
          type: string
        relatedContents:
          description: Links for downloading product-related content file
          items:
            $ref: '#/components/schemas/RelatedContent'
          type: array
        releaseDate:
          description: Planned product release date
          format: date-time
          type: string
        resources:
          description: Product resources
          items:
            $ref: '#/components/schemas/Resource'
          type: array
          uniqueItems: true
        salesMode:
          description: Sales mode
          enum:
            - BILLING_PLAN
            - STANDARD
          type: string
        sellingStores:
          description: List of stores selling this product
          items:
            description: List of stores selling this product
            type: string
          type: array
          uniqueItems: true
        signedProduct:
          type: string
        status:
          description: Product status
          enum:
            - ENABLED
            - DISABLED
          readOnly: true
          type: string
        subProducts:
          description: List of sub-product IDs
          items:
            description: List of sub-product IDs
            type: string
          type: array
        subscriptionTemplate:
          description: Subscription template name
          type: string
        taxCode:
          description: Avatax tax code
          type: string
        trialAllowed:
          description: Flag for subscription trial allowed on this product
          type: boolean
        trialDuration:
          description: Duration of subscription trial on this product (in days)
          format: int32
          type: integer
        type:
          description: Product type
          enum:
            - SOFTWARE
            - GAMES
            - CASUAL
            - SERVICE
            - B2C
            - B2B
            - HARDWARE
          type: string
        unifiedRegisterSoftware:
          description: Indicator if Product is included in unified register
          type: boolean
        updateDate:
          deprecated: true
          format: date-time
          type: string
        var:
          type: string
          writeOnly: true
        variantOf:
          type: string
          writeOnly: true
        visualTags:
          additionalProperties:
            description: Visual tags linked to product
            items:
              description: Visual tags linked to product
              type: string
            type: array
            uniqueItems: true
          description: Visual tags linked to product
          type: object
      required:
        - lifeTime
        - prices
        - publisherRefId
        - sellingStores
      type: object
    ProductByGeneration:
      properties:
        finalPrice:
          format: double
          type: number
        price:
          $ref: '#/components/schemas/FullPrice'
        productId:
          type: string
        subscriptionGeneration:
          format: int32
          type: integer
      type: object
    ProductDuplicationOptions:
      properties:
        duplicateFulfillment:
          type: boolean
        duplicateGeneral:
          type: boolean
        duplicateLocalizedContent:
          type: boolean
        duplicatePrices:
          type: boolean
        duplicateProductFiles:
          type: boolean
        duplicateProductVariations:
          type: boolean
        duplicateSubscription:
          type: boolean
      type: object
    ProductUpdate:
      properties:
        activationLink:
          $ref: '#/components/schemas/ActivationLink'
        availableVariables:
          description: Available product variables
          items:
            $ref: '#/components/schemas/Variable'
          type: array
        blackListedCountries:
          description: List of countries not authorized for this product
          items:
            description: List of countries not authorized for this product
            type: string
          type: array
          uniqueItems: true
        businessSegment:
          description: Business segment. Describe who you intend to sell this product.
          enum:
            - B2C
            - B2B
            - STRICT_B2C
            - STRICT_B2B
          type: string
        catalogId:
          description: Catalog ID
          type: string
        codeName:
          description: Code name of product
          type: string
        createDate:
          deprecated: true
          format: date-time
          type: string
        customFieldsId:
          description: CustomFields ID
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        defaultLocale:
          description: Default locale of the product
          type: string
          writeOnly: true
        descriptionId:
          description: Description ID
          type: string
        externalContext:
          description: External context
          type: string
        forcedCrossSaleProductIds:
          description: List of forced cross-sales product IDs
          items:
            description: List of forced cross-sales product IDs
            type: string
          type: array
          uniqueItems: true
        fulfillmentTemplate:
          description: Fulfillment template name or id depending on the fulfillment version
          type: string
        fulfillmentTemplateName:
          description: Fulfillment template name
          type: string
        genericName:
          description: Name of product
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        lifeTime:
          description: lifeTime
          example: 1YEAR
          pattern: >-
            ^(((?<duration>[0-9]*)(?<period>MONTH|YEAR|DAY|MONTHS|YEARS|DAYS))|PERMANENT)$
          type: string
        localizedLongDesc:
          additionalProperties:
            description: List of localized long descriptions of the product
            type: string
          description: List of localized long descriptions of the product
          type: object
          writeOnly: true
        localizedShortDesc:
          additionalProperties:
            description: List of localized short descriptions of the product
            type: string
          description: List of localized short descriptions of the product
          type: object
          writeOnly: true
        localizedThankYouDesc:
          additionalProperties:
            description: List of localized thank you descriptions of the product
            type: string
          description: List of localized thank you descriptions of the product
          type: object
          writeOnly: true
        marketingName:
          additionalProperties:
            description: List of localized marketing names of the product
            type: string
          description: List of localized marketing names of the product
          type: object
          writeOnly: true
        modelVersion:
          deprecated: true
          type: string
        nextGenerationOf:
          description: List of old generation IDs
          items:
            description: List of old generation IDs
            type: string
          type: array
          uniqueItems: true
        originalId:
          type: string
          writeOnly: true
        paidTrial:
          description: Flag for paid trial product
          type: boolean
        parentId:
          description: Product parent ID
          readOnly: true
          type: string
        physical:
          description: 'How do we deliver product : physical/digital'
          type: boolean
        priceFunction:
          description: Price function ID
          type: string
        prices:
          $ref: '#/components/schemas/Prices'
        productFamily:
          description: Product family
          maxLength: 128
          minLength: 0
          type: string
        publisherProductId:
          type: string
        publisherRefId:
          description: Product publisher reference
          maxLength: 80
          minLength: 0
          type: string
        relatedContents:
          description: Links for downloading product-related content file
          items:
            $ref: '#/components/schemas/RelatedContent'
          type: array
        releaseDate:
          description: Planned product release date
          format: date-time
          type: string
        resources:
          description: Product resources
          items:
            $ref: '#/components/schemas/Resource'
          type: array
          uniqueItems: true
        salesMode:
          description: Sales mode
          enum:
            - BILLING_PLAN
            - STANDARD
          type: string
        sellingStores:
          description: List of stores selling this product
          items:
            description: List of stores selling this product
            type: string
          type: array
          uniqueItems: true
        signedProduct:
          type: string
        status:
          description: Product status
          enum:
            - ENABLED
            - DISABLED
          readOnly: true
          type: string
        subProducts:
          description: List of sub-product IDs
          items:
            description: List of sub-product IDs
            type: string
          type: array
        subscriptionTemplate:
          description: Subscription template name
          type: string
        taxCode:
          description: Avatax tax code
          type: string
        trialAllowed:
          description: Flag for subscription trial allowed on this product
          type: boolean
        trialDuration:
          description: Duration of subscription trial on this product (in days)
          format: int32
          type: integer
        type:
          description: Product type
          enum:
            - SOFTWARE
            - GAMES
            - CASUAL
            - SERVICE
            - B2C
            - B2B
            - HARDWARE
          type: string
        unifiedRegisterSoftware:
          description: Indicator if Product is included in unified register
          type: boolean
        updateDate:
          deprecated: true
          format: date-time
          type: string
        var:
          type: string
          writeOnly: true
        variantOf:
          type: string
          writeOnly: true
        visualTags:
          additionalProperties:
            description: Visual tags linked to product
            items:
              description: Visual tags linked to product
              type: string
            type: array
            uniqueItems: true
          description: Visual tags linked to product
          type: object
      required:
        - lifeTime
        - prices
        - publisherRefId
        - sellingStores
      type: object
    PublicParameter:
      description: Product parameters
      properties:
        defaultValue:
          description: Parameter default value
          type: string
        field:
          description: Parameter name
          type: string
        internalDesc:
          description: Parameter internal description
          type: string
        label:
          description: Parameter label
          type: string
        max:
          description: Maximum value
          format: int32
          type: integer
        min:
          description: Minimum value
          format: int32
          type: integer
        pattern:
          description: Pattern value
          type: string
        type:
          description: Parameter type
          enum:
            - INTEGER
            - STRING
          type: string
      required:
        - defaultValue
        - field
        - label
        - max
        - min
        - pattern
        - type
      type: object
    PublicProduct:
      properties:
        activationLink:
          $ref: '#/components/schemas/ActivationLink'
        blackListedCountries:
          description: List of countries not authorized for this product
          items:
            description: List of countries not authorized for this product
            type: string
          type: array
          uniqueItems: true
        businessSegment:
          description: Business segment. Describe who you intend to sell this product.
          enum:
            - B2C
            - B2B
            - STRICT_B2C
            - STRICT_B2B
          type: string
        catalogId:
          description: Catalog ID
          type: string
        createDate:
          deprecated: true
          format: date-time
          type: string
        customFields:
          additionalProperties:
            description: Product custom fields
            type: object
          description: Product custom fields
          type: object
        customFieldsId:
          description: Product custom fields id
          type: string
        customerId:
          type: string
        dbVersion:
          format: int64
          type: integer
        defaultCurrency:
          description: Product default currency (ISO-4217 format)
          properties:
            currencyCode:
              type: string
            defaultFractionDigits:
              format: int32
              type: integer
            displayName:
              type: string
            numericCode:
              format: int32
              type: integer
            numericCodeAsString:
              type: string
            symbol:
              type: string
          type: object
        descriptionId:
          description: Description ID
          type: string
        discountPlan:
          $ref: '#/components/schemas/DiscountPlan'
        discountsStatus:
          description: Discount status
          items:
            $ref: '#/components/schemas/DiscountStatus'
          type: array
        expirationDate:
          description: Fulfillment's expiration date
          format: date-time
          type: string
        externalContext:
          description: External context
          type: string
        forcedCrossSaleProductIds:
          description: List of forced cross-sales product IDs
          items:
            description: List of forced cross-sales product IDs
            type: string
          type: array
          uniqueItems: true
        fulfillmentTemplate:
          description: Fulfillment template name or id depending on the fulfillment version
          type: string
        fulfillmentTemplateName:
          description: Fulfillment template name
          type: string
        id:
          deprecated: true
          type: string
        lastUpdateReason:
          type: string
        licenseNextExpirationDate:
          description: License next expiration date
          format: date-time
          type: string
        lifeTime:
          description: lifeTime
          example: 1YEAR
          pattern: >-
            ^(((?<duration>[0-9]*)(?<period>MONTH|YEAR|DAY|MONTHS|YEARS|DAYS))|PERMANENT)$
          type: string
        modelVersion:
          deprecated: true
          type: string
        nextGenerationOf:
          description: List of old generation IDs
          items:
            description: List of old generation IDs
            type: string
          type: array
          uniqueItems: true
        originalId:
          type: string
          writeOnly: true
        paidTrial:
          description: Flag for paid trial product
          type: boolean
        parentId:
          description: Product parent ID
          readOnly: true
          type: string
        physical:
          description: 'How do we deliver product : physical/digital'
          type: boolean
        previousLineItemId:
          description: Previous line item ID
          type: string
        price:
          $ref: '#/components/schemas/FullPrice'
        priceFunctionExecutionErrorMessage:
          description: Error when executing the price function
          type: string
        priceFunctionParameters:
          description: Product parameters
          items:
            $ref: '#/components/schemas/PublicParameter'
          type: array
        priceFunctionParametersValues:
          additionalProperties:
            description: Product value parameters
            type: string
          description: Product value parameters
          type: object
        productFamily:
          description: Product family
          maxLength: 128
          minLength: 0
          type: string
        publisherProductId:
          type: string
        publisherRefId:
          description: Product publisher reference
          maxLength: 80
          minLength: 0
          type: string
        relatedContents:
          description: Links for downloading product-related content file
          items:
            $ref: '#/components/schemas/RelatedContent'
          type: array
        releaseDate:
          description: Planned product release date
          format: date-time
          type: string
        resources:
          description: Product resources
          items:
            $ref: '#/components/schemas/Resource'
          type: array
          uniqueItems: true
        salesMode:
          description: Sales mode
          enum:
            - BILLING_PLAN
            - STANDARD
          type: string
        signedProduct:
          type: string
        storeId:
          description: Store ID
          type: string
        subscriptionTemplate:
          description: Subscription template name
          type: string
        taxCode:
          description: Avatax tax code
          type: string
        taxExempt:
          description: true if the product is tax exempted, false instead
          type: boolean
        trial:
          description: Indicator if it is a product trial
          type: boolean
        trialAllowed:
          description: Flag for subscription trial allowed on this product
          type: boolean
        trialDuration:
          description: Duration of subscription trial on this product (in days)
          format: int32
          type: integer
        type:
          description: Product type
          enum:
            - SOFTWARE
            - GAMES
            - CASUAL
            - SERVICE
            - B2C
            - B2B
            - HARDWARE
          type: string
        unifiedRegisterSoftware:
          description: Indicator if Product is included in unified register
          type: boolean
        unitPrice:
          $ref: '#/components/schemas/FullPrice'
        updateDate:
          deprecated: true
          format: date-time
          type: string
        variableValues:
          additionalProperties:
            description: Product variable values
            type: object
          description: Product variable values
          type: object
        variables:
          description: Available product variables
          items:
            $ref: '#/components/schemas/Variable'
          type: array
        variantOf:
          description: Variant of
          type: string
        visualTags:
          additionalProperties:
            description: Visual tags linked to product
            items:
              description: Visual tags linked to product
              type: string
            type: array
            uniqueItems: true
          description: Visual tags linked to product
          type: object
      required:
        - lifeTime
        - publisherRefId
      type: object
    RecapEntry:
      properties:
        count:
          format: int32
          type: integer
        targetValue:
          type: string
      type: object
    RelatedContent:
      description: Links for downloading product-related content file
      properties:
        file:
          description: Download link or filename with extension
          type: string
        label:
          description: Explanation of what this file is
          type: string
      required:
        - file
        - label
      type: object
    RemotePrice:
      description: Information of remote price
      properties:
        licenseNextExpirationDate:
          description: licenseNextExpirationDate
          format: date-time
          type: string
        response:
          description: The response of the remote price
          type: string
        url:
          description: URL use to get the remote price
          type: string
      type: object
    Resource:
      description: Product resources
      properties:
        url:
          description: URL of the asset
          type: string
      required:
        - url
      type: object
    SearchResultCustomFields:
      properties:
        items:
          items:
            $ref: '#/components/schemas/CustomFields'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultCustomFieldsDefinition:
      properties:
        items:
          items:
            $ref: '#/components/schemas/CustomFieldsDefinition'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultCustomizedProduct:
      properties:
        items:
          items:
            $ref: '#/components/schemas/CustomizedProduct'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultDescription:
      properties:
        items:
          items:
            $ref: '#/components/schemas/Description'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultDocument:
      properties:
        items:
          items:
            $ref: '#/components/schemas/Document'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultObject:
      properties:
        items:
          items:
            type: object
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultPriceFunction:
      properties:
        items:
          items:
            $ref: '#/components/schemas/PriceFunction'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultProduct:
      properties:
        items:
          items:
            $ref: '#/components/schemas/Product'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultPublicProduct:
      properties:
        items:
          items:
            $ref: '#/components/schemas/PublicProduct'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    SearchResultRecapEntry:
      properties:
        items:
          items:
            $ref: '#/components/schemas/RecapEntry'
          type: array
        last:
          type: boolean
        number:
          format: int32
          type: integer
        size:
          format: int32
          type: integer
        totalItems:
          format: int64
          type: integer
        totalPages:
          format: int32
          type: integer
      type: object
    UpdateFulfillmentTemplatesRequest:
      properties:
        customerId:
          description: Customer ID
          type: string
        fulfillmentTemplateIdTarget:
          description: ID of the fulfillment template to change in products
          type: string
        fulfillmentTemplateSource:
          description: >-
            Source is the fulfillment template name or id depending on the
            fulfillment version - name for fulfillment v0 or id for fulfillment
            v1
          type: string
      required:
        - customerId
        - fulfillmentTemplateIdTarget
        - fulfillmentTemplateSource
      type: object
    Variable:
      description: Available product variables
      properties:
        defaultValue:
          description: Name of variable
          type: object
        field:
          description: Variable name
          type: string
        internalDesc:
          description: Variable internal description
          type: string
        labels:
          additionalProperties:
            description: Variable labels
            type: string
          description: Variable labels
          type: object
        localizedValue:
          additionalProperties:
            additionalProperties:
              description: Variable localized value
              type: string
            description: Variable localized value
            type: object
          description: Variable localized value
          type: object
        type:
          description: Variable type
          enum:
            - LIST
            - RANGE
            - BOOL
          type: string
        value:
          description: Possible values of variable
          type: object
      required:
        - defaultValue
        - field
        - labels
        - localizedValue
        - type
      type: object
    VariableDescription:
      description: Variable Descriptions
      properties:
        description:
          description: Description
          type: string
        label:
          type: string
        labels:
          additionalProperties:
            description: Short descriptions
            type: string
          description: Short descriptions
          type: object
        variableValueDescriptions:
          description: Descriptions of variable values
          items:
            $ref: '#/components/schemas/VariableValueDescription'
          type: array
      required:
        - description
      type: object
    VariableValueDescription:
      description: Descriptions of variable values
      properties:
        descValue:
          type: string
        description:
          description: Description
          type: string
        localizedValue:
          additionalProperties:
            description: Localized values of the variable
            type: string
          description: Localized values of the variable
          type: object
      required:
        - description
      type: object
  securitySchemes:
    Bearer:
      bearerFormat: JWT
      description: Enter Bearer token
      scheme: bearer
      type: http
info:
  description: API to manage products
  license:
    name: Nexway License Version 1.0
  title: Product
  version: '1.0'
openapi: 3.0.1
paths:
  /products:
    get:
      operationId: getItems
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - description: >-
            Return selected fields only (multiple occurrences allowed for
            selecting multiple fields)
          example: lastUpdateReason,nextGenerationOf
          in: query
          name: target
          required: false
          schema:
            type: string
        - description: Filter products by customerId
          example: d775dd4f-458e-4493-bfec-fb4a23901580
          in: query
          name: customerId
          schema:
            type: string
        - description: Filter products by subscription lifetime
          example: PERMANENT
          in: query
          name: lifeTime
          schema:
            type: string
        - description: Filter products by subscription template
          example: NEXWAY_1M
          in: query
          name: subscriptionTemplate
          schema:
            type: string
        - description: Filter products by parentId
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: parentId
          schema:
            type: string
        - description: Filter products by product family
          example: My Product Family Name
          in: query
          name: productFamily
          schema:
            type: string
        - description: Filter physical products
          example: true
          in: query
          name: physical
          schema:
            type: boolean
        - description: Filter products by publisher reference ID
          example: myPublisherRefId
          in: query
          name: publisherRefId
          schema:
            type: string
        - description: Filter products by sales mode
          example: STANDARD
          in: query
          name: salesMode
          schema:
            type: string
        - description: Filter products by fulfillment template name
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: fulfillmentTemplate
          schema:
            type: string
        - description: Filter products by product type
          example: SOFTWARE
          in: query
          name: type
          schema:
            type: string
        - description: Filter products by catalog ID
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: catalogId
          schema:
            type: string
        - description: Filter products by description ID
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: descriptionId
          schema:
            type: string
        - description: Filter products by code name
          example: myCodeName
          in: query
          name: codeName
          schema:
            type: string
        - description: Filter products by generic name of the product
          example: myGenericName
          in: query
          name: genericName
          schema:
            type: string
        - description: Filter products by price function ID
          example: e3266efa-7cbf-447c-bd53-4a765a0b494e
          in: query
          name: priceFunction
          schema:
            type: string
        - description: >-
            Filter products by availability in stores, may be multiple
            occurrences of this param
          example: >-
            e3266efa-7cbf-447c-bd53-4a765a0b494e,29c46780-a263-4694-bb9e-286152e688b7
          in: query
          name: sellingStores
          schema:
            type: string
        - description: Filter products by status (ENABLED/DISABLED)
          example: ENABLED
          in: query
          name: status
          schema:
            type: string
        - description: >-
            Filter products blacklisted in specific country, may be multiple
            occurrences of this param
          example: FR,DE
          in: query
          name: blackListedCountries
          schema:
            type: string
        - description: Planned product release date
          example: 1668456000
          in: query
          name: releaseDate
          schema:
            format: date-time
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - Product
      x-operationWeight: '300'
    post:
      operationId: createItem
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductUpdate'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Create an item
      tags:
        - Product
      x-operationWeight: '300'
  /products/customFields:
    get:
      operationId: getItems_5
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - in: query
          name: target
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultCustomFields'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - Custom Fields
      x-operationWeight: '300'
    post:
      operationId: createItem_4
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFields'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFields'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Create an item
      tags:
        - Custom Fields
      x-operationWeight: '300'
  /products/customFields/distinct:
    get:
      operationId: distinct_5
      parameters:
        - in: query
          name: target
          required: false
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultObject'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get distinct values for a given field
      tags:
        - Custom Fields
      x-operationWeight: '100'
  /products/customFields/recap:
    get:
      operationId: recap_5
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultRecapEntry'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get recap quantities for a given field
      tags:
        - Custom Fields
      x-operationWeight: '150'
  /products/customFields/unwind:
    get:
      operationId: unwind_5
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDocument'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search unwind for a given field
      tags:
        - Custom Fields
      x-operationWeight: '150'
  /products/customFields/{id}:
    delete:
      operationId: deleteItem_5
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            application/json:
              schema:
                type: object
          description: No Content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Delete item
      tags:
        - Custom Fields
      x-operationWeight: '500'
    get:
      operationId: getItem_6
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFields'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - Custom Fields
      x-operationWeight: '200'
    put:
      operationId: updateItem_5
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFields'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFields'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update item
      tags:
        - Custom Fields
      x-operationWeight: '400'
  /products/customFieldsDefinition:
    get:
      operationId: getItems_6
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - in: query
          name: target
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultCustomFieldsDefinition'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - Custom Fields Definition
      x-operationWeight: '300'
    post:
      operationId: createItem_5
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldsDefinition'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldsDefinition'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Create an item
      tags:
        - Custom Fields Definition
      x-operationWeight: '300'
  /products/customFieldsDefinition/distinct:
    get:
      operationId: distinct_4
      parameters:
        - in: query
          name: target
          required: false
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultObject'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get distinct values for a given field
      tags:
        - Custom Fields Definition
      x-operationWeight: '100'
  /products/customFieldsDefinition/recap:
    get:
      operationId: recap_4
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultRecapEntry'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get recap quantities for a given field
      tags:
        - Custom Fields Definition
      x-operationWeight: '150'
  /products/customFieldsDefinition/unwind:
    get:
      operationId: unwind_4
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDocument'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search unwind for a given field
      tags:
        - Custom Fields Definition
      x-operationWeight: '150'
  /products/customFieldsDefinition/{id}:
    delete:
      operationId: deleteItem_4
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            application/json:
              schema:
                type: object
          description: No Content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Delete item
      tags:
        - Custom Fields Definition
      x-operationWeight: '500'
    get:
      operationId: getItem_5
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldsDefinition'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - Custom Fields Definition
      x-operationWeight: '200'
    put:
      operationId: updateItem_4
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldsDefinition'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldsDefinition'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update item
      tags:
        - Custom Fields Definition
      x-operationWeight: '400'
  /products/customized-products:
    get:
      operationId: getItems_4
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - description: >-
            Return selected fields only (multiple occurrences allowed for
            selecting multiple fields)
          example: customerId,lifeTime,trialAllowed,type,...
          in: query
          name: target
          required: false
          schema:
            type: string
        - description: Filter products by customer ID
          example: 3d772d1c-853e-4f51-bd6e-24562708ab3f
          in: query
          name: customerId
          schema:
            type: string
        - description: Filter products by catalog ID
          example: 5a10f260-83e8-4b7f-9a58-3b67f0ed5d8d
          in: query
          name: catalogId
          schema:
            type: string
        - description: Filter products by product ID
          example: 5a10f260-83e8-4b7f-9a58-3b67f0ed5d8d
          in: query
          name: productId
          schema:
            type: string
        - description: >-
            Filter products by availability in stores, may be multiple
            occurrences of this param
          example: mySellingStoreName
          in: query
          name: sellingStore
          schema:
            type: string
        - description: Filter products by subscription template
          example: 82c9cd93-ced4-4603-b51f-7ef8aa8ab40b
          in: query
          name: subscriptionTemplate
          schema:
            type: string
        - description: Filter products by fulfillment template name
          example: myFulfillmentName
          in: query
          name: fulfillmentTemplate
          schema:
            type: string
        - description: Filter products by status (ENABLED/DISABLED)
          example: true
          in: query
          name: status
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultCustomizedProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - CustomizedProduct
      x-operationWeight: '300'
    post:
      operationId: createItem_3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomizedProduct'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizedProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Create an item
      tags:
        - CustomizedProduct
      x-operationWeight: '300'
  /products/customized-products/distinct:
    get:
      operationId: distinct_3
      parameters:
        - in: query
          name: target
          required: false
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultObject'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get distinct values for a given field
      tags:
        - CustomizedProduct
      x-operationWeight: '100'
  /products/customized-products/recap:
    get:
      operationId: recap_3
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultRecapEntry'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get recap quantities for a given field
      tags:
        - CustomizedProduct
      x-operationWeight: '150'
  /products/customized-products/unwind:
    get:
      operationId: unwind_3
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDocument'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search unwind for a given field
      tags:
        - CustomizedProduct
      x-operationWeight: '150'
  /products/customized-products/{id}:
    delete:
      operationId: deleteItem_3
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            application/json:
              schema:
                type: object
          description: No Content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Delete item
      tags:
        - CustomizedProduct
      x-operationWeight: '500'
    get:
      operationId: getItem_4
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizedProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - CustomizedProduct
      x-operationWeight: '200'
    put:
      operationId: updateItem_3
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomizedProduct'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomizedProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update item
      tags:
        - CustomizedProduct
      x-operationWeight: '400'
  /products/defaultcurrency:
    get:
      description: Get the default currencies for the given products ids
      operationId: getDefaultCurrency
      parameters:
        - description: List of product id
          example: productId1,productId2,productId3
          in: query
          name: productId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get the default currencies of products
      tags:
        - Product
      x-operationWeight: '300'
  /products/descriptions:
    get:
      operationId: getItems_3
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - description: >-
            Return selected fields only (multiple occurrences allowed for
            selecting multiple fields)
          example: marketingName,fallbackLocale,localizedMarketingName,...
          in: query
          name: target
          required: false
          schema:
            type: string
        - description: Filter descriptions by customerId
          example: 81163a60-abcd-4ee6-9a31-c8385b6119ea
          in: query
          name: customerId
          schema:
            type: string
        - description: Filter descriptions by catalogId
          example: 26a1f350-64cd-4b98-a05e-fc0035359ffa
          in: query
          name: catalogId
          schema:
            type: string
        - description: Filter descriptions by fallback locale
          example: en-US
          in: query
          name: fallbackLocale
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDescription'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - Description
      x-operationWeight: '300'
    post:
      operationId: createItem_2
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Description'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Description'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Create an item
      tags:
        - Description
      x-operationWeight: '300'
  /products/descriptions/distinct:
    get:
      operationId: distinct_2
      parameters:
        - in: query
          name: target
          required: false
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultObject'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get distinct values for a given field
      tags:
        - Description
      x-operationWeight: '100'
  /products/descriptions/recap:
    get:
      operationId: recap_2
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultRecapEntry'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get recap quantities for a given field
      tags:
        - Description
      x-operationWeight: '150'
  /products/descriptions/search:
    get:
      description: Search descriptions with text
      operationId: search
      parameters:
        - description: Pageable parameters
          example: size=150&page=0
          in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - description: A text in the description to search with
          example: aTextToSearchWith
          in: query
          name: req
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDescription'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search descriptions with text
      tags:
        - Description
      x-operationWeight: '400'
  /products/descriptions/unwind:
    get:
      operationId: unwind_2
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDocument'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search unwind for a given field
      tags:
        - Description
      x-operationWeight: '150'
  /products/descriptions/{id}:
    delete:
      operationId: deleteItem_2
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            application/json:
              schema:
                type: object
          description: No Content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Delete item
      tags:
        - Description
      x-operationWeight: '500'
    get:
      operationId: getItem_3
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Description'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - Description
      x-operationWeight: '200'
    put:
      operationId: updateItem_2
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Description'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Description'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update item
      tags:
        - Description
      x-operationWeight: '400'
  /products/distinct:
    get:
      operationId: distinct_1
      parameters:
        - in: query
          name: target
          required: false
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultObject'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get distinct values for a given field
      tags:
        - Product
      x-operationWeight: '100'
  /products/duplicate/{id}:
    post:
      operationId: duplicate_1
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DuplicateProductRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateProductResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateProductResponse'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateProductResponse'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateProductResponse'
          description: Internal Server Error
      summary: >-
        Duplicate a product, if the product has variants it will also duplicate
        all variants
      tags:
        - Product
  /products/fulfillment-templates:
    put:
      operationId: updateFulfillmentTemplates
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFulfillmentTemplatesRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                type: string
          description: Success
        '400':
          content:
            application/json:
              schema:
                type: string
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                type: string
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                type: string
          description: Internal Server Error
      summary: Update all products fulfillment templates of a specific customer
      tags:
        - Product
  /products/import:
    post:
      description: Import a product
      operationId: post
      parameters:
        - in: query
          name: locale
          required: false
          schema:
            type: string
        - description: Store id
          example: 5a095a54-445c-4b57-ba6d-23fdc63df4c9
          in: query
          name: storeId
          required: false
          schema:
            type: string
        - description: >-
            Determine if the operation will take effect in the database, if
            dryRun is true, product will not be import
          example: true
          in: query
          name: dryRun
          required: false
          schema:
            type: boolean
        - description: Request reason
          example: Import from old version to new version
          in: query
          name: reason
          required: false
          schema:
            type: string
        - description: Local of product
          example: fr-FR
          in: query
          name: local
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: string
        description: Product to be import
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: Success
        '201':
          content:
            application/json:
              schema:
                type: object
          description: Created
          headers:
            Location:
              description: link to the new Product ref
              style: simple
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Import a product
      tags:
        - Product
      x-operationWeight: '500'
  /products/price-functions:
    get:
      operationId: getItems_2
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - description: >-
            Return selected fields only (multiple occurrences allowed for
            selecting multiple fields)
          example: name,parameters,productFields,...
          in: query
          name: target
          required: false
          schema:
            type: string
        - description: Filter price functions by customerId
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: customerId
          schema:
            type: string
        - description: Filter price functions by name
          example: myPriceFunctionName
          in: query
          name: name
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultPriceFunction'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - PriceFunction
      x-operationWeight: '300'
    post:
      operationId: createItem_1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceFunction'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceFunction'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Create an item
      tags:
        - PriceFunction
      x-operationWeight: '300'
  /products/price-functions/distinct:
    get:
      operationId: distinct
      parameters:
        - in: query
          name: target
          required: false
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultObject'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get distinct values for a given field
      tags:
        - PriceFunction
      x-operationWeight: '100'
  /products/price-functions/duplicate/{customerId}/{id}:
    post:
      description: >-
        Duplicate a price function of given price function id to the customer of
        the given customer id
      operationId: duplicate
      parameters:
        - description: Customer id to duplicate in
          example: 1a45d839-9c0f-4691-8b79-1d2b4797fe8d
          in: path
          name: customerId
          required: true
          schema:
            type: string
        - description: Price function id
          example: 5ccdd01d-3a93-4fa6-b251-9434b9ca35ad
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceFunction'
          description: Success
        '201':
          content:
            application/json:
              schema:
                type: string
          description: Created
          headers:
            Location:
              description: link to the new PriceFunction ref
              style: simple
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Duplicate a price function
      tags:
        - PriceFunction
      x-operationWeight: '500'
  /products/price-functions/recap:
    get:
      operationId: recap_1
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultRecapEntry'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get recap quantities for a given field
      tags:
        - PriceFunction
      x-operationWeight: '150'
  /products/price-functions/unwind:
    get:
      operationId: unwind_1
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDocument'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search unwind for a given field
      tags:
        - PriceFunction
      x-operationWeight: '150'
  /products/price-functions/{id}:
    delete:
      operationId: deleteItem_1
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            application/json:
              schema:
                type: object
          description: No Content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Delete item
      tags:
        - PriceFunction
      x-operationWeight: '500'
    get:
      operationId: getItem_2
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceFunction'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - PriceFunction
      x-operationWeight: '200'
    put:
      operationId: updateItem_1
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceFunction'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceFunction'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update item
      tags:
        - PriceFunction
      x-operationWeight: '400'
  /products/public:
    get:
      operationId: getItems_1
      parameters:
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - description: >-
            Return selected fields only (multiple occurrences allowed for
            selecting multiple fields)
          example: lastUpdateReason,nextGenerationOf
          in: query
          name: target
          required: false
          schema:
            type: string
        - description: Filter products by customerId
          example: d775dd4f-458e-4493-bfec-fb4a23901580
          in: query
          name: customerId
          schema:
            type: string
        - description: Filter products by subscription lifetime
          example: PERMANENT
          in: query
          name: lifeTime
          schema:
            type: string
        - description: Filter products by subscription template
          example: NEXWAY_1M
          in: query
          name: subscriptionTemplate
          schema:
            type: string
        - description: Filter products by parentId
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: parentId
          schema:
            type: string
        - description: Filter products by product family
          example: My Product Family Name
          in: query
          name: productFamily
          schema:
            type: string
        - description: Filter physical products
          example: true
          in: query
          name: physical
          schema:
            type: boolean
        - description: Filter products by publisher reference ID
          example: myPublisherRefId
          in: query
          name: publisherRefId
          schema:
            type: string
        - description: Filter products by sales mode
          example: STANDARD
          in: query
          name: salesMode
          schema:
            type: string
        - description: Filter products by fulfillment template name
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: fulfillmentTemplate
          schema:
            type: string
        - description: Filter products by product type
          example: SOFTWARE
          in: query
          name: type
          schema:
            type: string
        - description: Filter products by catalog ID
          example: af8c3eb5-157f-44db-9492-6b32559d35d0
          in: query
          name: catalogId
          schema:
            type: string
        - description: Filter products by code name
          example: myCodeName
          in: query
          name: codeName
          schema:
            type: string
        - description: Filter products by generic name of the product
          example: myGenericName
          in: query
          name: genericName
          schema:
            type: string
        - description: Filter products by price function ID
          example: e3266efa-7cbf-447c-bd53-4a765a0b494e
          in: query
          name: priceFunction
          schema:
            type: string
        - description: >-
            Filter products by availability in stores, may be multiple
            occurrences of this param
          example: >-
            e3266efa-7cbf-447c-bd53-4a765a0b494e,29c46780-a263-4694-bb9e-286152e688b7
          in: query
          name: sellingStoreS
          schema:
            type: string
        - description: Filter products by status (ENABLED/DISABLED)
          example: ENABLED
          in: query
          name: status
          schema:
            type: string
        - description: >-
            Filter products blacklisted in specific country, may be multiple
            occurrences of this param
          example: FR,DE
          in: query
          name: blackListedCountries
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultPublicProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get items
      tags:
        - Public
      x-operationWeight: '300'
  /products/public/{customerId}/{publisherRefId}/nextgeneration-by-publisher-ref:
    get:
      description: >-
        Get the next generation of product according to customerId and publisher
        ref id
      operationId: getNextGenerationByCustomerIdAndPublisherRefId
      parameters:
        - description: Customer id
          example: 17b42c23-1e34-4c8b-bfe4-c06fb64e0b95
          in: path
          name: customerId
          required: true
          schema:
            type: string
        - description: publisherRef id
          example: 6b49bc08-242b-436d-9f5e-27aef67378dd
          in: path
          name: publisherRefId
          required: true
          schema:
            type: string
        - description: version
          example: 22
          in: query
          name: version
          required: false
          schema:
            format: int64
            type: integer
        - description: >-
            If useProductVariationOnly is true, only search with product who has
            parent
          example: true
          in: query
          name: useProductVariationOnly
          required: false
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicProduct'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: >-
        Get the next generation of product according to customerId and publisher
        ref id
      tags:
        - Public
      x-operationWeight: '300'
  /products/public/{id}:
    get:
      operationId: getItem_1
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicProduct'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - Public
      x-operationWeight: '200'
  /products/public/{id}/descriptions:
    get:
      description: Get public description for the given product id
      operationId: getPublicDescription
      parameters:
        - description: Product id
          example: 33447220-3716-4ce8-9694-1124b0f1a458
          in: query
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Description'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get public description of product
      tags:
        - Public
      x-operationWeight: '400'
  /products/public/{id}/nextgeneration:
    get:
      description: Get the next generation of product for the given product id
      operationId: getNextGeneration_1
      parameters:
        - description: Product id
          example: 9bc202c5-6b54-4ae9-8df9-6edb82759ed6
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: Version
          example: 22
          in: query
          name: version
          required: false
          schema:
            format: int64
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicProduct'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get the next generation of product
      tags:
        - Public
      x-operationWeight: '300'
  /products/public/{productId}/next-generations:
    get:
      operationId: getNextGenerations
      parameters:
        - in: path
          name: productId
          required: true
          schema:
            type: string
        - in: query
          name: queryParams
          required: true
          schema:
            $ref: '#/components/schemas/NextGenerationsQueryParameters'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ProductByGeneration'
                type: array
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get the next generations information for a product
      tags:
        - Public
  /products/recap:
    get:
      operationId: recap
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultRecapEntry'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get recap quantities for a given field
      tags:
        - Product
      x-operationWeight: '150'
  /products/unwind:
    get:
      operationId: unwind
      parameters:
        - in: query
          name: target
          required: true
          schema:
            type: string
        - in: query
          name: pageable
          required: true
          schema:
            $ref: '#/components/schemas/Pageable'
        - in: query
          name: predicate
          required: true
          schema:
            type: object
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResultDocument'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Search unwind for a given field
      tags:
        - Product
      x-operationWeight: '150'
  /products/{id}:
    delete:
      operationId: deleteItem
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '204':
          content:
            application/json:
              schema:
                type: object
          description: No Content
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Delete item
      tags:
        - Product
      x-operationWeight: '500'
    get:
      operationId: getItem
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get item
      tags:
        - Product
      x-operationWeight: '200'
    put:
      operationId: updateItem
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update item
      tags:
        - Product
      x-operationWeight: '400'
  /products/{id}/nextgeneration:
    get:
      description: Get the next generation of product according to the given product id
      operationId: getNextGeneration
      parameters:
        - description: Product id
          example: 0966f613-5c17-4a7a-b1eb-1114164bc601
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get the next generation of Product
      tags:
        - Product
      x-operationWeight: '300'
  /products/{id}/update-without-price:
    put:
      description: >-
        Be able to update the product without price information for the given
        product id
      operationId: updateWithoutPrice
      parameters:
        - description: Existing product id
          example: e1c2705a-58e0-4b9c-8d74-063521055a09
          in: path
          name: id
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductUpdate'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Update product without updating prices
      tags:
        - Product
  /products/{id}/variants/matrix:
    get:
      description: Get matrix of all available product variants
      operationId: getVariantMatrix
      parameters:
        - description: Product id
          example: 2b760279-a875-411d-9ebf-d90bfeb40c95
          in: path
          name: id
          required: true
          schema:
            type: string
        - in: query
          name: predicate
          required: true
          schema:
            type: object
        - description: >-
            In which format that the variables in the matrix will be organized.
            Prefix and suffix are `[` and `]`, when the format is '1D',
            delimiter is `,`, when the format is 'ND', delimiter is `][`
          examples:
            1D:
              description: Delimiter is `,`, [Test,lifeTime,seats,subscriptionTemplate]
              value: 1D
            ND:
              description: Delimiter is `][`, [Test][lifeTime][seats][subscriptionTemplate]
              value: ND
          in: query
          name: format
          required: false
          schema:
            pattern: ^|1D|ND|(\[[A-Za-z0-9,]+])+$
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Matrix'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Not Found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NormalizeException'
          description: Failure
      summary: Get variant matrix
      tags:
        - Product
      x-operationWeight: '400'
security:
  - Bearer:
      - read
      - write
servers:
  - description: Generated server url
    url: https://api.nexway.store
