openapi: 3.0.4
info:
  title: Norce Checkout - Klarna Checkout Adapter API
  description: >-
    Build 2026-01-12 09:48:20


    The Klarna Checkout Adapter API is used to create and manage a Klarna
    Checkout Order.
  version: 0.2.2
servers:
  - url: https://checkout-klarna-adapter.test.norce.tech
    description: Test server
paths:
  /api/checkout/v1/orders/{order_id}/payments:
    post:
      tags:
        - Klarna Checkout
      summary: Create a new Klarna Checkout Order
      description: Requires an existing Norce order.
      operationId: CreateKlarnaCheckoutOrderPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutOrder'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer: []
  /api/checkout/v1/orders/{order_id}/payments/recurring:
    post:
      tags:
        - Klarna Checkout
      summary: >-
        Create a new Klarna Checkout order using a recurring token from a
        previous Klarna Checkout purchase.
      description: Requires an existing Norce order and Klarna Checkout recurring token
      operationId: CreateKlarnaCheckoutRecurringOrderPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Recurring token that should be used for completing the order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/RecurringTokenModel'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutRecurringOrder'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer: []
  /api/checkout/v1/orders/{order_id}/payments/{payment_id}/remove:
    post:
      tags:
        - Klarna Checkout
      summary: Remove a Klarna Checkout Order
      description: >-
        Requires an existing Norce order. Will do soft delete on any payments or
        shippings by setting state to removed. Will delete any hooks added when
        creating a klarna checkout order.
      operationId: RemoveKlarnaCheckoutOrder
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/checkout/v1/orders/{order_id}/payments/{payment_id}:
    get:
      tags:
        - Klarna Checkout
      summary: Get Klarna Checkout Order
      description: >-
        Used to get the html snippet, for example after the Klarna Checkout
        Order has been confirmed.
      operationId: GetKlarnaCheckoutOrderPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutOrder'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
    put:
      tags:
        - Klarna Checkout
      summary: Update Klarna Checkout Order
      description: >-
        Used to remap and update the Klarna Checkout Order from the Norce order,
        requires existing payment with Klarna Checkout Order.
      operationId: UpdateKlarnaCheckoutOrderPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutOrder'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/push:
    post:
      tags:
        - Klarna Checkout Callbacks
      summary: Push
      description: Consumes push notification when a Klarna Checkout Order is completed.
      operationId: Push
      parameters:
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
        - name: merchant
          in: query
          description: Merchant identifier
          required: true
          schema:
            type: string
        - name: channel
          in: query
          description: Merchant channel
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/validation:
    post:
      tags:
        - Klarna Checkout Callbacks
      summary: Validation
      operationId: Validation
      parameters:
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
        - name: merchant
          in: query
          description: Merchant identifier
          required: true
          schema:
            type: string
        - name: channel
          in: query
          description: Merchant channel
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaValidationErrorResponse'
        '404':
          description: Not Found
          content:
            application/json: {}
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/confirm:
    get:
      tags:
        - Klarna Checkout Callbacks
      summary: Confirm
      description: Acknowledges Klarna Order and redirects user to confirmation page.
      operationId: Confirm
      parameters:
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
        - name: merchant
          in: query
          description: Merchant identifier
          required: true
          schema:
            type: string
        - name: channel
          in: query
          description: Merchant channel
          required: true
          schema:
            type: string
      responses:
        '302':
          description: Found
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/address-update:
    post:
      tags:
        - Klarna Checkout 'Client-side events' Callbacks
      summary: Address update
      description: >-
        Updates customer information on Norce order with latest customer
        information from Klarna Checkout. Frontend implementation should
        subscribe to Klarna frontend event and call this endpoint.
      operationId: AddressUpdate
      parameters:
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
        - name: merchant
          in: query
          description: Merchant identifier
          required: true
          schema:
            type: string
        - name: channel
          in: query
          description: Merchant channel
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/ShippingServiceRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingOptionUpdateOrder'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/shipping-option-update:
    post:
      tags:
        - Klarna Checkout 'Client-side events' Callbacks
      summary: Shipping option update
      description: >-
        Shipping option updated notifications. Will update the Norce order with
        latest shipping selection from klarna. Frontend implementation should
        subscribe to Klarna frontend event and call this endpoint.
      operationId: ShippingOptionUpdate
      parameters:
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
        - name: merchant
          in: query
          description: Merchant identifier
          required: true
          schema:
            type: string
        - name: channel
          in: query
          description: Merchant channel
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/ShippingServiceRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShippingOptionUpdateOrder'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/state-changed:
    post:
      tags:
        - Norce Callbacks (Klarna Checkout)
      summary: Handle State changed
      description: State changed.
      operationId: StateChanged
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Updated order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchOperation'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/cart-changed:
    post:
      tags:
        - Norce Callbacks (Klarna Checkout)
      summary: Handle Cart changed
      description: Cart changed.
      operationId: CartChanged
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Updated order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchOperation'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      deprecated: true
      security:
        - Bearer: []
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/update-payment:
    post:
      tags:
        - Norce Callbacks (Klarna Checkout)
      summary: Handle update payment
      description: Hook to update payment on changes.
      operationId: UpdatePayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Updated order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchOperation'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/checkout/v1/callback/orders/{order_id}/payments/{payment_id}/reference-changed:
    post:
      tags:
        - Norce Callbacks (Klarna Checkout)
      summary: Handle reference changed
      description: Reference changed.
      operationId: ReferenceChanged
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Updated order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchOperation'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/order/v1/orders/{order_id}/payments/{payment_id}/refresh-kco:
    post:
      tags:
        - Order Management
      summary: >-
        Refresh the list of available PaymentActions for a Klarna Checkout Order
        Payment
      description: >-
        Refreshes the list of available payment actions on the Klarna Checkout
        payment to reflect the current payment state
      operationId: Refresh-kco
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/order/v1/orders/{order_id}/payments/{payment_id}/refresh-kp:
    post:
      tags:
        - Order Management
      summary: >-
        Refresh the list of available PaymentActions for a Klarna Payment Order
        Payment
      description: >-
        Refreshes the list of available payment actions on the Klarna Payment
        payment to reflect the current payment state
      operationId: Refresh-kp
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/order/v1/orders/{order_id}/payments/{payment_id}/cancel:
    post:
      tags:
        - Order Management
      summary: Cancel Klarna order
      description: Used to cancel a Klarna order
      operationId: CancelKlarnaOrder
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutOrder'
      security:
        - Bearer: []
  /api/order/v1/orders/{order_id}/payments/{payment_id}/capture:
    post:
      tags:
        - Order Management
      summary: Capture Klarna order
      description: Used to capture a Klarna order
      operationId: CaptureKlarnaOrder
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutOrder'
      security:
        - Bearer: []
  /api/order/v1/orders/{order_id}/payments/{payment_id}/refund:
    post:
      tags:
        - Order Management
      summary: Refund Klarna order
      description: Used to refund a Klarna order
      operationId: RefundKlarnaOrder
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaCheckoutOrder'
      security:
        - Bearer: []
  /api/payments/v1/orders/{order_id}/payments:
    post:
      tags:
        - Klarna Payments
      summary: Create a new Klarna Payments Session
      description: Requires an existing Norce order.
      operationId: CreateKlarnaPaymentsSessionPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentSession'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - Bearer: []
  /api/payments/v1/orders/{order_id}/payments/{payment_id}:
    get:
      tags:
        - Klarna Payments
      summary: Get Klarna Payments Session
      description: Used to get current payments session.
      operationId: GetKlarnaPaymentsSessionPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaPaymentsSession'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
    put:
      tags:
        - Klarna Payments
      summary: Update Klarna Payments Session
      description: >-
        Used to remap and update the Klarna Payments Session from the Norce
        order, requires existing payment with Klarna Payments Session.
      operationId: UpdateKlarnaPaymentsSessionPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KlarnaPaymentsSession'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/payments/v1/orders/{order_id}/payments/{payment_id}/confirm:
    post:
      tags:
        - Klarna Payments
      summary: Confirm payment and create Klarna Order
      description: Requires an existing Norce order.
      operationId: KlarnaPaymentsConfirm
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: ''
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/ConfirmContext'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderConfirmation'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/payments/v1/orders/{order_id}/payments/{payment_id}/validation:
    get:
      tags:
        - Klarna Payments
      summary: Validate Klarna Payments Session
      description: Validate current payments session.
      operationId: ValidateKlarnaPaymentsSessionPayment
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/payments/v1/orders/{order_id}/payments/{payment_id}/cart-changed:
    post:
      tags:
        - Norce Callbacks (Klarna Payments)
      summary: Handle Cart changed
      description: Cart changed.
      operationId: CartChanged
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Updated order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchOperation'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
  /api/payments/v1/orders/{order_id}/payments/{payment_id}/shippings-changed:
    post:
      tags:
        - Norce Callbacks (Klarna Payments)
      summary: Handle Shippings changed
      description: Shippings changed.
      operationId: ShippingsChanged
      parameters:
        - name: x-merchant
          in: header
          description: Merchant identifier.
          required: true
          schema:
            type: string
            example: norce
          example: norce
        - name: x-channel
          in: header
          description: Channel identifier
          required: true
          schema:
            type: string
            example: '1'
          example: '1'
        - name: order_id
          in: path
          description: Order identifier
          required: true
          schema:
            type: string
        - name: payment_id
          in: path
          description: Payment identifier
          required: true
          schema:
            type: string
      requestBody:
        description: Updated order
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/Order'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PatchOperation'
        '400':
          description: Bad Request
          content:
            application/json: {}
        '404':
          description: Not Found
          content:
            application/json: {}
      security:
        - Bearer: []
components:
  schemas:
    Addon:
      type: object
      properties:
        reference:
          type: string
          description: Shipping addon reference.
        price:
          type: number
          description: Cost of addon.
          format: double
      additionalProperties: false
    Address:
      type: object
      properties:
        givenName:
          type: string
          description: Given name or first name.
          example: Rosalinainho
        familyName:
          type: string
          description: Family name or last name.
          example: Undulatsson
        careOf:
          type: string
          description: Care of.
          example: Olleinho Jyckesson
        reference:
          type: string
          description: Reference to the customer
        organizationName:
          type: string
          description: Name of the Organization
          example: Storm
        streetAddress:
          type: string
          description: Address or street name, first line.
          example: Adaptivevägen 18
        streetAddress2:
          type: string
          description: Address or street name, second line.
          example: Lgh 1203
        postalCode:
          type: string
          description: Postal code, zip or post code.
          example: 955 60
        city:
          type: string
          description: City.
          example: Boden
        region:
          type: string
          description: State or region.
          example: Norrbotten
        country:
          type: string
          description: Country. ISO 3166 alpha-2.
          example: SE
        phone:
          type: string
          description: Phone number.
          example: '0753892233'
        email:
          type: string
          description: E-mail address.
          example: rosalinainho.undulatsson@example.com
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the address.
      additionalProperties: false
    AuthorizedPaymentMethod:
      type: object
      properties:
        number_of_days:
          type: string
        number_of_installments:
          type: string
        type:
          type: string
      additionalProperties: false
    Callback:
      type: object
      properties:
        id:
          type: string
          description: Unique ID for the callback.
          readOnly: true
          example: oc_BaDIudFOjBEuFmLlmDExePUFTh
        adapterId:
          type: string
          description: Callback Adapter ID.
          example: jetshop_adapter
        event:
          allOf:
            - $ref: '#/components/schemas/CallbackEvent'
          description: Callback event.
        url:
          type: string
          description: >-
            Full valid url to be called by POST. If the url contains the
            substring '{order_id}' it will be replaced with the

            orders id

            before call is performed.
          example: >-
            http://specific-feature-adapter.norce.io/api/v1/callbacks/orders/{order_id}/specific-callback
      additionalProperties: false
    CallbackEvent:
      enum:
        - validate
        - accept
        - complete
      type: string
    Cart:
      type: object
      properties:
        reference:
          type: string
          description: Cart Reference
        items:
          type: array
          items:
            $ref: '#/components/schemas/Item'
          description: List of Items
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/Discount'
          description: List of Discounts
        total:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Cart total excluding shipping fees
      additionalProperties: false
    ConfirmContext:
      required:
        - authorizationToken
      type: object
      properties:
        authorizationToken:
          minLength: 1
          type: string
      additionalProperties: false
    Consent:
      type: object
      properties:
        id:
          type: string
          description: Unique ID for the consent item.
          example: ci_newsleter
        checked:
          type: boolean
          description: Consent checked status.
        text:
          type: string
          description: Consent description.
        required:
          type: boolean
          description: Required for transition order state to processing
      additionalProperties: false
    Customer:
      required:
        - type
      type: object
      properties:
        billing:
          allOf:
            - $ref: '#/components/schemas/Address'
          description: Billing address to the customer
        shipping:
          allOf:
            - $ref: '#/components/schemas/Address'
          description: Shipping address to the customer
        type:
          allOf:
            - $ref: '#/components/schemas/CustomerType'
          description: The type of customer
          example: Person
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the customer.
      additionalProperties: false
    CustomerType:
      enum:
        - person
        - organization
      type: string
    DeliveryDetails:
      type: object
      properties:
        carrier:
          type: string
          description: Carrier name.
        class:
          type: string
          description: Shipping class.
        product:
          allOf:
            - $ref: '#/components/schemas/Product'
          description: Shipping product.
        pickupLocation:
          allOf:
            - $ref: '#/components/schemas/PickupLocation'
          description: Pickup location.
      additionalProperties: false
    Dimensions:
      type: object
      properties:
        height:
          type: integer
          format: int32
        width:
          type: integer
          format: int32
        length:
          type: integer
          format: int32
      additionalProperties: false
    Discount:
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/DiscountType'
          description: Indicates if the discount applies to items or shipping.
        name:
          type: string
          description: Name of the discount.
        code:
          type: string
          description: Discount code.
        value:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Total sum of discount.
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the discount.
      additionalProperties: false
    DiscountType:
      enum:
        - item
        - shipping
      type: string
    Error:
      type: object
      properties:
        code:
          enum:
            - internal-server-error
            - unauthorized
            - configuration-error
            - configuration-not-found
            - order-not-found
            - order-error
            - order-bad-request
            - order-conflict
            - shipping-not-found
            - shipping-error
            - payment-not-found
            - payment-error
            - klarna-error
            - klarna-bad-request
            - klarna-validation
            - klarna-order-not-found
            - translation-not-found
          type: string
          description: Error code
          example: cart-not-found
        message:
          type: string
          description: Detailed error information
          example: Cart with id:{id} now found.
        klarnaError:
          allOf:
            - $ref: '#/components/schemas/KlarnaError'
          description: Error if originating from Klarna
      additionalProperties: false
    Hook:
      type: object
      properties:
        id:
          type: string
          description: Unique ID for the callback.
          readOnly: true
          example: oc_BaDIudFOjBEuFmLlmDExePUFTh
        adapterId:
          type: string
          description: Callback Adapter ID.
          example: jetshop_adapter
        subscribeTo:
          type: string
          description: Callback event.
        target:
          type: string
          description: Callback event.
        invoke:
          type: string
          description: >-
            Full valid url to be called by POST. If the url contains the
            substring '{order_id}' it will be replaced with the

            orders id

            before call is performed.
          example: >-
            http://specific-feature-adapter.norce.io/api/v1/callbacks/orders/{order_id}/specific-callback
      additionalProperties: false
    Item:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the order
          example: ci_FpEzyBvBBUyKxkeNriFUxZOCje
        reference:
          type: string
          description: Optional. Platform cart item reference.
        name:
          type: string
          description: Descriptive name of the item.
          example: T-Shirt XL
        sku:
          type: string
          description: SKU or article number.
          example: A000123
        productType:
          allOf:
            - $ref: '#/components/schemas/ProductType'
          description: Type of product.
        items:
          type: array
          items:
            $ref: '#/components/schemas/Item'
          description: Child Items of the item.
        url:
          type: string
          description: URL to the product page.
          example: https://example.com/products/A000123
        imageUrl:
          type: string
          description: URL to an image showing the item.
          example: https://example.com/products/A000123/images/1
        quantity:
          type: integer
          description: Quantity of the item.
          format: int32
          example: 2
        unit:
          type: string
          description: Unit used to describe the quantity. Ex. st, kg
          example: st
        price:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Unit price, excluding discount
        total:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Total sum for all quantities including discount.
        originalTotal:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Total sum for all quantities excluding discount.
        vatRate:
          type: number
          description: Value-added tax. 25% would be input as 0.25.
          format: double
          example: 0.25
        discounts:
          type: array
          items:
            $ref: '#/components/schemas/Discount'
          description: Discounts applied to item.
        logistics:
          allOf:
            - $ref: '#/components/schemas/Logistics'
          description: Item Logistics.
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the item.
      additionalProperties: false
    KlarnaCheckoutAddress:
      type: object
      properties:
        given_name:
          type: string
        family_name:
          type: string
        organization_name:
          type: string
        email:
          type: string
        title:
          type: string
        street_address:
          type: string
        street_address2:
          type: string
          description: Also used for c/o address field
        street_name:
          type: string
        street_number:
          type: string
        house_extension:
          type: string
        postal_code:
          type: string
        city:
          type: string
        region:
          type: string
        phone:
          type: string
        country:
          type: string
        care_of:
          type: string
        reference:
          type: string
        attention:
          type: string
          description: Also used for reference field
      additionalProperties: false
    KlarnaCheckoutOrder:
      type: object
      properties:
        id:
          type: string
          description: Norce Payment Id
        status:
          type: string
          description: Klarna checkout order status.
          example: CHECKOUT_INCOMPLETE
        htmlSnippet:
          type: string
          description: Klarna checkout order html snippet.
          example: |2-

                            <div id='klarna-checkout-container'><script>alert('Initializing Klarna Checkout');</script>
                            </div>
                        
      additionalProperties: false
    KlarnaCheckoutRecurringOrder:
      type: object
      properties:
        id:
          type: string
          description: Norce Payment Id
      additionalProperties: false
    KlarnaError:
      type: object
      properties:
        errorCode:
          type: string
        errorMessages:
          type: array
          items:
            type: string
        correlationId:
          type: string
      additionalProperties: false
    KlarnaPaymentsAddress:
      type: object
      properties:
        attention:
          maxLength: 99
          minLength: 0
          type: string
        city:
          maxLength: 99
          minLength: 0
          type: string
        country:
          pattern: ^[A-Za-z]{2,2}$
          type: string
        email:
          maxLength: 99
          minLength: 0
          type: string
        family_name:
          maxLength: 99
          minLength: 0
          type: string
        given_name:
          maxLength: 99
          minLength: 0
          type: string
        organization_name:
          maxLength: 99
          minLength: 0
          type: string
        phone:
          maxLength: 99
          minLength: 5
          type: string
        postal_code:
          maxLength: 10
          minLength: 0
          type: string
        region:
          maxLength: 99
          minLength: 0
          type: string
        street_address:
          maxLength: 99
          minLength: 0
          type: string
        street_address2:
          maxLength: 99
          minLength: 0
          type: string
        title:
          maxLength: 20
          minLength: 0
          type: string
      additionalProperties: false
    KlarnaPaymentsAssetUrls:
      type: object
      properties:
        descriptive:
          type: string
        standard:
          type: string
      additionalProperties: false
    KlarnaPaymentsAttachment:
      type: object
      properties:
        body:
          type: string
          description: >-
            The content of the extra merchant data should be presented as a
            string inside this property. The body should be an

            object containing any of the keys and sub-objects described below
            serialized to JSON. More information on that

            object can be found
            [here](https://developers.klarna.com/api/#attachment-schema).
        content_type:
          type: string
          description: >-
            The content type of the body. It is usually represented as
            \"application/vnd.klarna.internal.emd-v2+json\"
      additionalProperties: false
    KlarnaPaymentsCustomer:
      type: object
      properties:
        date_of_birth:
          type: string
          description: Customer’s date of birth. The format is ‘yyyy-mm-dd’
        gender:
          type: string
          description: Customer’s gender - ‘male’ or ‘female’
        last_four_ssn:
          type: string
          description: >-
            Last four digits of the customer's social security number. This
            value is available for US customers.
        national_identification_number:
          type: string
          description: >-
            The customer's national identification number. This value is
            available for EU customers utilizing national

            identification numbers.
        organization_entity_type:
          enum:
            - LIMITED_COMPANY
            - PUBLIC_LIMITED_COMPANY
            - ENTREPRENEURIAL_COMPANY
            - LIMITED_PARTNERSHIP_LIMITED_COMPANY
            - LIMITED_PARTNERSHIP
            - GENERAL_PARTNERSHIP
            - REGISTERED_SOLE_TRADER
            - SOLE_TRADER
            - CIVIL_LAW_PARTNERSHIP
            - PUBLIC_INSTITUTION
            - OTHER
          type: string
          description: Organization entity type. Only applicable for B2B customers.
        organization_registration_id:
          type: string
          description: Organization registration id. Only applicable for B2B customers.
        title:
          type: string
          description: >-
            Customer’s Title. Allowed values per country:\nUK - \"Mr\",
            \"Ms\"\nDE - \"Herr\", \"Frau\"\nAT: \"Herr,

            \"Frau\"\nCH: de-CH: \"Herr, \"Frau\" it-CH: \"Sig.\", \"Sig.ra\"
            fr-CH: \"M\", \"Mme\" \nBE: \"Dhr.\",

            \"Mevr.\"\nNL: \"Dhr.\", \"Mevr.\"
        type:
          type: string
          description: >-
            Type of customer in the session. If nothing is added, a B2C session
            will be the default. If it is a b2b-session,

            you should enter organization to trigger a B2B session.
        vat_id:
          type: string
          description: VAT ID. Only applicable for B2B customers.
      additionalProperties: false
    KlarnaPaymentsMerchantUrls:
      type: object
      properties:
        confirmation:
          maxLength: 2000
          minLength: 0
          type: string
          format: uri
        notification:
          maxLength: 2000
          minLength: 0
          type: string
          format: uri
        push:
          maxLength: 2000
          minLength: 0
          type: string
          format: uri
        authorization:
          maxLength: 2000
          minLength: 0
          type: string
          format: uri
      additionalProperties: false
    KlarnaPaymentsOptions:
      type: object
      properties:
        color_border:
          type: string
        color_border_selected:
          type: string
        color_details:
          type: string
        color_text:
          type: string
        radius_border:
          type: string
      additionalProperties: false
    KlarnaPaymentsOrder:
      type: object
      properties:
        authorized_payment_method:
          allOf:
            - $ref: '#/components/schemas/AuthorizedPaymentMethod'
        fraud_status:
          type: string
        order_id:
          type: string
        redirect_url:
          type: string
      additionalProperties: false
    KlarnaPaymentsOrderLine:
      type: object
      properties:
        image_url:
          maxLength: 1024
          minLength: 0
          type: string
        merchant_data:
          maxLength: 1024
          minLength: 0
          type: string
        name:
          maxLength: 255
          minLength: 1
          type: string
        product_identifiers:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsProductIdentifiers'
        product_url:
          maxLength: 1024
          minLength: 0
          type: string
        quantity:
          type: integer
          format: int64
        quantity_unit:
          maxLength: 8
          minLength: 1
          type: string
        reference:
          maxLength: 256
          minLength: 0
          type: string
        tax_rate:
          type: integer
          format: int64
        total_amount:
          type: integer
          format: int64
        total_discount_amount:
          type: integer
          format: int64
        total_tax_amount:
          type: integer
          format: int64
        type:
          type: string
        unit_price:
          type: integer
          format: int64
        subscription:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsSubscription'
      additionalProperties: false
    KlarnaPaymentsPaymentMethodCategory:
      type: object
      properties:
        asset_urls:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsAssetUrls'
        identifier:
          type: string
        name:
          type: string
      additionalProperties: false
    KlarnaPaymentsProductIdentifiers:
      type: object
      properties:
        brand:
          maxLength: 70
          minLength: 0
          type: string
        category_path:
          maxLength: 750
          minLength: 0
          type: string
        global_trade_item_number:
          maxLength: 50
          minLength: 0
          type: string
        manufacturer_part_number:
          maxLength: 70
          minLength: 0
          type: string
        color:
          maxLength: 64
          minLength: 0
          type: string
        size:
          maxLength: 64
          minLength: 0
          type: string
      additionalProperties: false
    KlarnaPaymentsSession:
      type: object
      properties:
        session_id:
          type: string
        acquiring_channel:
          enum:
            - ECOMMERCE
            - IN_STORE
            - MONTH
            - TELESALES
          type: string
          description: >-
            The acquiring channel in which the session takes place. Ecommerce is
            default unless specified. Any other values

            should be defined in the agreement.
        attachment:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsAttachment'
        authorization_token:
          type: string
          description: Authorization token.
          readOnly: true
        billing_address:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsAddress'
        client_token:
          maxLength: 4096
          minLength: 0
          type: string
          readOnly: true
        custom_payment_method_ids:
          type: array
          items:
            type: string
          description: >-
            Promo codes - The array could be used to define which of the
            configured payment options within a payment category

            (pay_later, pay_over_time, etc.) should be shown for this purchase.
            Discuss with the delivery manager to know about

            the promo codes that will be configured for your account. The
            feature could also be used to provide promotional

            offers to specific customers (eg: 0% financing). Please be informed
            that the usage of this feature can have

            commercial implications.
        customer:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsCustomer'
        design:
          type: string
        expires_at:
          type: string
          format: date-time
          readOnly: true
        locale:
          type: string
        merchant_data:
          maxLength: 6000
          minLength: 0
          type: string
        merchant_reference1:
          maxLength: 255
          minLength: 0
          type: string
        merchant_reference2:
          maxLength: 255
          minLength: 0
          type: string
        merchant_urls:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsMerchantUrls'
        options:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsOptions'
        order_amount:
          type: integer
          format: int64
        order_lines:
          type: array
          items:
            $ref: '#/components/schemas/KlarnaPaymentsOrderLine'
        order_tax_amount:
          type: integer
          format: int64
        payment_method_categories:
          type: array
          items:
            $ref: '#/components/schemas/KlarnaPaymentsPaymentMethodCategory'
          readOnly: true
        purchase_country:
          type: string
        purchase_currency:
          type: string
        shipping_address:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsAddress'
        status:
          enum:
            - complete
            - incomplete
          type: string
          readOnly: true
        intent:
          enum:
            - buy
            - tokenize
            - buy_and_tokenize
          type: string
        order:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsOrder'
      additionalProperties: false
    KlarnaPaymentsSubscription:
      type: object
      properties:
        name:
          maxLength: 255
          minLength: 1
          type: string
        interval:
          enum:
            - DAY
            - WEEK
            - MONTH
            - YEAR
          type: string
          description: 'Enum: DAY, WEEK, MONTH, YEAR'
        interval_count:
          type: integer
          format: int32
      additionalProperties: false
    KlarnaValidationErrorResponse:
      type: object
      properties:
        error_type:
          type: string
        error_text:
          type: string
      additionalProperties: false
    Logistics:
      type: object
      properties:
        weight:
          type: integer
          format: int32
        height:
          type: integer
          format: int32
        width:
          type: integer
          format: int32
        length:
          type: integer
          format: int32
        tags:
          type: array
          items:
            type: string
      additionalProperties: false
    Order:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the order
          example: o_yClTSySjyAuuBjmiBlHCjuEcTf
        merchant:
          type: string
          description: Merchant identifier
        channel:
          type: string
          description: Merchant channel
        reference:
          type: string
          description: External order reference
        created:
          type: string
          description: Order creation date time
          format: date-time
        lastModified:
          type: string
          description: Order last modified date time
          format: date-time
        state:
          allOf:
            - $ref: '#/components/schemas/State'
          description: Order state
        culture:
          type: string
          description: Order Culture
        currency:
          type: string
          description: Order Currency
        country:
          type: string
          description: Order Country
        cart:
          allOf:
            - $ref: '#/components/schemas/Cart'
          description: Order cart
        shippings:
          type: array
          items:
            $ref: '#/components/schemas/Shipping'
          description: Shippings related to the order
        payments:
          type: array
          items:
            $ref: '#/components/schemas/Payment'
          description: Payments related to the order
        customer:
          allOf:
            - $ref: '#/components/schemas/Customer'
          description: Customer information
        consents:
          type: array
          items:
            $ref: '#/components/schemas/Consent'
          description: Order consents
        actions:
          type: array
          items:
            $ref: '#/components/schemas/Callback'
          description: >-
            Order actions are called in order to complete an action, such as
            'Validate'. If provided the action is not

            completed if the response is not successful (eg. http status code
            400), note however that in case of a time

            constraint the action might be completed without a successful
            response.
        hooks:
          type: array
          items:
            $ref: '#/components/schemas/Hook'
          description: Hooks, added by a separate endpoint.
        validations:
          type: array
          items:
            $ref: '#/components/schemas/Validation'
          description: Validations, added by a separate endpoint.
        total:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Order total including shipping fees
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the order.
      additionalProperties: false
    OrderConfirmation:
      type: object
      properties:
        redirectUrl:
          type: string
        order:
          allOf:
            - $ref: '#/components/schemas/KlarnaPaymentsOrder'
      additionalProperties: false
    OrderLine:
      type: object
      properties:
        type:
          type: string
        reference:
          type: string
        name:
          type: string
        quantity:
          type: integer
          format: int32
        quantity_unit:
          type: string
        unit_price:
          type: integer
          format: int32
        tax_rate:
          type: integer
          format: int32
        total_amount:
          type: integer
          format: int32
        total_discount_amount:
          type: integer
          format: int32
        total_tax_amount:
          type: integer
          format: int32
        merchant_data:
          type: string
        product_url:
          type: string
          format: uri
        image_url:
          type: string
          format: uri
        product_identifiers:
          allOf:
            - $ref: '#/components/schemas/ProductIdentifiers'
        shipping_attributes:
          allOf:
            - $ref: '#/components/schemas/ShippingAttributes'
      additionalProperties: false
    OrderStatus:
      enum:
        - checkout
        - processing
        - accepted
        - completed
        - declined
      type: string
    PatchOperation:
      type: object
      properties:
        op:
          type: string
        path:
          type: string
        value: {}
      additionalProperties: false
    Payment:
      type: object
      properties:
        id:
          type: string
          description: Unique ID of the payment.
          example: p_KBiXuYjvYxsezKCQAMuuSKGDaT
        adapterId:
          type: string
          description: Adapter ID
          example: klarna-checkout
        name:
          type: string
          description: Payment service provider name
        merchant:
          type: string
          description: Merchant identifier.
          example: norce
        channel:
          type: string
          description: Merchant channel.
        currency:
          pattern: ^[A-Za-z]{3,3}$
          type: string
          description: Currency of the purchase. ISO 4217.
          example: SEK
        type:
          allOf:
            - $ref: '#/components/schemas/PaymentType'
          description: Type of payment.
          example: default
        orderId:
          type: string
          description: ID of the order.
          example: o_DhZSbDfVzNzuxOzHyCFskzGzaJ
        amount:
          type: number
          description: The amount to be covered by the payment.
          format: double
          example: 10
        upperLimitAmount:
          type: number
          description: >-
            The upper limit to be used by this payment. For example the amount
            available on a voucher.
          format: double
          example: 100
        state:
          allOf:
            - $ref: '#/components/schemas/PaymentState'
          description: The state of the payment.
          example: Intent
        reference:
          type: string
          description: External reference to payment service provider.
          example: 7d31e2cf-2d46-4db0-b87d-d65dfaae298f
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the payment.
      additionalProperties: false
    PaymentSession:
      type: object
      properties:
        id:
          type: string
          description: Norce Payment Id
        session:
          allOf:
            - $ref: '#/components/schemas/Session'
          description: Klarna Payments Session
      additionalProperties: false
    PaymentState:
      enum:
        - intent
        - removed
        - processing
        - failed
        - confirmed
        - pending
        - declined
        - reserved
        - credited
        - captured
        - cancelled
        - refunded
      type: string
    PaymentType:
      enum:
        - default
        - prepaid
        - voucher
      type: string
    PickupLocation:
      type: object
      properties:
        reference:
          type: string
          description: Pickup location reference.
        name:
          type: string
          description: Name of pickup location.
        address:
          allOf:
            - $ref: '#/components/schemas/PickupLocationAddress'
          description: Pickup location address.
      additionalProperties: false
    PickupLocationAddress:
      type: object
      properties:
        streetAddress:
          type: string
          description: Address or street name, first line.
          example: Adaptivevägen 18
        city:
          type: string
          description: City.
          example: Boden
        postalCode:
          type: string
          description: Postal code, zip or post code.
          example: 955 60
        country:
          type: string
          description: Country. ISO 3166 alpha-2.
          example: SE
      additionalProperties: false
    Price:
      type: object
      properties:
        includingVat:
          type: number
          description: >-
            Total price including vat in the checkout specified currency.
            Requires two decimal points or multiples of 0.01.
          format: double
          example: 1234
        excludingVat:
          type: number
          description: >-
            Total price excluding vat in the checkout specified currency.
            Requires two decimal points or multiples of 0.01.
          format: double
          example: 987.2
      additionalProperties: false
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
          format: int32
        detail:
          type: string
        instance:
          type: string
      additionalProperties: {}
    Product:
      type: object
      properties:
        reference:
          type: string
          description: Product reference.
        name:
          type: string
          description: Carrier product name.
      additionalProperties: false
    ProductIdentifiers:
      type: object
      properties:
        category_path:
          type: string
        global_trade_item_number:
          type: string
        manufacturer_part_number:
          type: string
        brand:
          type: string
      additionalProperties: false
    ProductType:
      enum:
        - physical
        - digital
        - giftCard
        - bundle
      type: string
    RecurringTokenModel:
      type: object
      properties:
        token:
          type: string
        autoCapture:
          type: boolean
      additionalProperties: false
    Session:
      type: object
      properties:
        client_token:
          type: string
          description: Client Token
        payment_method_categories:
          type: array
          items:
            $ref: '#/components/schemas/KlarnaPaymentsPaymentMethodCategory'
          description: Available payment method categories
        session_id:
          type: string
          description: >-
            ID of the created session. Please use this ID to share with Klarna
            for identifying any issues during integration.
      additionalProperties: false
    Shipping:
      required:
        - total
        - vatRate
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the shipping.
          example: s_pmHreuEBboeezpixrHMDPQlazU
        merchant:
          type: string
          description: Merchant identifier.
          example: norce
        channel:
          type: string
          description: Channel identifier
          example: '1'
        state:
          allOf:
            - $ref: '#/components/schemas/ShippingState'
          description: Current state of the shipping.
        reference:
          type: string
          description: External reference to shipping.
          example: e8ed2091-c34c-4837-a3a8-bc827b0dc183
        tmsReference:
          type: string
          description: TMS Reference.
          example: a935a628-f70c-47a4-a9f6-98c6d08c2ba3
        orderId:
          type: string
          description: ID of the order.
          example: o_DhZSbDfVzNzuxOzHyCFskzGzaJ
        adapterId:
          type: string
          description: Adapter ID
          example: ingrid-shipping-adapter
        name:
          type: string
          description: Descriptive name of the shipping.
          example: PostNord MyPack Home
        total:
          allOf:
            - $ref: '#/components/schemas/Price'
          description: Total price of the shipping.
        vatRate:
          type: number
          description: Value-added tax. 25% would be input as 0.25.
          format: double
          example: 0.25
        deliveryDetails:
          allOf:
            - $ref: '#/components/schemas/DeliveryDetails'
          description: Delivery details.
        addons:
          type: array
          items:
            $ref: '#/components/schemas/Addon'
          description: Shipping addons.
        attributes:
          type: object
          additionalProperties:
            nullable: true
          description: Allows you to store any custom attributes for the shipping.
      additionalProperties: false
    ShippingAttributes:
      type: object
      properties:
        weight:
          type: integer
          format: int32
        dimensions:
          allOf:
            - $ref: '#/components/schemas/Dimensions'
        tags:
          type: array
          items:
            type: string
      additionalProperties: false
    ShippingOption:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        description:
          type: string
        promo:
          type: string
        price:
          type: integer
          format: int32
        tax_amount:
          type: integer
          format: int32
        tax_rate:
          type: integer
          format: int32
        preselected:
          type: boolean
        shipping_method:
          type: string
        delivery_details:
          allOf:
            - $ref: '#/components/schemas/DeliveryDetails'
        tms_reference:
          type: string
        selected_addons:
          type: array
          items:
            $ref: '#/components/schemas/Addon'
      additionalProperties: false
    ShippingOptionUpdateOrder:
      type: object
      properties:
        purchase_currency:
          type: string
        order_amount:
          type: integer
          format: int32
        order_tax_amount:
          type: integer
          format: int32
        order_lines:
          type: array
          items:
            $ref: '#/components/schemas/OrderLine'
      additionalProperties: false
    ShippingServiceRequest:
      type: object
      properties:
        order_amount:
          type: integer
          format: int32
        order_tax_amount:
          type: integer
          format: int32
        order_lines:
          type: array
          items:
            $ref: '#/components/schemas/OrderLine'
        billing_address:
          allOf:
            - $ref: '#/components/schemas/KlarnaCheckoutAddress'
        shipping_address:
          allOf:
            - $ref: '#/components/schemas/KlarnaCheckoutAddress'
        selected_shipping_option:
          allOf:
            - $ref: '#/components/schemas/ShippingOption'
        purchase_currency:
          type: string
        merchant_data:
          type: string
        merchant_reference1:
          type: string
        merchant_reference2:
          type: string
        customer:
          allOf:
            - $ref: '#/components/schemas/Customer'
        locale:
          type: string
        tags:
          type: array
          items:
            type: string
      additionalProperties: false
    ShippingState:
      enum:
        - intent
        - removed
        - processing
        - failed
        - confirmed
      type: string
    State:
      type: object
      properties:
        currentStatus:
          allOf:
            - $ref: '#/components/schemas/OrderStatus'
          description: State of the order.
        transitions:
          type: array
          items:
            $ref: '#/components/schemas/Transition'
          description: State transitions.
          readOnly: true
      additionalProperties: false
    Transition:
      type: object
      properties:
        status:
          allOf:
            - $ref: '#/components/schemas/OrderStatus'
          description: State of the order.
          readOnly: true
        timeStamp:
          type: string
          description: UTC Time when state was set.
          format: date-time
          readOnly: true
      additionalProperties: false
    Validation:
      type: object
      properties:
        id:
          type: string
          description: Unique ID for the callback.
          readOnly: true
          example: oc_BaDIudFOjBEuFmLlmDExePUFTh
        adapterId:
          type: string
          description: Callback Adapter ID.
          example: jetshop_adapter
        url:
          type: string
          description: >-
            Full valid url to be called by GET. If the url contains the
            substring '{order_id}' it will be replaced with the

            orders id

            before call is performed.
          example: >-
            http://specific-feature-adapter.norce.io/api/v1/callbacks/orders/{order_id}/specific-callback
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: apiKey
      description: >-
        Authorization header using the bearer scheme. Example: 'Bearer
        a3bcdABCaB12abc3AbCDAB5AbcABCaBcABC5ab3c5A0='
      name: Authorization
      in: header
