---
info:
  version: 2026-1
  contact: {}
  description: API for managing carts, products, and items.
  title: Cart Service API
paths:
  "/2026-1/cart-items":
    get:
      description: Retrieves all items in a specified cart, including their details
        and configurations.
      operationId: GetCartItems
      parameters:
      - description: The filters to apply to the cart items.
        explode: true
        in: query
        name: filter
        required: true
        schema:
          oneOf:
          - "$ref": "#/components/schemas/GetCartItemsQueryFilterDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetCartItemsResponseDTO"
          description: A list of cart items with their details and configurations.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:read:all
      - oauth2:
        - cart:cart-items:read:authenticated
      summary: Get all cart items for a specific cart
      tags:
      - Cart Items
    post:
      description: Adds a new item to the specified cart, allowing the user to configure
        and check out a product.
      operationId: CreateCartItem
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CreateCartItemBodyDTO"
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CreateCartItemResponseDTO"
          description: The cart item has been successfully created.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart or product was not found.
        '409':
          description: The cart has reached its maximum number of items.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:create:one
      - oauth2:
        - cart:cart-items:create:authenticated
      summary: Create a new cart item
      tags:
      - Cart Items
  "/2026-1/cart-items/{cartItemId}":
    delete:
      description: Deletes a specific item in the cart, removing it from the cart.
      operationId: DeleteCartItem
      parameters:
      - description: The unique identifier of the cart item to delete.
        in: path
        name: cartItemId
        required: true
        schema:
          example: 8576a377-5a1b-4d04-8051-36cb996e9f6e
          format: uuid
          type: string
      responses:
        '204':
          description: The cart item has been successfully deleted.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart item was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:delete:one
      - oauth2:
        - cart:cart-items:delete:authenticated
      summary: Delete a cart item
      tags:
      - Cart Items
    get:
      description: Retrieves a specific item in a specified cart, including its details
        and configurations.
      operationId: GetCartItem
      parameters:
      - description: The unique identifier of the cart item to retrieve.
        in: path
        name: cartItemId
        required: true
        schema:
          example: 8576a377-5a1b-4d04-8051-36cb996e9f6e
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetCartItemResponseDTO"
          description: The cart item for the given identifier.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart item was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:read:all
      - oauth2:
        - cart:cart-items:read:one
      - oauth2:
        - cart:cart-items:read:authenticated
      summary: Get a cart item
      tags:
      - Cart Items
  "/2026-1/cart-items/{cartItemId}/cancel":
    post:
      description: Cancels a specific item in the cart, marking it as no longer needed.
      operationId: CancelCartItem
      parameters:
      - description: The unique identifier of the cart item to cancel.
        in: path
        name: cartItemId
        required: true
        schema:
          example: 8576a377-5a1b-4d04-8051-36cb996e9f6e
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CancelCartItemResponseDTO"
          description: The cart item has been successfully cancelled.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart item was not found.
        '409':
          description: The cart item has not been checked out yet, or its checkout
            is already completed.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:cancel:one
      - oauth2:
        - cart:cart-items:cancel:authenticated
      summary: Cancel a cart item
      tags:
      - Cart Items
  "/2026-1/cart-items/{cartItemId}/configure":
    post:
      description: Configure a specific item in the cart, submitting the user provided
        configuration value.
      operationId: ConfigureCartItem
      parameters:
      - description: The unique identifier of the cart item to configure.
        in: path
        name: cartItemId
        required: true
        schema:
          example: 8576a377-5a1b-4d04-8051-36cb996e9f6e
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/ConfigureCartItemBodyDTO"
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/ConfigureCartItemResponseDTO"
          description: The cart item has been successfully configured.
        '400':
          description: The request parameters are missing or invalid, or the provider
            rejected the configuration.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart item was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:configure:one
      - oauth2:
        - cart:cart-items:configure:authenticated
      summary: Configure a cart item
      tags:
      - Cart Items
  "/2026-1/cart-items/{cartItemId}/status":
    get:
      description: Poll the cart item status to either retrieve the current status
        or the new status when changed.
      operationId: PollCartItemStatus
      parameters:
      - description: The unique identifier of the cart item to poll.
        in: path
        name: cartItemId
        required: true
        schema:
          example: 599a7db8-21c8-487b-b1c4-f939995ac570
          format: uuid
          type: string
      - description: The last known cart item status.
        in: query
        name: status
        required: false
        schema:
          enum:
          - CONFIGURING
          - CONFIGURED
          - PROCESSING
          - COMPLETED
          - CANCELLED
          - FAILED
          example: CONFIGURING
          nullable: false
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetCartItemStatusResponseDTO"
          description: The status for the specified cart item.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart item was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:read:all
      - oauth2:
        - cart:cart-items:read:one
      - oauth2:
        - cart:cart-items:read:authenticated
      summary: Poll the cart item status
      tags:
      - Cart Items
  "/2026-1/cart-items/{cartItemId}/undo":
    post:
      description: Reverts the most recently submitted configuration step for a cart
        item, allowing the user to step back in the configuration wizard without restarting
        it.
      operationId: UndoCartItem
      parameters:
      - description: The unique identifier of the cart item to undo.
        in: path
        name: cartItemId
        required: true
        schema:
          example: 8576a377-5a1b-4d04-8051-36cb996e9f6e
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/UndoCartItemResponseDTO"
          description: The cart item has been reverted to its previous configuration
            step.
        '400':
          description: The cart item has no prior configuration step to revert to,
            or the cart is in a state that does not allow undoing.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart item was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-items:configure:one
      - oauth2:
        - cart:cart-items:configure:authenticated
      summary: Undo the last configuration step of a cart item
      tags:
      - Cart Items
  "/2026-1/cart-payment-methods":
    get:
      description: Retrieves all available payment methods for the specified cart,
        including details about each cart item.
      operationId: GetCartPaymentMethods
      parameters:
      - description: Filter for the cart payment methods.
        explode: true
        in: query
        name: filter
        required: true
        schema:
          oneOf:
          - "$ref": "#/components/schemas/GetCartPaymentMethodsQueryFilterDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetCartPaymentMethodsResponseDTO"
          description: Successfully retrieved payment methods for the cart.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-payment-methods:read:all
      - oauth2:
        - cart:cart-payment-methods:read:authenticated
      summary: Get all payment methods for a specific cart
      tags:
      - Cart Payment Methods
  "/2026-1/cart-products":
    get:
      description: Returns a list of all available products for the specified cart.
      operationId: GetCartProducts
      parameters:
      - description: Filter for the products for the specified cart.
        explode: true
        in: query
        name: filter
        required: true
        schema:
          oneOf:
          - "$ref": "#/components/schemas/GetCartProductsQueryFilterDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetCartProductsResponseDTO"
          description: The list of available products for the specified cart.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:cart-products:read:all
      - oauth2:
        - cart:cart-products:read:authenticated
      summary: Get all available products for a cart.
      tags:
      - Cart Products
  "/2026-1/carts":
    get:
      description: Returns a paginated list of carts.
      operationId: PaginateCarts
      parameters:
      - description: Filter for the carts.
        explode: true
        in: query
        name: filter
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/PaginateCartsQueryFilterDTO"
          - type: string
      - description: The pagination details for the list of carts.
        explode: true
        in: query
        name: page
        required: false
        schema:
          oneOf:
          - "$ref": "#/components/schemas/PaginateCartsQueryPageDTO"
          - type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/PaginateCartsResponseDTO"
          description: Successfully retrieved the list of carts.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:carts:read:all
      - oauth2:
        - cart:carts:read:authenticated
      summary: Returns a paginated list of carts.
      tags:
      - Carts
    post:
      description: Creates a new cart for a user and client.
      operationId: CreateCart
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CreateCartBodyDTO"
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CreateCartResponseDTO"
          description: Successfully created a new cart
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified POI was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:carts:create:one
      - oauth2:
        - cart:carts:create:authenticated
      summary: Create a new cart.
      tags:
      - Carts
  "/2026-1/carts/{cartId}":
    get:
      description: Retrieves a specific cart.
      operationId: GetCart
      parameters:
      - description: The unique identifier of the cart to retrieve.
        in: path
        name: cartId
        required: true
        schema:
          example: 16b99f34-6ad0-4f46-9e46-c6ffe6e4f135
          format: uuid
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/GetCartResponseDTO"
          description: The cart with the specified ID.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:carts:read:all
      - oauth2:
        - cart:carts:read:one
      - oauth2:
        - cart:carts:read:authenticated
      summary: Get a cart.
      tags:
      - Carts
  "/2026-1/carts/{cartId}/actions":
    post:
      description: Submits checkout actions for a cart. Render each INPUT action according
        to its `format` and validate the value against its `format`, `pattern`, `minimum`
        and `maximum` before submitting.
      operationId: SubmitCartCheckoutActions
      parameters:
      - description: The unique identifier of the cart to submit checkout actions
          for.
        in: path
        name: cartId
        required: true
        schema:
          example: 9239a6a6-de5b-4ccc-ba58-40ede174a5a0
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/SubmitCartCheckoutActionsBodyDTO"
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/SubmitCartCheckoutActionsResponseDTO"
          description: The checkout actions were successfully submitted for the cart.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart was not found.
        '409':
          description: The cart has no checkout awaiting actions.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:carts:checkout:one
      - oauth2:
        - cart:carts:checkout:authenticated
      summary: Submit checkout actions for a cart.
      tags:
      - Carts
  "/2026-1/carts/{cartId}/checkout":
    post:
      description: Checks out all items in the specific cart.
      operationId: CheckoutCart
      parameters:
      - description: The unique identifier of the cart to checkout.
        in: path
        name: cartId
        required: true
        schema:
          example: 9239a6a6-de5b-4ccc-ba58-40ede174a5a0
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/CheckoutCartBodyDTO"
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/CheckoutCartResponseDTO"
          description: The checkout process has either been completed or has failed.
        '400':
          description: The request parameters are missing or invalid, or the cart
            has no payment method set.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart was not found.
        '409':
          description: The cart already has a checkout in progress, has already completed
            a checkout, is being modified concurrently, or has reached its checkout
            attempt limit.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:carts:checkout:one
      - oauth2:
        - cart:carts:checkout:authenticated
      summary: Checkout a cart.
      tags:
      - Carts
  "/2026-1/carts/{cartId}/payment-method":
    post:
      description: Sets a payment method for a cart.
      operationId: SetPaymentMethod
      parameters:
      - description: The unique identifier of the cart to set the payment method for.
        in: path
        name: cartId
        required: true
        schema:
          example: 9239a6a6-de5b-4ccc-ba58-40ede174a5a0
          format: uuid
          type: string
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/SetPaymentMethodBodyDTO"
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                "$ref": "#/components/schemas/SetPaymentMethodResponseDTO"
          description: The payment method was successfully set for the cart.
        '400':
          description: The request parameters are missing or invalid.
        '401':
          description: Client authentication failed.
        '403':
          description: Missing one or more required scopes.
        '404':
          description: The specified cart was not found.
        '500':
          description: An unexpected error occurred.
      security:
      - oauth2:
        - cart:carts:update:one
      - oauth2:
        - cart:carts:update:authenticated
      summary: Set a payment method for a cart.
      tags:
      - Carts
components:
  schemas:
    CancelCartItemResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemDTO"
          description: The cart item that has been cancelled.
          nullable: false
          type: object
      required:
      - data
      type: object
    CartCheckoutActionInputDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or null if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: true
          type: string
        default:
          description: The default value of the action if no value is provided.
          example: '7495345'
          nullable: true
          type: string
        description:
          description: The description of the action that is required for the cart
            checkout.
          example: The car mileage is required to complete the cart checkout.
          nullable: true
          type: string
        format:
          description: The expected format of the input value.
          enum:
          - TEXT
          - DECIMAL
          - EMAIL
          example: TEXT
          nullable: false
          type: string
        label:
          description: The localized label of the action.
          example: Car Mileage
          nullable: false
          type: string
        maximum:
          description: The inclusive maximum value of the action when the format is
            DECIMAL. Ignored for other formats.
          example: '100.00'
          format: decimal
          nullable: true
          type: string
        minimum:
          description: The inclusive minimum value of the action when the format is
            DECIMAL. Ignored for other formats.
          example: '10.00'
          format: decimal
          nullable: true
          type: string
        name:
          description: The name of the action that is required for the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        optional:
          description: Whether the action is optional and does not need to be provided
            by the client.
          example: false
          nullable: false
          type: boolean
        pattern:
          description: The regular expression pattern that the action value must match.
            May be combined with any format.
          example: "^[0-9]+$"
          nullable: true
          type: string
        type:
          description: The discriminator type of the action.
          enum:
          - INPUT
          example: INPUT
          nullable: false
          type: string
      required:
      - name
      - cartItemId
      - label
      - description
      - optional
      - type
      - format
      - pattern
      - default
      - minimum
      - maximum
      type: object
    CartCheckoutActionMultiSelectDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or null if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: true
          type: string
        description:
          description: The description of the action that is required for the cart
            checkout.
          example: The car mileage is required to complete the cart checkout.
          nullable: true
          type: string
        label:
          description: The localized label of the action.
          example: Car Mileage
          nullable: false
          type: string
        name:
          description: The name of the action that is required for the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        optional:
          description: Whether the action is optional and does not need to be provided
            by the client.
          example: false
          nullable: false
          type: boolean
        options:
          description: The available options for the action.
          items:
            "$ref": "#/components/schemas/CartCheckoutActionSelectOptionDTO"
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The discriminator type of the action.
          enum:
          - MULTI_SELECT
          example: MULTI_SELECT
          nullable: false
          type: string
      required:
      - name
      - cartItemId
      - label
      - description
      - optional
      - type
      - options
      type: object
    CartCheckoutActionOneOfDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or null if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: true
          type: string
        description:
          description: The description of the action that is required for the cart
            checkout.
          example: The car mileage is required to complete the cart checkout.
          nullable: true
          type: string
        label:
          description: The localized label of the action.
          example: Car Mileage
          nullable: false
          type: string
        name:
          description: The name of the action that is required for the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        optional:
          description: Whether the action is optional and does not need to be provided
            by the client.
          example: false
          nullable: false
          type: boolean
        options:
          description: The alternatives the user can choose between. Exactly one of
            them must be answered.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/CartCheckoutActionInputDTO"
              MULTI_SELECT: "#/components/schemas/CartCheckoutActionMultiSelectDTO"
              SINGLE_SELECT: "#/components/schemas/CartCheckoutActionSingleSelectDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartCheckoutActionInputDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionSingleSelectDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionMultiSelectDTO"
          nullable: false
          type: array
          uniqueItems: true
        type:
          description: The type of the action.
          enum:
          - ONE_OF
          example: ONE_OF
          nullable: false
          type: string
      required:
      - name
      - cartItemId
      - label
      - description
      - optional
      - type
      - options
      type: object
    CartCheckoutActionSelectOptionDTO:
      properties:
        detail:
          description: The localized detail of the option.
          example: Optional additional detail
          nullable: true
          type: string
        disabled:
          description: Whether the option is disabled and cannot be selected.
          example: false
          nullable: false
          type: boolean
        icon:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartCheckoutActionSelectOptionIconDTO"
          description: The icon URLs for the option.
          nullable: true
          type: object
        text:
          description: The localized text of the option.
          example: Use your passport as driver ID.
          nullable: false
          type: string
        title:
          description: The localized title of the option.
          example: Passport
          nullable: true
          type: string
        value:
          description: The technical value of the option used for submission.
          example: passport
          nullable: false
          type: string
      required:
      - value
      - title
      - text
      - detail
      - disabled
      - icon
      type: object
    CartCheckoutActionSelectOptionIconDTO:
      properties:
        dark:
          description: The icon URL for the option in dark mode. Falls back to the
            default icon if not provided.
          example: https://example.com/icon-dark.png
          format: uri
          nullable: true
          type: string
        default:
          description: The default icon URL for the option.
          example: https://example.com/icon.png
          format: uri
          nullable: false
          type: string
      required:
      - default
      - dark
      type: object
    CartCheckoutActionSingleSelectDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or null if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: true
          type: string
        description:
          description: The description of the action that is required for the cart
            checkout.
          example: The car mileage is required to complete the cart checkout.
          nullable: true
          type: string
        label:
          description: The localized label of the action.
          example: Car Mileage
          nullable: false
          type: string
        name:
          description: The name of the action that is required for the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        optional:
          description: Whether the action is optional and does not need to be provided
            by the client.
          example: false
          nullable: false
          type: boolean
        options:
          description: The available options for the action.
          items:
            "$ref": "#/components/schemas/CartCheckoutActionSelectOptionDTO"
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The discriminator type of the action.
          enum:
          - SINGLE_SELECT
          example: SINGLE_SELECT
          nullable: false
          type: string
      required:
      - name
      - cartItemId
      - label
      - description
      - optional
      - type
      - options
      type: object
    CartCheckoutActionValueInputDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or omitted if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: false
          type: string
        name:
          description: The action to perform on the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        type:
          description: The discriminator type of the action.
          enum:
          - INPUT
          example: INPUT
          nullable: false
          type: string
        value:
          description: The value of the action to perform on the cart checkout.
          example: '74953'
          nullable: false
          type: string
      required:
      - name
      - type
      - value
      type: object
    CartCheckoutActionValueMultiSelectDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or omitted if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: false
          type: string
        name:
          description: The action to perform on the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        options:
          description: The selected options for the action.
          items:
            "$ref": "#/components/schemas/CartCheckoutActionValueSelectOptionDTO"
          minItems: 1
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The discriminator type of the action.
          enum:
          - MULTI_SELECT
          example: MULTI_SELECT
          nullable: false
          type: string
      required:
      - name
      - type
      - options
      type: object
    CartCheckoutActionValueOneOfDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or omitted if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: false
          type: string
        name:
          description: The action to perform on the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        option:
          description: The selected option for the action.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/CartCheckoutActionValueInputDTO"
              MULTI_SELECT: "#/components/schemas/CartCheckoutActionValueMultiSelectDTO"
              SINGLE_SELECT: "#/components/schemas/CartCheckoutActionValueSingleSelectDTO"
            propertyName: type
          nullable: false
          oneOf:
          - "$ref": "#/components/schemas/CartCheckoutActionValueInputDTO"
          - "$ref": "#/components/schemas/CartCheckoutActionValueSingleSelectDTO"
          - "$ref": "#/components/schemas/CartCheckoutActionValueMultiSelectDTO"
          type: object
        type:
          description: The discriminator type of the action.
          enum:
          - ONE_OF
          example: ONE_OF
          nullable: false
          type: string
      required:
      - name
      - type
      - option
      type: object
    CartCheckoutActionValueSelectOptionDTO:
      properties:
        value:
          description: The selected value of the option.
          example: passport
          nullable: false
          type: string
      required:
      - value
      type: object
    CartCheckoutActionValueSingleSelectDTO:
      properties:
        cartItemId:
          description: The unique identifier of the cart item this action is scoped
            to, or omitted if the action applies to the entire transaction.
          example: f47ac10b-58cc-4372-a567-0e02b2c3d479
          format: uuid
          nullable: false
          type: string
        name:
          description: The action to perform on the cart checkout.
          example: CAR_MILEAGE
          nullable: false
          type: string
        option:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartCheckoutActionValueSelectOptionDTO"
          description: The selected option for the action.
          nullable: false
          type: object
        type:
          description: The discriminator type of the action.
          enum:
          - SINGLE_SELECT
          example: SINGLE_SELECT
          nullable: false
          type: string
      required:
      - name
      - type
      - option
      type: object
    CartCheckoutDTO:
      properties:
        actions:
          description: The actions that are required to complete the checkout process.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/CartCheckoutActionInputDTO"
              MULTI_SELECT: "#/components/schemas/CartCheckoutActionMultiSelectDTO"
              ONE_OF: "#/components/schemas/CartCheckoutActionOneOfDTO"
              SINGLE_SELECT: "#/components/schemas/CartCheckoutActionSingleSelectDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartCheckoutActionInputDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionOneOfDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionSingleSelectDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionMultiSelectDTO"
          nullable: false
          type: array
          uniqueItems: false
        actionsUrl:
          description: The URL which the client may follow to complete the checkout
            process.
          example: https://example.com/checkout/actions
          format: uri
          nullable: true
          type: string
        cancelledAt:
          description: The timestamp when the cart checkout was cancelled.
          example: '2023-05-15T14:30:00.000Z'
          format: date-time
          nullable: true
          type: string
        completedAt:
          description: The timestamp when the cart checkout was completed.
          example: '2023-05-15T15:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        failedAt:
          description: The timestamp when the cart checkout failed.
          example: '2023-05-15T14:30:00.000Z'
          format: date-time
          nullable: true
          type: string
        failureCode:
          description: 'The failure code of the cart checkout. Free-form: new codes
            are introduced without a version change, so treat an unrecognized value
            as an unspecified failure.'
          example: INSUFFICIENT_FUNDS
          nullable: true
          type: string
        startedAt:
          description: The timestamp when the cart checkout was started.
          example: '2023-05-15T14:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        status:
          description: The status of the cart checkout.
          enum:
          - PROCESSING
          - ACTIONS_REQUIRED
          - COMPLETED
          - CANCELLED
          - FAILED
          example: PROCESSING
          nullable: false
          type: string
      required:
      - status
      - actionsUrl
      - actions
      - startedAt
      - completedAt
      - cancelledAt
      - failureCode
      - failedAt
      type: object
    CartDTO:
      properties:
        checkout:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartCheckoutDTO"
          description: The checkout associated with this cart.
          nullable: true
          type: object
        clientId:
          description: The unique identifier of the client through which this cart
            was created.
          example: pace-drive-app
          nullable: false
          type: string
        createdAt:
          description: The timestamp when the cart was created.
          example: '2023-05-15T14:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        expiresAt:
          description: The timestamp at which the cart lapses if nothing interacts
            with it before then. Every interaction with the cart pushes it further
            out, so read the current value rather than assuming a fixed window. It
            is null once the checkout has completed.
          example: '2023-05-16T14:30:00.000Z'
          format: date-time
          nullable: true
          type: string
        id:
          description: The unique identifier for the cart.
          example: ae1b58ef-ba5c-4240-b130-51fcf067d40d
          format: uuid
          nullable: false
          type: string
        paymentMethodId:
          description: The unique identifier of the selected payment method for this
            cart.
          example: ecbec75f-7ca4-4017-a485-6a4836de5d25
          format: uuid
          nullable: true
          type: string
        poiId:
          description: The unique identifier of the POI associated with this cart.
          example: 96a939ea-28d4-4228-b45c-192904ba91d7
          format: uuid
          nullable: false
          type: string
        status:
          description: The current status of the cart.
          enum:
          - OPEN
          - PROCESSING
          - ACTIONS_REQUIRED
          - COMPLETED
          - CANCELLED
          - FAILED
          example: OPEN
          nullable: false
          type: string
        updatedAt:
          description: The timestamp when the cart was last updated.
          example: '2023-05-15T14:15:00.000Z'
          format: date-time
          nullable: false
          type: string
        userId:
          description: The unique identifier of the user who owns this cart.
          example: e9166a60-1f92-4a5d-a192-c2f6b662e9d9
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - userId
      - poiId
      - clientId
      - paymentMethodId
      - status
      - checkout
      - expiresAt
      - createdAt
      - updatedAt
      type: object
    CartItemAuthorizationDTO:
      properties:
        amount:
          description: The amount to be authorized. Either provided by the user or
            the server.
          example: '120'
          format: decimal
          nullable: false
          type: string
        currency:
          description: The currency of the authorization.
          example: EUR
          nullable: false
          type: string
      required:
      - amount
      - currency
      type: object
    CartItemCheckoutDTO:
      properties:
        cancelledAt:
          description: The date and time when the checkout process was cancelled,
            if applicable.
          example: '2024-01-01T12:03:00Z'
          format: date-time
          nullable: true
          type: string
        completedAt:
          description: The date and time when the checkout process completed, if applicable.
          example: '2024-01-01T12:05:00Z'
          format: date-time
          nullable: true
          type: string
        failedAt:
          description: The date and time when the checkout process failed, if applicable.
          example: '2024-01-01T12:04:00Z'
          format: date-time
          nullable: true
          type: string
        failureCode:
          description: 'The failure code of the cart item checkout process, if any.
            Free-form: new codes are introduced without a version change, so treat
            an unrecognized value as an unspecified failure.'
          example: UNKNOWN
          nullable: true
          type: string
        startedAt:
          description: The date and time when the checkout process started.
          example: '2024-01-01T12:00:00Z'
          format: date-time
          nullable: false
          type: string
        status:
          description: The status of the cart item checkout process.
          enum:
          - PENDING
          - PROCESSING
          - COMPLETED
          - FAILED
          - CANCELLED
          example: COMPLETED
          nullable: false
          type: string
      required:
      - status
      - startedAt
      - completedAt
      - cancelledAt
      - failedAt
      - failureCode
      type: object
    CartItemConfigurationInputTypeDTO:
      properties:
        description:
          description: The description of the configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The name of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          description: The type of the configuration item.
          enum:
          - INPUT
          example: INPUT
          nullable: false
          type: string
        value:
          description: The value for this configuration.
          example: '100'
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - value
      type: object
    CartItemConfigurationLocationTypeDTO:
      properties:
        description:
          description: The description of the configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration item.
          example: Pump Number
          nullable: false
          type: string
        latitude:
          description: The latitude for the location.
          example: '37.7749'
          format: decimal
          nullable: false
          type: string
        longitude:
          description: The longitude for the location.
          example: "-122.4194"
          format: decimal
          nullable: false
          type: string
        name:
          description: The name of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          description: The type of the configuration item.
          enum:
          - LOCATION
          example: LOCATION
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - latitude
      - longitude
      type: object
    CartItemConfigurationMultiSelectTypeDTO:
      properties:
        description:
          description: The description of the configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The name of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        options:
          description: The selected option for this configuration.
          discriminator:
            mapping:
              PRICED: "#/components/schemas/CartItemConfigurationSelectOptionPricedDTO"
              SIMPLE: "#/components/schemas/CartItemConfigurationSelectOptionSimpleDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartItemConfigurationSelectOptionSimpleDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationSelectOptionPricedDTO"
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The type of the configuration item.
          enum:
          - MULTI_SELECT
          example: MULTI_SELECT
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - options
      type: object
    CartItemConfigurationPeriodPricingNoneDTO:
      properties:
        endedAt:
          description: The date and time when this period ended.
          example: '2026-09-24T18:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        pricing:
          description: How this period is priced.
          enum:
          - NONE
          example: NONE
          nullable: false
          type: string
        startedAt:
          description: The date and time when this period started.
          example: '2026-09-24T17:10:00.000Z'
          format: date-time
          nullable: false
          type: string
      required:
      - pricing
      - startedAt
      - endedAt
      type: object
    CartItemConfigurationPeriodPricingTotalDTO:
      properties:
        currency:
          description: The currency of this period's fee.
          example: EUR
          nullable: false
          type: string
        endedAt:
          description: The date and time when this period ended.
          example: '2026-09-24T18:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        priceExcludingVAT:
          description: The fee for this period excluding VAT.
          example: '9.92'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        priceIncludingVAT:
          description: The fee for this period including VAT.
          example: '11.80'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricing:
          description: How this period is priced.
          enum:
          - TOTAL
          example: TOTAL
          nullable: false
          type: string
        startedAt:
          description: The date and time when this period started.
          example: '2026-09-24T17:10:00.000Z'
          format: date-time
          nullable: false
          type: string
        vatAmount:
          description: The VAT amount of this period.
          example: '1.88'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatRate:
          description: The VAT rate of this period from 0 (0%) to 1 (100%).
          example: '0.19'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 1
          minimum: 0
          nullable: false
          type: string
      required:
      - pricing
      - startedAt
      - endedAt
      - currency
      - vatRate
      - priceExcludingVAT
      - priceIncludingVAT
      - vatAmount
      type: object
    CartItemConfigurationPeriodPricingUnitDTO:
      properties:
        currency:
          description: The currency of this period's fee.
          example: EUR
          nullable: false
          type: string
        endedAt:
          description: The date and time when this period ended.
          example: '2026-09-24T18:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        priceExcludingVAT:
          description: The fee for this period excluding VAT.
          example: '9.92'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        priceIncludingVAT:
          description: The fee for this period including VAT.
          example: '11.80'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of this period excluding VAT.
          example: '0.4958'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of this period including VAT.
          example: '0.5900'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricing:
          description: How this period is priced.
          enum:
          - UNIT
          example: UNIT
          nullable: false
          type: string
        quantity:
          description: The quantity delivered during this period.
          example: '20'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        startedAt:
          description: The date and time when this period started.
          example: '2026-09-24T17:10:00.000Z'
          format: date-time
          nullable: false
          type: string
        unit:
          anyOf:
          - enum:
            - ITEM
            - LITER
            - KILOGRAM
            - KWH
            type: string
          - type: string
          description: The unit of this period's quantity.
          example: KWH
          nullable: false
          type: string
        vatAmount:
          description: The VAT amount of this period.
          example: '1.88'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatRate:
          description: The VAT rate of this period from 0 (0%) to 1 (100%).
          example: '0.19'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 1
          minimum: 0
          nullable: false
          type: string
      required:
      - pricing
      - startedAt
      - endedAt
      - currency
      - vatRate
      - priceExcludingVAT
      - priceIncludingVAT
      - vatAmount
      - unit
      - quantity
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      type: object
    CartItemConfigurationPeriodsTypeDTO:
      properties:
        description:
          description: The description of the configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The name of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        periods:
          description: The chronological, non-overlapping periods. `ENERGY` allows
            `UNIT` periods, `PARKING` allows `NONE` and `TOTAL` periods.
          discriminator:
            mapping:
              NONE: "#/components/schemas/CartItemConfigurationPeriodPricingNoneDTO"
              TOTAL: "#/components/schemas/CartItemConfigurationPeriodPricingTotalDTO"
              UNIT: "#/components/schemas/CartItemConfigurationPeriodPricingUnitDTO"
            propertyName: pricing
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartItemConfigurationPeriodPricingNoneDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationPeriodPricingTotalDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationPeriodPricingUnitDTO"
          minItems: 1
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The type of the configuration item.
          enum:
          - PERIODS
          example: PERIODS
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - periods
      type: object
    CartItemConfigurationSelectOptionPricedDTO:
      properties:
        currency:
          description: The currency in which the configuration option is priced.
          example: EUR
          nullable: false
          type: string
        description:
          description: The description of the configuration option.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration option.
          example: '1'
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the configuration option excluding VAT.
          example: '1.529'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the configuration option including VAT.
          example: '1.819'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        type:
          description: The type of the configuration option.
          enum:
          - PRICED
          example: PRICED
          nullable: false
          type: string
        unit:
          anyOf:
          - enum:
            - ITEM
            - LITER
            - KILOGRAM
            - KWH
            type: string
          - type: string
          description: The unit of measurement for the configuration option.
          example: LITER
          nullable: false
          type: string
        value:
          description: The technical identifier for the configuration option.
          example: '081482d5-f3fd-4971-b6c6-dc49d0832df9'
          nullable: false
          type: string
        vatRate:
          description: The VAT rate applied to the configuration option.
          example: '0.19'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
      required:
      - label
      - value
      - description
      - type
      - currency
      - unit
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - vatRate
      type: object
    CartItemConfigurationSelectOptionSimpleDTO:
      properties:
        description:
          description: The description of the configuration option.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration option.
          example: '1'
          nullable: false
          type: string
        type:
          description: The type of the configuration option.
          enum:
          - SIMPLE
          example: SIMPLE
          nullable: false
          type: string
        value:
          description: The technical identifier for the configuration option.
          example: '081482d5-f3fd-4971-b6c6-dc49d0832df9'
          nullable: false
          type: string
      required:
      - label
      - value
      - description
      - type
      type: object
    CartItemConfigurationSingleSelectTypeDTO:
      properties:
        description:
          description: The description of the configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The name of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        option:
          description: The selected option for this configuration.
          discriminator:
            mapping:
              PRICED: "#/components/schemas/CartItemConfigurationSelectOptionPricedDTO"
              SIMPLE: "#/components/schemas/CartItemConfigurationSelectOptionSimpleDTO"
            propertyName: type
          nullable: false
          oneOf:
          - "$ref": "#/components/schemas/CartItemConfigurationSelectOptionSimpleDTO"
          - "$ref": "#/components/schemas/CartItemConfigurationSelectOptionPricedDTO"
          type: object
        type:
          description: The type of the configuration item.
          enum:
          - SINGLE_SELECT
          example: SINGLE_SELECT
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - option
      type: object
    CartItemDTO:
      properties:
        authorization:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemAuthorizationDTO"
          description: The authorization details for the cart item.
          nullable: true
          type: object
        cancelledAt:
          description: The date and time when the cart item processing was cancelled.
          example: '2025-03-15T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        cartId:
          description: The unique identifier for the cart to which this item belongs.
          example: 71597ea2-e7e7-4eb5-b5c5-01eec9c1d81b
          format: uuid
          nullable: false
          type: string
        checkout:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemCheckoutDTO"
          description: The checkout details for the cart item.
          nullable: true
          type: object
        completedAt:
          description: The date and time when the cart item has completed processing.
          example: '2025-03-15T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        configurations:
          description: The configurations applied to the cart item.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/CartItemConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/CartItemConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/CartItemConfigurationMultiSelectTypeDTO"
              PERIODS: "#/components/schemas/CartItemConfigurationPeriodsTypeDTO"
              SINGLE_SELECT: "#/components/schemas/CartItemConfigurationSingleSelectTypeDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartItemConfigurationInputTypeDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationSingleSelectTypeDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationMultiSelectTypeDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationLocationTypeDTO"
            - "$ref": "#/components/schemas/CartItemConfigurationPeriodsTypeDTO"
          nullable: false
          type: array
          uniqueItems: false
        configuredAt:
          description: The date and time when the cart item was configured.
          example: '2025-03-15T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        createdAt:
          description: The date and time when the cart item was created.
          example: '2025-03-15T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        failedAt:
          description: The date and time when the cart item failed processing.
          example: '2025-03-15T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        id:
          description: The unique identifier for the cart item.
          example: c7b3d2af-4046-4711-8fbf-36ce1b5f31d3
          format: uuid
          nullable: false
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata associated with the cart item. This may vary
            depending on the product and provider.
          nullable: false
          type: object
        next:
          description: The next configuration that needs to be applied to the cart
            item.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/CartItemNextConfigurationInputTypeDTO"
              LOCATION: "#/components/schemas/CartItemNextConfigurationLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/CartItemNextConfigurationMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/CartItemNextConfigurationSingleSelectTypeDTO"
              USER_ACTION: "#/components/schemas/CartItemNextConfigurationUserActionTypeDTO"
            propertyName: type
          nullable: true
          oneOf:
          - "$ref": "#/components/schemas/CartItemNextConfigurationInputTypeDTO"
          - "$ref": "#/components/schemas/CartItemNextConfigurationSingleSelectTypeDTO"
          - "$ref": "#/components/schemas/CartItemNextConfigurationMultiSelectTypeDTO"
          - "$ref": "#/components/schemas/CartItemNextConfigurationLocationTypeDTO"
          - "$ref": "#/components/schemas/CartItemNextConfigurationUserActionTypeDTO"
          type: object
        product:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartProductDTO"
          description: The product details associated with the cart item.
          nullable: false
          type: object
        status:
          description: The current status of the cart item.
          enum:
          - CONFIGURING
          - CONFIGURED
          - PROCESSING
          - COMPLETED
          - CANCELLED
          - FAILED
          example: CONFIGURING
          nullable: false
          type: string
        summary:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemSummaryDTO"
          description: The summary details for the cart item.
          nullable: true
          type: object
        updatedAt:
          description: The date and time when the cart item was last updated.
          example: '2025-03-16T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
      required:
      - id
      - cartId
      - status
      - product
      - authorization
      - checkout
      - summary
      - configurations
      - next
      - configuredAt
      - completedAt
      - cancelledAt
      - failedAt
      - createdAt
      - updatedAt
      type: object
    CartItemNextConfigurationInputTypeDTO:
      properties:
        description:
          description: The description of the next configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the next configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the next configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        pattern:
          description: An optional regular expression pattern that the input must
            match.
          nullable: true
          type: string
        type:
          description: The type of the next configuration item.
          enum:
          - INPUT
          example: INPUT
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - pattern
      type: object
    CartItemNextConfigurationLocationTypeDTO:
      properties:
        description:
          description: The description of the next configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the next configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the next configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          description: The type of the next configuration item.
          enum:
          - LOCATION
          example: LOCATION
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      type: object
    CartItemNextConfigurationMultiSelectTypeDTO:
      properties:
        description:
          description: The description of the next configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the next configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the next configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        options:
          description: The available options for the next configuration item.
          discriminator:
            mapping:
              PRICED: "#/components/schemas/CartItemNextConfigurationSelectOptionPricedDTO"
              SIMPLE: "#/components/schemas/CartItemNextConfigurationSelectOptionSimpleDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartItemNextConfigurationSelectOptionSimpleDTO"
            - "$ref": "#/components/schemas/CartItemNextConfigurationSelectOptionPricedDTO"
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The type of the next configuration item.
          enum:
          - MULTI_SELECT
          example: MULTI_SELECT
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - options
      type: object
    CartItemNextConfigurationSelectOptionPricedDTO:
      properties:
        currency:
          description: The currency in which the configuration option is priced.
          example: EUR
          nullable: false
          type: string
        description:
          description: The description of the configuration option.
          nullable: true
          type: string
        disabled:
          description: Indicates whether the configuration option is disabled for
            selection.
          example: false
          nullable: false
          type: boolean
        label:
          description: The localized label for the configuration option.
          example: '1'
          nullable: false
          type: string
        metadata:
          additionalProperties: true
          description: The metadata for the configuration select option. This may
            vary depending on the product and provider.
          nullable: true
          type: object
        pricePerUnitExcludingVAT:
          description: The price per unit of the configuration option excluding VAT.
          example: '1.529'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the configuration option including VAT.
          example: '1.819'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        type:
          description: The type of the configuration option.
          enum:
          - PRICED
          example: PRICED
          nullable: false
          type: string
        unit:
          anyOf:
          - enum:
            - ITEM
            - LITER
            - KILOGRAM
            - KWH
            type: string
          - type: string
          description: The unit of measurement for the configuration option.
          example: LITER
          nullable: false
          type: string
        value:
          description: The technical identifier for the configuration option.
          example: '081482d5-f3fd-4971-b6c6-dc49d0832df9'
          nullable: false
          type: string
        vatRate:
          description: The VAT rate applied to the configuration option.
          example: '0.19'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
      required:
      - label
      - value
      - description
      - type
      - currency
      - unit
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - vatRate
      - disabled
      - metadata
      type: object
    CartItemNextConfigurationSelectOptionSimpleDTO:
      properties:
        description:
          description: The description of the configuration option.
          nullable: true
          type: string
        disabled:
          description: Indicates whether the configuration option is disabled for
            selection.
          example: false
          nullable: false
          type: boolean
        label:
          description: The localized label for the configuration option.
          example: '1'
          nullable: false
          type: string
        metadata:
          additionalProperties: true
          description: The metadata for the configuration select option. This may
            vary depending on the product and provider.
          nullable: true
          type: object
        type:
          description: The type of the configuration option.
          enum:
          - SIMPLE
          example: SIMPLE
          nullable: false
          type: string
        value:
          description: The technical identifier for the configuration option.
          example: '081482d5-f3fd-4971-b6c6-dc49d0832df9'
          nullable: false
          type: string
      required:
      - label
      - value
      - description
      - type
      - disabled
      - metadata
      type: object
    CartItemNextConfigurationSingleSelectTypeDTO:
      properties:
        description:
          description: The description of the next configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the next configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the next configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        options:
          description: The available options for the next configuration item.
          discriminator:
            mapping:
              PRICED: "#/components/schemas/CartItemNextConfigurationSelectOptionPricedDTO"
              SIMPLE: "#/components/schemas/CartItemNextConfigurationSelectOptionSimpleDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartItemNextConfigurationSelectOptionSimpleDTO"
            - "$ref": "#/components/schemas/CartItemNextConfigurationSelectOptionPricedDTO"
          nullable: false
          type: array
          uniqueItems: false
        type:
          description: The type of the next configuration item.
          enum:
          - SINGLE_SELECT
          example: SINGLE_SELECT
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      - options
      type: object
    CartItemNextConfigurationUserActionTypeDTO:
      properties:
        description:
          description: The description of the next configuration item.
          nullable: true
          type: string
        label:
          description: The localized label for the next configuration item.
          example: Pump Number
          nullable: false
          type: string
        name:
          description: The unique identifier of the next configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          description: The type of the next configuration item.
          enum:
          - USER_ACTION
          example: USER_ACTION
          nullable: false
          type: string
      required:
      - name
      - label
      - description
      - type
      type: object
    CartItemStatusDTO:
      properties:
        id:
          description: The unique identifier for the cart item.
          example: c7b3d2af-4046-4711-8fbf-36ce1b5f31d3
          format: uuid
          nullable: false
          type: string
        status:
          description: The current status of the cart item.
          enum:
          - CONFIGURING
          - CONFIGURED
          - PROCESSING
          - COMPLETED
          - CANCELLED
          - FAILED
          example: CONFIGURED
          nullable: false
          type: string
      required:
      - id
      - status
      type: object
    CartItemSummaryDTO:
      properties:
        currency:
          description: The currency of the checkout.
          example: EUR
          nullable: false
          type: string
        priceExcludingVAT:
          description: The total price of the cart item, excluding VAT.
          example: '61.26'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        priceIncludingVAT:
          description: The total price of the cart item, including VAT.
          example: '72.90'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitExcludingVAT:
          description: The price per unit of the cart item, Excluding VAT.
          example: '1.419'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        pricePerUnitIncludingVAT:
          description: The price per unit of the cart item, including VAT.
          example: '1.689'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        quantity:
          description: The consumed quantity of the cart item.
          example: '43.17'
          format: decimal
          nullable: false
          type: string
        unit:
          anyOf:
          - enum:
            - ITEM
            - LITER
            - KILOGRAM
            - KWH
            type: string
          - type: string
          description: The unit of measurement for the cart item quantity.
          example: LITER
          nullable: false
          type: string
        vatAmount:
          description: The total amount of VAT applied to the cart item.
          example: '8.23'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
        vatRate:
          description: The vat rate applied to the cart item.
          example: '0.19'
          exclusiveMinimum: false
          format: decimal
          minimum: 0
          nullable: false
          type: string
      required:
      - currency
      - quantity
      - unit
      - pricePerUnitExcludingVAT
      - pricePerUnitIncludingVAT
      - priceExcludingVAT
      - priceIncludingVAT
      - vatRate
      - vatAmount
      type: object
    CartPaymentMethodDTO:
      properties:
        createdAt:
          description: The date and time when the user payment method was created.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        expiresAt:
          description: The date and time when the user payment method will expire.
          example: '2025-12-31T23:59:59.999Z'
          format: date-time
          nullable: true
          type: string
        icons:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartPaymentMethodIconsDTO"
          description: The icons associated with the user payment method.
          nullable: false
          type: object
        id:
          description: The unique identifier of the user payment method.
          example: 86192f0f-9359-415d-b465-3cfadf0130a3
          format: uuid
          nullable: false
          type: string
        implicit:
          description: Determines whether the user payment method has been onboarded.
          example: true
          nullable: false
          type: boolean
        items:
          description: The payment method item info for each cart item.
          items:
            "$ref": "#/components/schemas/CartPaymentMethodItemDTO"
          nullable: false
          type: array
          uniqueItems: false
        kind:
          description: The payment method kind of the user payment method.
          example: FUEL_CARD_PROVIDER
          nullable: false
          type: string
        label:
          description: The localized label of the payment method kind.
          example: Fuel Card Provider
          nullable: false
          type: string
        lastUsedAt:
          description: The date and time when the user payment method was last used.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: true
          type: string
        metadata:
          additionalProperties: true
          description: Optional metadata associated with the user payment method.
          nullable: true
          type: object
        name:
          description: The name of the user payment method.
          example: "(MASTERCARD) ... 0640"
          nullable: false
          type: string
        onboardingId:
          description: The unique identifier of the onboarding through which the user
            payment method was created or null if the payment method was not created
            through an onboarding process.
          example: a0a99fe0-11b0-47d1-9b07-e7e83e6b0b1d
          format: uuid
          nullable: true
          type: string
        shareCount:
          description: The number of times this user payment method is currently shared
            with other users.
          example: 12
          exclusiveMinimum: false
          minimum: 0
          nullable: false
          type: integer
        shared:
          description: Determines whether the user payment method is shared by another
            user.
          example: false
          nullable: false
          type: boolean
        updatedAt:
          description: The date and time when the user payment method was last updated.
          example: '2023-10-01T12:00:00.000Z'
          format: date-time
          nullable: false
          type: string
        usable:
          description: Determines whether the user payment method can be used to checkout
            the cart.
          example: true
          nullable: false
          type: boolean
        userId:
          description: The unique identifier of the user who owns the user payment
            method.
          example: 76a65fa5-c6ea-4b71-82d9-9689a00b4b8b
          format: uuid
          nullable: false
          type: string
      required:
      - id
      - userId
      - onboardingId
      - kind
      - label
      - name
      - implicit
      - shared
      - shareCount
      - metadata
      - icons
      - usable
      - items
      - expiresAt
      - lastUsedAt
      - createdAt
      - updatedAt
      type: object
    CartPaymentMethodIconsDTO:
      properties:
        dark:
          description: The URL to the dark theme icon for the payment method.
          example: https://example.com/icons/dark.png
          format: uri
          nullable: true
          type: string
        default:
          description: The URL to the default icon for the payment method.
          example: https://example.com/icons/light.png
          format: uri
          nullable: false
          type: string
      required:
      - default
      - dark
      type: object
    CartPaymentMethodItemDTO:
      properties:
        id:
          description: The unique identifier of the cart item.
          example: 0c81b3e0-0495-45ce-8df7-6f764c0ef3c5
          format: uuid
          nullable: false
          type: string
        purchaseable:
          description: Determines if the payment method can be used to purchase this
            cart item.
          example: true
          nullable: false
          type: boolean
      required:
      - id
      - purchaseable
      type: object
    CartProductDTO:
      properties:
        id:
          description: The unique identifier for the cart product.
          example: 88dd01e3-c300-44af-83e6-86b362c8fa39
          format: uuid
          nullable: false
          type: string
        label:
          description: A human-readable label for the cart product.
          example: Fueling
          nullable: false
          type: string
        type:
          anyOf:
          - enum:
            - FUELING
            - WASHING
            - CHARGING
            type: string
          - type: string
          description: The type of the cart product.
          example: FUELING
          nullable: false
          type: string
      required:
      - id
      - type
      - label
      type: object
    CheckoutCartBodyDTO:
      properties:
        actionsCancelRedirectUrl:
          description: The URL to redirect the client after cancelling authorization
            actions.
          example: https://example.com/actions/cancel
          format: uri
          nullable: false
          type: string
        actionsFailureRedirectUrl:
          description: The URL to redirect the client after failing to submit authorization
            actions.
          example: https://example.com/actions/failure
          format: uri
          nullable: false
          type: string
        actionsSuccessRedirectUrl:
          description: The URL to redirect the client after successfully submitting
            authorization actions.
          example: https://example.com/actions/success
          format: uri
          nullable: false
          type: string
        metadata:
          additionalProperties: true
          description: The metadata to pass to the payment service during payment
            authorization.
          nullable: false
          type: object
      type: object
    CheckoutCartResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartDTO"
          description: The cart that has been checked out.
          nullable: false
          type: object
      required:
      - data
      type: object
    ConfigureCartItemBodyDTO:
      properties:
        configuration:
          description: The configuration to apply, discriminated by its type.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/ConfigureCartItemBodyInputTypeDTO"
              LOCATION: "#/components/schemas/ConfigureCartItemBodyLocationTypeDTO"
              MULTI_SELECT: "#/components/schemas/ConfigureCartItemBodyMultiSelectTypeDTO"
              SINGLE_SELECT: "#/components/schemas/ConfigureCartItemBodySingleSelectTypeDTO"
            propertyName: type
          nullable: false
          oneOf:
          - "$ref": "#/components/schemas/ConfigureCartItemBodyInputTypeDTO"
          - "$ref": "#/components/schemas/ConfigureCartItemBodySingleSelectTypeDTO"
          - "$ref": "#/components/schemas/ConfigureCartItemBodyMultiSelectTypeDTO"
          - "$ref": "#/components/schemas/ConfigureCartItemBodyLocationTypeDTO"
          type: object
      required:
      - configuration
      type: object
    ConfigureCartItemBodyInputTypeDTO:
      properties:
        name:
          description: The unique identifier of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          description: The discriminator for the input type configuration.
          enum:
          - INPUT
          example: INPUT
          nullable: false
          type: string
        value:
          description: The input value from the user for this configuration.
          example: '100'
          nullable: false
          type: string
      required:
      - name
      - type
      - value
      type: object
    ConfigureCartItemBodyLocationTypeDTO:
      properties:
        latitude:
          description: The user provided latitude for the location.
          example: '37.7749'
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 90
          minimum: -90
          nullable: false
          type: string
        longitude:
          description: The user provided longitude for the location.
          example: "-122.4194"
          exclusiveMaximum: false
          exclusiveMinimum: false
          format: decimal
          maximum: 180
          minimum: -180
          nullable: false
          type: string
        name:
          description: The unique identifier of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        type:
          description: The discriminator for the location type configuration.
          enum:
          - LOCATION
          example: LOCATION
          nullable: false
          type: string
      required:
      - name
      - type
      - latitude
      - longitude
      type: object
    ConfigureCartItemBodyMultiSelectTypeDTO:
      properties:
        name:
          description: The unique identifier of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        options:
          description: The selected configuration options.
          items:
            "$ref": "#/components/schemas/ConfigureCartItemBodySelectOptionDTO"
          minItems: 1
          nullable: false
          type: array
          uniqueItems: true
        type:
          description: The discriminator for the multi select type configuration.
          enum:
          - MULTI_SELECT
          example: MULTI_SELECT
          nullable: false
          type: string
      required:
      - name
      - type
      - options
      type: object
    ConfigureCartItemBodySelectOptionDTO:
      properties:
        value:
          description: The value of the selected configuration option.
          example: cb4c8180-2a0b-4a57-a2ba-a996792e5095
          nullable: false
          type: string
      required:
      - value
      type: object
    ConfigureCartItemBodySingleSelectTypeDTO:
      properties:
        name:
          description: The unique identifier of the configuration item.
          example: PUMP_NUMBER
          nullable: false
          type: string
        option:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/ConfigureCartItemBodySelectOptionDTO"
          description: The selected configuration option.
          nullable: false
          type: object
        type:
          description: The discriminator for the single select type configuration.
          enum:
          - SINGLE_SELECT
          example: SINGLE_SELECT
          nullable: false
          type: string
      required:
      - name
      - type
      - option
      type: object
    ConfigureCartItemResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemDTO"
          description: The cart item that has been configured.
          nullable: false
          type: object
      required:
      - data
      type: object
    CreateCartBodyDTO:
      properties:
        clientId:
          description: The client for which the cart should be created.
          example: pace-drive-app
          nullable: false
          type: string
        poiId:
          description: The poi for which the cart should be created.
          example: 7bf0687b-221d-49a2-a04a-4ec5614aff20
          format: uuid
          nullable: false
          type: string
        userId:
          description: The user for which the cart should be created.
          example: 8fc3698e-84ed-4fb9-8898-0992d5fa703b
          format: uuid
          nullable: false
          type: string
      required:
      - poiId
      type: object
    CreateCartItemBodyDTO:
      properties:
        cartId:
          description: The unique identifier of the cart to add the item to.
          example: 3682ea8c-4ca4-45d2-bc1e-e6e4dc597ffb
          format: uuid
          nullable: false
          type: string
        productId:
          description: The unique identifier of the product to be added to the cart.
          example: 439436d5-3079-47b5-8803-f781c61dbad8
          format: uuid
          nullable: false
          type: string
      required:
      - cartId
      - productId
      type: object
    CreateCartItemResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemDTO"
          description: The cart item that has been created.
          nullable: false
          type: object
      required:
      - data
      type: object
    CreateCartResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartDTO"
          description: The cart that has been created.
          nullable: false
          type: object
      required:
      - data
      type: object
    GetCartItemResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemDTO"
          description: The cart item with for the specified cart.
          nullable: false
          type: object
      required:
      - data
      type: object
    GetCartItemStatusResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemStatusDTO"
          description: The last known or changed cart item status.
          nullable: false
          type: object
      required:
      - data
      type: object
    GetCartItemsQueryFilterCartIdDTO:
      properties:
        eq:
          description: Only return cart items of this cart.
          example: 25b85035-d83f-44fa-bde9-9a7d5dab990c
          format: uuid
          nullable: false
          type: string
      required:
      - eq
      type: object
    GetCartItemsQueryFilterDTO:
      properties:
        cartId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetCartItemsQueryFilterCartIdDTO"
          description: Filters the cart items by their cart.
          nullable: false
          type: object
      required:
      - cartId
      type: object
    GetCartItemsResponseDTO:
      properties:
        data:
          description: The list of all cart items for a specific cart.
          items:
            "$ref": "#/components/schemas/CartItemDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    GetCartPaymentMethodsQueryFilterCartIdDTO:
      properties:
        eq:
          description: Filter for the cart payment methods by a specific cart ID.
          example: 2ea2c446-0cef-4dc2-bf87-65c3b4ecb702
          format: uuid
          nullable: false
          type: string
      required:
      - eq
      type: object
    GetCartPaymentMethodsQueryFilterDTO:
      properties:
        cartId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetCartPaymentMethodsQueryFilterCartIdDTO"
          description: Filter for the cart payment methods by cart ID.
          nullable: false
          type: object
      required:
      - cartId
      type: object
    GetCartPaymentMethodsResponseDTO:
      properties:
        data:
          description: The user payment methods based on a cart, including details
            for each cart item.
          items:
            "$ref": "#/components/schemas/CartPaymentMethodDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    GetCartProductsQueryFilterCartIdDTO:
      properties:
        eq:
          description: The unique identifier of the cart to return the available products
            for.
          example: c450f432-d078-475e-a1b4-a6e3aec21dcb
          format: uuid
          nullable: false
          type: string
      required:
      - eq
      type: object
    GetCartProductsQueryFilterDTO:
      properties:
        cartId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetCartProductsQueryFilterCartIdDTO"
          description: Filter for the cart ID.
          nullable: false
          type: object
        type:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/GetCartProductsQueryFilterTypeDTO"
          description: Filter for the type of products in the cart.
          nullable: false
          type: object
      required:
      - cartId
      - type
      type: object
    GetCartProductsQueryFilterTypeDTO:
      properties:
        in:
          description: Only return products of these types.
          example:
          - FUELING
          - WASHING
          items:
            type: string
          nullable: false
          type: array
          uniqueItems: true
      required:
      - in
      type: object
    GetCartProductsResponseDTO:
      properties:
        data:
          description: The list of available products for the specified cart.
          items:
            "$ref": "#/components/schemas/CartProductDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    GetCartResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartDTO"
          description: The cart with the specified ID.
          nullable: false
          type: object
      required:
      - data
      type: object
    PaginateCartsQueryFilterClientIdDTO:
      properties:
        eq:
          description: Only return carts created through this client.
          example: pace-drive-app
          nullable: false
          type: string
      type: object
    PaginateCartsQueryFilterDTO:
      properties:
        clientId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginateCartsQueryFilterClientIdDTO"
          description: Filter for the client ID.
          nullable: false
          type: object
        poiId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginateCartsQueryFilterPoiIdDTO"
          description: Filter for the POI ID.
          nullable: false
          type: object
        status:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginateCartsQueryFilterStatusDTO"
          description: Filter for the status.
          nullable: false
          type: object
        userId:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/PaginateCartsQueryFilterUserIdDTO"
          description: Filter for the user ID.
          nullable: false
          type: object
      type: object
    PaginateCartsQueryFilterPoiIdDTO:
      properties:
        eq:
          description: Only return carts at this POI.
          example: f31d0350-6b99-40ee-b7cc-4cdc7a79a905
          format: uuid
          nullable: false
          type: string
      type: object
    PaginateCartsQueryFilterStatusDTO:
      properties:
        eq:
          description: Only return carts with this status.
          enum:
          - OPEN
          - PROCESSING
          - ACTIONS_REQUIRED
          - COMPLETED
          - CANCELLED
          - FAILED
          example: OPEN
          nullable: false
          type: string
        in:
          description: Only return carts with one of these statuses.
          example:
          - COMPLETED
          - CANCELLED
          items:
            enum:
            - OPEN
            - PROCESSING
            - ACTIONS_REQUIRED
            - COMPLETED
            - CANCELLED
            - FAILED
            type: string
          nullable: false
          type: array
          uniqueItems: true
      type: object
    PaginateCartsQueryFilterUserIdDTO:
      properties:
        eq:
          description: Only return carts of this user.
          example: 877e8dc9-2838-4f6f-a4a6-76b4c4cf0f2c
          format: uuid
          nullable: false
          type: string
      type: object
    PaginateCartsQueryPageDTO:
      properties:
        number:
          default: 0
          description: The page number to return.
          example: 0
          minimum: 0
          type: integer
        size:
          default: 10
          description: Number of items to return per page.
          example: 10
          minimum: 1
          type: integer
      type: object
    PaginateCartsResponseDTO:
      properties:
        data:
          description: The list of carts for the current page.
          items:
            "$ref": "#/components/schemas/CartDTO"
          nullable: false
          type: array
          uniqueItems: false
      required:
      - data
      type: object
    SetPaymentMethodBodyDTO:
      properties:
        paymentMethodId:
          description: The unique identifier of the payment method to set for the
            cart.
          example: f90731f2-3628-4194-a628-6a36b7058405
          format: uuid
          nullable: false
          type: string
      required:
      - paymentMethodId
      type: object
    SetPaymentMethodResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartDTO"
          description: The cart that has been updated.
          nullable: false
          type: object
      required:
      - data
      type: object
    SubmitCartCheckoutActionsBodyDTO:
      properties:
        actions:
          description: The actions to submit for the cart checkout.
          discriminator:
            mapping:
              INPUT: "#/components/schemas/CartCheckoutActionValueInputDTO"
              MULTI_SELECT: "#/components/schemas/CartCheckoutActionValueMultiSelectDTO"
              ONE_OF: "#/components/schemas/CartCheckoutActionValueOneOfDTO"
              SINGLE_SELECT: "#/components/schemas/CartCheckoutActionValueSingleSelectDTO"
            propertyName: type
          items:
            oneOf:
            - "$ref": "#/components/schemas/CartCheckoutActionValueInputDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionValueOneOfDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionValueSingleSelectDTO"
            - "$ref": "#/components/schemas/CartCheckoutActionValueMultiSelectDTO"
          nullable: false
          type: array
          uniqueItems: true
      required:
      - actions
      type: object
    SubmitCartCheckoutActionsResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartDTO"
          description: The cart with the submitted actions.
          nullable: false
          type: object
      required:
      - data
      type: object
    UndoCartItemResponseDTO:
      properties:
        data:
          additionalProperties: false
          allOf:
          - "$ref": "#/components/schemas/CartItemDTO"
          description: The cart item whose last configuration step has been reverted.
          nullable: false
          type: object
      required:
      - data
      type: object
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          scopes:
            cart:cart-items:cancel:authenticated: Allows cancelling cart items for
              the authenticated user.
            cart:cart-items:cancel:one: Allows cancelling a cart item.
            cart:cart-items:configure:authenticated: Allows configuring a cart item
              for the authenticated user.
            cart:cart-items:configure:one: Allows configuring a cart item.
            cart:cart-items:create:authenticated: Allows creating a cart item for
              the authenticated user.
            cart:cart-items:create:one: Allows creating a cart item.
            cart:cart-items:delete:authenticated: Allows deleting cart items for the
              authenticated user.
            cart:cart-items:delete:one: Allows deleting a cart item.
            cart:cart-items:read:all: Allows reading all cart items.
            cart:cart-items:read:authenticated: Allows reading cart items for the
              authenticated user.
            cart:cart-items:read:one: Allows reading a cart item.
            cart:cart-payment-methods:read:all: Allows reading all cart payment methods.
            cart:cart-payment-methods:read:authenticated: Allows reading cart payment
              methods for the authenticated user.
            cart:cart-products:read:all: Allows reading all available cart products.
            cart:cart-products:read:authenticated: Allows reading available cart products
              for the authenticated user.
            cart:carts:checkout:authenticated: Allows checking out a cart for the
              authenticated user.
            cart:carts:checkout:one: Allows checking out a cart.
            cart:carts:create:authenticated: Allows creating a cart for the authenticated
              user.
            cart:carts:create:one: Allows creating a cart.
            cart:carts:read:all: Allows reading all carts.
            cart:carts:read:authenticated: Allows reading carts for the authenticated
              user.
            cart:carts:read:one: Allows reading a cart.
            cart:carts:update:authenticated: Allows updating a cart for the authenticated
              user.
            cart:carts:update:one: Allows updating a cart.
          authorizationUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/auth
          refreshUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
          tokenUrl: https://id.pace.cloud/auth/realms/pace/protocol/openid-connect/token
tags:
- name: Carts
  description: Endpoints for creating, reading, and managing carts.
- name: Cart Products
  description: Endpoints for checking available products for a specific cart.
- name: Cart Items
  description: Endpoints for creating, configuring, and managing items within a specific
    cart.
- name: Cart Payment Methods
  description: Endpoints for retrieving user payment methods for a specific cart.
openapi: 3.0.0
servers:
- description: PACE Cloud API
  url: https://api.pace.cloud/cart
