> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pricenow.ch/llms.txt
> Use this file to discover all available pages before exploring further.

# Mutate items of the unified items view

> Allows mutating items of the unified items view. Either attributes or the validity of an item can be mutate. Further, this endpoint allows for (de)selecting optional cross selling options on items.



## OpenAPI

````yaml https://pratiq-docs.s3.eu-west-1.amazonaws.com/open-api/production/public/2025-02-18.json patch /api/booking/products/{productId}/journey/unified-view/items
openapi: 3.0.0
info:
  title: Pricenow API
  version: '2025-02-18'
servers:
  - url: https://api.pricenow.dev
    description: Production Endpoint
security: []
tags: []
paths:
  /api/booking/products/{productId}/journey/unified-view/items:
    patch:
      tags:
        - booking
      summary: Mutate items of the unified items view
      description: >-
        Allows mutating items of the unified items view. Either attributes or
        the validity of an item can be mutate. Further, this endpoint allows for
        (de)selecting optional cross selling options on items.
      operationId: mutateUnifiedItemsView
      parameters:
        - name: accept-language
          in: header
          description: Language of the response
          required: true
          schema:
            type: string
            enum:
              - en
              - de
              - fr
              - it
        - name: pratiq-channel-uuid
          in: header
          description: UUID of the sales channel
          required: true
          schema:
            type: string
        - name: productId
          in: path
          required: true
          schema:
            type: number
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: number
                      productVariantId:
                        type: number
                      personId:
                        type: number
                        nullable: true
                      validity:
                        type: object
                        properties:
                          from:
                            type: string
                          to:
                            type: string
                        required:
                          - from
                          - to
                        nullable: true
                      parentItemId:
                        type: number
                        nullable: true
                      originatedItemId:
                        type: number
                        nullable: true
                      discountCardTypeId:
                        type: number
                        nullable: true
                    required:
                      - id
                      - productVariantId
                      - personId
                      - validity
                      - parentItemId
                      - originatedItemId
                      - discountCardTypeId
                mutations:
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      value:
                        oneOf:
                          - nullable: true
                          - type: string
                          - type: number
                          - type: boolean
                          - type: boolean
                          - type: object
                            properties:
                              from:
                                type: string
                              to:
                                type: string
                            required:
                              - from
                              - to
                          - type: array
                            items:
                              oneOf:
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - anonymous
                                    quantity:
                                      type: number
                                    personType:
                                      type: string
                                  required:
                                    - kind
                                    - quantity
                                    - personType
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - personalized
                                    personIds:
                                      type: array
                                      items:
                                        type: number
                                    personType:
                                      type: string
                                  required:
                                    - kind
                                    - personIds
                                    - personType
                                - type: object
                                  properties:
                                    kind:
                                      type: string
                                      enum:
                                        - discounted
                                    quantity:
                                      type: number
                                    personType:
                                      type: string
                                    discountCardTypeId:
                                      type: number
                                  required:
                                    - kind
                                    - quantity
                                    - personType
                                    - discountCardTypeId
                        nullable: true
                    required:
                      - id
                      - value
              required:
                - items
                - mutations
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/BookingUnifiedMutationView'
                required:
                  - data
components:
  schemas:
    BookingUnifiedMutationView:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/BookingStateConfigurationItem'
        itemsSerialized:
          type: array
          items:
            type: object
            properties:
              id:
                type: number
              productVariantId:
                type: number
              personId:
                type: number
                nullable: true
              validity:
                type: object
                properties:
                  from:
                    type: string
                  to:
                    type: string
                required:
                  - from
                  - to
                nullable: true
              parentItemId:
                type: number
                nullable: true
              originatedItemId:
                type: number
                nullable: true
              discountCardTypeId:
                type: number
                nullable: true
            required:
              - id
              - productVariantId
              - personId
              - validity
              - parentItemId
              - originatedItemId
              - discountCardTypeId
      required:
        - items
        - itemsSerialized
    BookingStateConfigurationItem:
      type: object
      properties:
        id:
          type: number
        productId:
          type: number
        title:
          type: string
        subtitle:
          type: string
        description:
          type: array
          items:
            $ref: '#/components/schemas/RichText'
        shortDescription:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/ExternalImage'
        price:
          $ref: '#/components/schemas/FinalPrice'
        formElements:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/BookingStateItemFormElementDropdown'
              - $ref: '#/components/schemas/BookingStateItemFormElementRadio'
              - $ref: '#/components/schemas/BookingStateItemFormElementSlotPicker'
              - $ref: '#/components/schemas/BookingStateItemFormElementPersonPicker'
        person:
          $ref: '#/components/schemas/APIRestInterface_Person'
        validity:
          type: object
          properties:
            from:
              type: string
            to:
              type: string
          required:
            - from
            - to
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/ItemDiscount'
        productVariantId:
          type: number
        discountCardTypeId:
          type: number
        merchant:
          $ref: '#/components/schemas/Catalog_Merchant'
        requiredProducts:
          type: array
          items:
            $ref: '#/components/schemas/BookingStateRequiredItem'
        optionalProducts:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/BookingStateOptionalCheckboxItem'
              - $ref: '#/components/schemas/BookingStateOptionalRadioItem'
      required:
        - id
        - productId
        - title
        - subtitle
        - description
        - shortDescription
        - images
        - price
        - formElements
        - person
        - validity
        - discounts
        - productVariantId
        - discountCardTypeId
        - merchant
        - requiredProducts
        - optionalProducts
    RichText:
      type: object
      properties:
        children:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/ArbitraryTypedObject'
              - $ref: '#/components/schemas/PortableTextSpan'
        markDefs:
          type: array
          items:
            $ref: '#/components/schemas/PortableTextMarkDefinition'
        style:
          type: string
        listItem:
          type: string
        level:
          type: number
      required:
        - children
    ExternalImage:
      type: object
      properties:
        kind:
          type: string
          enum:
            - image
        url:
          type: string
        alt:
          type: string
      required:
        - kind
        - url
        - alt
    FinalPrice:
      type: object
      properties:
        listPrice:
          type: number
        discountedPrice:
          type: number
      required:
        - listPrice
        - discountedPrice
    BookingStateItemFormElementDropdown:
      type: object
      properties:
        id:
          type: string
        explanation:
          type: string
        kind:
          type: string
          enum:
            - dropdown
        label:
          type: string
        options:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              value:
                type: string
              disabled:
                type: boolean
            required:
              - label
              - value
              - disabled
        intent:
          type: string
          enum:
            - attribute
        value:
          type: string
        attributeKey:
          type: string
      required:
        - id
        - explanation
        - kind
        - label
        - options
        - intent
        - value
        - attributeKey
    BookingStateItemFormElementRadio:
      type: object
      properties:
        id:
          type: string
        explanation:
          type: string
        kind:
          type: string
          enum:
            - radio
        label:
          type: string
        options:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              value:
                type: string
              disabled:
                type: boolean
            required:
              - label
              - value
              - disabled
        intent:
          type: string
          enum:
            - attribute
        value:
          type: string
        attributeKey:
          type: string
      required:
        - id
        - explanation
        - kind
        - label
        - options
        - intent
        - value
        - attributeKey
    BookingStateItemFormElementSlotPicker:
      type: object
      properties:
        id:
          type: string
        explanation:
          type: string
        kind:
          type: string
          enum:
            - slotpicker
        label:
          type: string
        hasPaginatedOptions:
          type: boolean
        value:
          type: object
          properties:
            from:
              type: string
            to:
              type: string
          required:
            - from
            - to
      required:
        - id
        - explanation
        - kind
        - label
        - hasPaginatedOptions
        - value
    BookingStateItemFormElementPersonPicker:
      type: object
      properties:
        id:
          type: string
        explanation:
          type: string
        kind:
          type: string
          enum:
            - personpicker
        supportsPersonalization:
          type: boolean
        options:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              value:
                type: string
              personalizedOptions:
                type: array
                items:
                  type: object
                  properties:
                    label:
                      type: string
                    value:
                      type: number
                  required:
                    - label
                    - value
              supportedDiscountCardTypes:
                type: array
                items:
                  $ref: '#/components/schemas/SupportedDiscountCardType'
              restrictions:
                type: object
                properties:
                  quantity:
                    type: object
                    properties:
                      min:
                        type: number
                      max:
                        type: number
                  age:
                    oneOf:
                      - type: object
                        properties: {}
                      - $ref: '#/components/schemas/PersonPickerRestrictionAge'
                      - $ref: '#/components/schemas/PersonPickerRestrictionBirthyear'
            required:
              - label
              - value
              - supportedDiscountCardTypes
        value:
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  kind:
                    type: string
                    enum:
                      - anonymous
                  quantity:
                    type: number
                  personType:
                    type: string
                required:
                  - kind
                  - quantity
                  - personType
              - type: object
                properties:
                  kind:
                    type: string
                    enum:
                      - personalized
                  personIds:
                    type: array
                    items:
                      type: number
                  personType:
                    type: string
                required:
                  - kind
                  - personIds
                  - personType
              - type: object
                properties:
                  kind:
                    type: string
                    enum:
                      - discounted
                  quantity:
                    type: number
                  personType:
                    type: string
                  discountCardTypeId:
                    type: number
                required:
                  - kind
                  - quantity
                  - personType
                  - discountCardTypeId
      required:
        - id
        - explanation
        - kind
        - supportsPersonalization
        - options
        - value
    APIRestInterface_Person:
      type: object
      properties:
        id:
          type: number
        fields:
          type: object
          additionalProperties:
            oneOf:
              - nullable: true
              - type: string
              - type: number
        createdAt:
          type: string
        lastUpdateAt:
          type: string
        isOwner:
          type: boolean
      required:
        - id
        - createdAt
        - lastUpdateAt
        - isOwner
    ItemDiscount:
      type: object
      properties:
        discount:
          type: number
        label:
          type: string
      required:
        - discount
        - label
    Catalog_Merchant:
      type: object
      properties:
        identifier:
          type: string
        timezone:
          type: string
      required:
        - identifier
        - timezone
    BookingStateRequiredItem:
      type: object
      properties:
        id:
          type: number
        productId:
          type: number
        title:
          type: string
        subtitle:
          type: string
        description:
          type: array
          items:
            $ref: '#/components/schemas/RichText'
        shortDescription:
          type: string
        images:
          type: array
          items:
            $ref: '#/components/schemas/ExternalImage'
        price:
          $ref: '#/components/schemas/FinalPrice'
        formElements:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/BookingStateItemFormElementDropdown'
              - $ref: '#/components/schemas/BookingStateItemFormElementRadio'
              - $ref: '#/components/schemas/BookingStateItemFormElementSlotPicker'
              - $ref: '#/components/schemas/BookingStateItemFormElementPersonPicker'
        person:
          $ref: '#/components/schemas/APIRestInterface_Person'
        validity:
          type: object
          properties:
            from:
              type: string
            to:
              type: string
          required:
            - from
            - to
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/ItemDiscount'
        productVariantId:
          type: number
        discountCardTypeId:
          type: number
        merchant:
          $ref: '#/components/schemas/Catalog_Merchant'
        displayPrice:
          type: boolean
      required:
        - id
        - productId
        - title
        - subtitle
        - description
        - shortDescription
        - images
        - price
        - formElements
        - person
        - validity
        - discounts
        - productVariantId
        - discountCardTypeId
        - merchant
        - displayPrice
    BookingStateOptionalCheckboxItem:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - checkbox
        value:
          type: boolean
        isAvailable:
          type: boolean
        unavailabilityReason:
          oneOf:
            - nullable: true
            - type: string
              enum:
                - OUT_OF_CAPACITY
            - type: string
              enum:
                - NO_VALIDITY
            - type: string
              enum:
                - NO_MATCHING_VALIDITY_FOUND
            - type: string
              enum:
                - MULTIPLE_SLOTS_FOUND_FOR_VALIDITY
            - type: string
              enum:
                - MISSED_AVAILABILITY_CHECK
          nullable: true
        product:
          $ref: '#/components/schemas/BookingStateBaseItem'
        displayPrice:
          type: boolean
        displayImage:
          type: boolean
      required:
        - id
        - type
        - value
        - isAvailable
        - unavailabilityReason
        - product
        - displayPrice
        - displayImage
    BookingStateOptionalRadioItem:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - radio
        title:
          type: string
        value:
          type: number
          nullable: true
        isAvailable:
          type: boolean
        unavailabilityReason:
          oneOf:
            - nullable: true
            - type: string
              enum:
                - OUT_OF_CAPACITY
            - type: string
              enum:
                - NO_VALIDITY
            - type: string
              enum:
                - NO_MATCHING_VALIDITY_FOUND
            - type: string
              enum:
                - MULTIPLE_SLOTS_FOUND_FOR_VALIDITY
            - type: string
              enum:
                - MISSED_AVAILABILITY_CHECK
          nullable: true
        labelNoSelection:
          type: string
        products:
          type: array
          items:
            $ref: '#/components/schemas/BookingStateBaseItem'
        displayPrice:
          type: boolean
      required:
        - id
        - type
        - title
        - value
        - isAvailable
        - unavailabilityReason
        - labelNoSelection
        - products
        - displayPrice
    ArbitraryTypedObject:
      type: object
      properties:
        _type:
          type: string
        _key:
          type: string
      required:
        - _type
    PortableTextSpan:
      type: object
      properties:
        _type:
          type: string
          enum:
            - span
        _key:
          type: string
        text:
          type: string
        marks:
          type: array
          items:
            type: string
      required:
        - _type
        - text
    PortableTextMarkDefinition:
      type: object
      properties:
        _type:
          type: string
        _key:
          type: string
      required:
        - _type
        - _key
    SupportedDiscountCardType:
      type: object
      properties:
        id:
          type: number
        label:
          type: string
        discountInformation:
          type: object
          properties:
            type:
              type: string
              enum:
                - ABSOLUTE
                - RELATIVE
                - FIXED_PRICE
            amount:
              type: number
          required:
            - type
            - amount
      required:
        - id
        - label
        - discountInformation
    PersonPickerRestrictionAge:
      type: object
      properties:
        kind:
          type: string
          enum:
            - age
        minAge:
          type: number
        maxAge:
          type: number
      required:
        - kind
    PersonPickerRestrictionBirthyear:
      type: object
      properties:
        kind:
          type: string
          enum:
            - birthyear
        minYear:
          type: number
        maxYear:
          type: number
      required:
        - kind
    BookingStateBaseItem:
      type: object
      properties:
        id:
          type: number
        productId:
          type: number
        title:
          type: string
        subtitle:
          type: string
          nullable: true
        description:
          type: array
          items:
            $ref: '#/components/schemas/RichText'
          nullable: true
        shortDescription:
          type: string
          nullable: true
        images:
          type: array
          items:
            $ref: '#/components/schemas/ExternalImage'
        price:
          $ref: '#/components/schemas/FinalPrice'
          nullable: true
        formElements:
          type: array
          items:
            oneOf:
              - $ref: '#/components/schemas/BookingStateItemFormElementDropdown'
              - $ref: '#/components/schemas/BookingStateItemFormElementRadio'
              - $ref: '#/components/schemas/BookingStateItemFormElementSlotPicker'
              - $ref: '#/components/schemas/BookingStateItemFormElementPersonPicker'
        person:
          $ref: '#/components/schemas/APIRestInterface_Person'
          nullable: true
        validity:
          type: object
          properties:
            from:
              type: string
            to:
              type: string
          required:
            - from
            - to
          nullable: true
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/ItemDiscount'
        productVariantId:
          type: number
        discountCardTypeId:
          type: number
          nullable: true
        merchant:
          $ref: '#/components/schemas/Catalog_Merchant'
      required:
        - id
        - productId
        - title
        - subtitle
        - description
        - shortDescription
        - images
        - price
        - formElements
        - person
        - validity
        - discounts
        - productVariantId
        - discountCardTypeId
        - merchant

````