openapi: 3.0.3
info:
  title: Pricing API
  description: |
    The `pricing-api` hub sets the foundations for the following Pricing APIs:

    ### Order API
    This api enables the management of orders in epilot 360, providing features such as:
     - Automatic calculation of totals and price breakdowns for taxes on the Order entity
     - Product and pricing data validation

    ### Shopping Cart API
    Used to interact with a cart during a customer's checkout session, providing:
     - An unified data model to model a Shopping Cart
     - Product and pricing data validation
     - Checkout a cart into an order or quote

    ### Catalog API
    Provides a way to query the entire catalog of products and prices.

    ### Availability API
    Provides endpoints for querying products availability by a set of predefined dimensions.

    ### Spot Market API
    Provides endpoints to fetch (historic) spot market price data.

    ### External Integrations API
    Provides endpoints for external integrations.
  version: 1.0.0
  termsOfService: https://epilot.cloud/agb
  contact:
    name: Support
    email: info@epilot.cloud
    url: https://help.epilot.cloud
tags:
- name: Order API
  description: |
    This api enables the management of orders in epilot 360, providing features such as:
     - Automatic calculation of totals and price breakdowns for taxes on the Order entity
     - Product and pricing data validation
- name: Cart API
  description: |
    Used to interact with a cart during a customer's checkout session, providing:
     - An unified data model to model a Shopping Cart
     - Product and pricing data validation
     - Checkout a cart into an order or quote
- name: Catalog API
  description: |
    Provides a way to query the entire catalog of products and prices.
- name: Promo Codes API
  description: |
    This API enables the validation of promo codes within journeys, their uniqueness and availability
- name: Availability API
  description: |
    Provides endpoints for querying products availability by a set of predefined dimensions.
- name: Spot Market API
  description: |
    Provides endpoints to fetch (historic) spot market data.
- name: External Integrations API
  description: |
    Provides endpoints for external integrations.
- name: Deprecated Endpoints
  description: |
    Deprecated endpoints.
- name: order_schema
  x-displayName: Order
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Order" exampleRef="#/components/examples/order-with-simple-prices" />
- name: order_composite_prices
  x-displayName: Order (with Composite Prices)
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Order" exampleRef="#/components/examples/order-with-composite-prices" />
- name: opportunity_schema
  x-displayName: Opportunity
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Opportunity" exampleRef="#/components/examples/opportunity" />
- name: product_schema
  x-displayName: Product
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Product" exampleRef="#/components/examples/product" />
- name: simple_price_schema
  x-displayName: Price
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Price" exampleRef="#/components/examples/price" />
- name: dynamic_price_schema
  x-displayName: Composite Price
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/CompositePrice" exampleRef="#/components/examples/composite-price" />
- name: coupon_schema
  x-displayName: Coupon
  description: |
    <SchemaDefinition schemaRef="#/components/schemas/Coupon" />
x-tagGroups:
- name: Commerce Schemas
  tags:
  - order_schema
  - opportunity_schema
- name: Pricing Schemas
  tags:
  - product_schema
  - simple_price_schema
  - dynamic_price_schema
  - coupon_schema
- name: Examples
  tags:
  - order_composite_prices
- name: APIs
  tags:
  - Order API
  - Cart API
  - Catalog API
  - Availability API
  - Deprecated
security:
- EpilotAuth: []
servers:
- url: https://pricing-api.sls.epilot.io
- url: https://pricing-api.sls.epilot.io
paths:
  /v1/pricing:compute:
    post:
      description: 'Computes a set of pricing details that can be persisted on an entity with the pricing capability enabled, e.g: Orders or Contracts.'
      summary: calculatePricingDetails
      operationId: $calculatePricingDetails
      tags:
      - Order API
      requestBody:
        required: false
        content:
          application/json:
            schema:
              properties:
                line_items:
                  $ref: '#/components/schemas/PriceItemsDto'
                redeemed_promos:
                  type: array
                  items:
                    $ref: '#/components/schemas/RedeemedPromo'
            examples:
              Compute price:
                value:
                  line_items:
                  - product_id: c5695fb5-f02d-4e46-9fb2-a36dc4e9876f
                    price_id: 396cb5f3-ea0b-4629-99ca-303661de5a9b
                    quantity: 2
                  - product_id: c5695fb5-f02d-4e46-9fb2-a36dc4e9876f
                    price_id: 2abe0c6f-63ef-417b-8c85-5546359382d9
                    quantity: 1
                    price_mappings:
                    - price_id: 2abe0c6f-63ef-417b-8c85-5546359382d9
                      frequency_unit: one_time
                      value: 2
                      name: Estimated consumption
                      metadata:
                        journey_title: P&G
                        step_name: Number Inputs
      responses:
        '200':
          description: Pricing details result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDetailsResponse'
              example:
                amount_subtotal: 1000
                amount_total: 1000
                amount_tax: 0
                total_details:
                  amount_tax: 0
                  breakdown:
                    taxes:
                    - tax:
                        rate: 0
                      amount: 0
                    recurrences:
                    - type: one_time
                      unit_amount_gross: 1000
                      unit_amount_net: 1000
                      amount_subtotal: 1000
                      amount_total: 1000
                      amount_subtotal_decimal: '10'
                      amount_total_decimal: '10'
                      amount_tax: 0
                    recurrencesByTax:
                    - type: one_time
                      amount_total: 1000
                      amount_subtotal: 1000
                      amount_tax: 0
                      tax:
                        tax:
                          rate: 0
                        amount: 0
                line_items:
                - product_id: c5695fb5-f02d-4e46-9fb2-a36dc4e9876f
                  price_id: 396cb5f3-ea0b-4629-99ca-303661de5a9b
                  quantity: 1
                  currency: EUR
                  _price:
                    description: Standard price component
                    pricing_model: per_unit
                    unit_amount_currency: EUR
                    unit_amount: 1000
                    unit_amount_decimal: '10'
                    is_tax_inclusive: true
                    price_display_in_journeys: show_price
                    active: true
                    variable_price: false
                    type: one_time
                    billing_period: null
                    billing_duration_amount: null
                    billing_duration_unit: null
                    notice_time_amount: null
                    notice_time_unit: null
                    termination_time_amount: null
                    termination_time_unit: null
                    renewal_duration_amount: null
                    renewal_duration_unit: null
                    price_components: null
                    _tags: []
                    _title: Standard price component
                    _id: 396cb5f3-ea0b-4629-99ca-303661de5a9b
                    internal_description: Standard price component
                  _product:
                    type: product
                    _title: Product PH
                    name: 'Product PH '
                    price_options:
                      $relation:
                      - entity_id: 396cb5f3-ea0b-4629-99ca-303661de5a9b
                        _tags: []
                        _schema: price
                    _id: c5695fb5-f02d-4e46-9fb2-a36dc4e9876f
                    active: true
                    internal_name: Product PH
                    description: ''
                  description: Standard price component
                  unit_amount: 1000
                  unit_amount_net: 1000
                  unit_amount_net_decimal: '10'
                  unit_amount_gross: 1000
                  unit_amount_gross_decimal: '10'
                  unit_amount_decimal: '10'
                  amount_subtotal: 1000
                  amount_total: 1000
                  amount_tax: 0
                  taxes:
                  - rate: nontaxable
                    rateValue: 0
                    amount: 0
                  is_tax_inclusive: true
                  amount_subtotal_decimal: '10'
                  amount_total_decimal: '10'
                currency: EUR
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/order:
    post:
      description: Create an order
      operationId: createOrder
      summary: createOrder
      tags:
      - Order API
      requestBody:
        required: true
        content:
          application/json:
            examples:
              Order with Simple Prices:
                value:
                  status: quote
                  source_type: manual
                  expires_at: '2022-06-30T16:17:00.000Z'
                  line_items:
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 16
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 4
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 1
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 1
                  currency: EUR
                  payment_method:
                  - type: IBAN
                    details: {}
                  billing_contact:
                    $relation:
                    - entity_id: 1834a54e-b68f-4f7f-a98a-fe16f11bc2a5
                      _tags: []
                  billing_first_name: Joao
                  billing_last_name: Pinho
                  billing_email: j.pinho@epilot.cloud
                  billing_company_name: epilot cloud
                  billing_address:
                  - _tags: []
                    street: Im Media Park
                    street_number: 8a
                    postal_code: '52000'
                    city: Cologne
                    country: DE
                    additional_info: ''
                  delivery_address: []
                  dates:
                  - _tags:
                    - Instalation Date
                    dates: ''
                    value: '2022-06-30T16:29:00.000Z'
              Order with Simple Prices and Dynamic Pricing:
                value:
                  status: quote
                  source_type: manual
                  expires_at: '2022-06-30T16:17:00.000Z'
                  line_items:
                  - price_id: 632b18b5-3f50-4231-b8d5-f8c33a392ed0
                    product_id: 3d1c9987-a7ae-4c1c-a7ef-e12caccab4e0
                    price_mappings:
                    - price_id: 632b18b5-3f50-4231-b8d5-f8c33a392ed0
                      frequency_unit: yearly
                      value: 12000
                      name: Estimated consumption
                      metadata:
                        journey_title: P&G
                        step_name: Number Inputs
                    quantity: 16
                  currency: EUR
                  payment_method:
                  - type: IBAN
                    details: {}
                  billing_contact:
                    $relation:
                    - entity_id: 1834a54e-b68f-4f7f-a98a-fe16f11bc2a5
                      _tags: []
                  billing_first_name: Joao
                  billing_last_name: Pinho
                  billing_email: j.pinho@epilot.cloud
                  billing_company_name: epilot cloud
                  billing_address:
                  - _tags: []
                    street: Im Media Park
                    street_number: 8a
                    postal_code: '52000'
                    city: Cologne
                    country: DE
                    additional_info: ''
                  delivery_address: []
                  dates:
                  - _tags:
                    - Instalation Date
                    dates: ''
                    value: '2022-06-30T16:29:00.000Z'
              Order with Composite Prices and Dynamic Pricing:
                value:
                  status: quote
                  source_type: manual
                  expires_at: '2022-06-30T16:17:00.000Z'
                  line_items:
                  - price_id: b3900bf3-020c-4c58-8af9-32f2682929e3
                    product_id: 924f6881-7ae3-4e2e-a1dd-2d81b8fa2e32
                    price_mappings:
                    - price_id: 6dc88d6f-ba33-45ee-b5d0-62641344a0d9
                      frequency_unit: yearly
                      value: 12000
                      name: Estimated consumption
                      metadata:
                        journey_title: P&G
                        step_name: Number Inputs
                    - price_id: 60eb12cd-703d-4d41-9265-577ff657bfc9
                      value: 10
                      name: Distance to power meter
                      metadata:
                        journey_title: P&G
                        step_name: Number Inputs
                    quantity: 1
                  currency: EUR
                  payment_method:
                  - type: IBAN
                    details: {}
                  billing_contact:
                    $relation:
                    - entity_id: 1834a54e-b68f-4f7f-a98a-fe16f11bc2a5
                      _tags: []
                  billing_first_name: Joao
                  billing_last_name: Pinho
                  billing_email: j.pinho@epilot.cloud
                  billing_company_name: epilot cloud
                  billing_address:
                  - _tags: []
                    street: Im Media Park
                    street_number: 8a
                    postal_code: '52000'
                    city: Cologne
                    country: DE
                    additional_info: ''
                  delivery_address: []
                  dates:
                  - _tags:
                    - Instalation Date
                    dates: ''
                    value: '2022-06-30T16:29:00.000Z'
            schema:
              $ref: '#/components/schemas/OrderPayload'
      responses:
        '201':
          description: Order result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/order/{id}:
    put:
      description: Update an existing Order
      operationId: putOrder
      summary: putOrder
      tags:
      - Order API
      parameters:
      - in: path
        name: id
        description: Order entity ID
        schema:
          type: string
        required: true
        example: 9d4602d3-03be-4d85-86b2-f3c6555fc606
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderPayload'
            examples:
              Order with Simple Prices:
                value:
                  status: quote
                  source_type: manual
                  expires_at: '2022-06-30T16:17:00.000Z'
                  line_items:
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 16
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 4
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 1
                  - price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
                    product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
                    quantity: 1
                  currency: EUR
                  payment_method:
                  - type: IBAN
                    details: {}
                  billing_contact:
                    $relation:
                    - entity_id: 1834a54e-b68f-4f7f-a98a-fe16f11bc2a5
                      _tags: []
                  billing_first_name: Joao
                  billing_last_name: Pinho
                  billing_email: j.pinho@epilot.cloud
                  billing_company_name: epilot cloud
                  billing_address:
                  - _tags: []
                    street: Im Media Park
                    street_number: 8a
                    postal_code: '52000'
                    city: Cologne
                    country: DE
                    additional_info: ''
                  delivery_address: []
                  dates:
                  - _tags:
                    - Instalation Date
                    dates: ''
                    value: '2022-06-30T16:29:00.000Z'
      responses:
        '200':
          description: Order result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/cart:checkout:
    post:
      description: |
        Checkouts a cart and executes the specified checkout `mode` process.

        A Checkout implicitly finalizes the provided cart (if not transient from a fast-checkout) and behaves in one of the following modes:
        - `create_order` (**default**): the payment happens at a later date or managed by 3rd-party CRM (SAP)
        - `create_invoice`: the payment happens on the online checkout (paypal, stripe, adyen)
        - `create_quote`: the checkout represents a price quote request

        Fast checkout is also supported, by passing the Cart contents directly.
        When a fast checkout is performed the cart is considered transient and there is no cart persistance.

        If the checkout `mode` is omitted, the `mode` will default to `create_order`.
      operationId: $checkoutCart
      summary: checkoutCart
      security:
      - {}
      - EpilotPublicAuth: []
      tags:
      - Cart API
      parameters:
      - in: header
        name: X-Ivy-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutCart'
            examples:
              Checkout with a transient Cart:
                $ref: '#/components/examples/checkout-with-transient-cart'
      responses:
        '200':
          description: The checkout result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutCartResult'
              examples:
                Checkout with created order:
                  $ref: '#/components/examples/checkout-result'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/catalog:
    post:
      description: Provides a querying functionalities over products and prices of the Catalog for a given organization.
      operationId: $searchCatalog
      summary: searchCatalog
      security:
      - {}
      - EpilotPublicAuth: []
      tags:
      - Catalog API
      parameters:
      - in: header
        name: X-Ivy-Org-ID
        description: The target Organization Id represented by the caller
        example: 739224
        schema:
          type: string
      - in: header
        name: Authorization
        description: The token identifying the client making the request
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogSearch'
      responses:
        '200':
          description: The search result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogSearchResult'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/catalog:
    post:
      description: Provides a querying functionalities over products and prices of the Catalog for a given organization.
      operationId: $privateSearchCatalog
      summary: privateSearchCatalog
      tags:
      - Catalog API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CatalogSearch'
      responses:
        '200':
          description: The search result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CatalogSearchResult'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/validate-promo-codes:
    post:
      description: Validate a list of promo codes against a list of coupons
      summary: validatePromoCodes
      operationId: $validatePromoCodes
      tags:
      - Promo Codes API
      security:
      - EpilotPublicAuth: []
      parameters:
      - in: header
        name: X-Ivy-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                coupon_ids:
                  type: array
                  description: The list of coupon ids to unlock with promo codes
                  items:
                    type: string
                promo_codes:
                  type: array
                  description: The list of promo codes to validate against the coupons
                  items:
                    type: string
            examples:
              Find coupons matching codes:
                value:
                  coupon_ids:
                  - 81b8e841-5926-4a73-ac77-6607c1037b65
                  - 45964a30-1a42-4e59-9362-7d954baf4ea1
                  promo_codes:
                  - ABC
                  - DEF
      responses:
        '200':
          description: Pricing details result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromoCodeValidationResponse'
              example:
                matched_coupons:
                - name: Coupon with promo-codes
                  type: fixed
                  percentage_value: null
                  fixed_value: 10
                  fixed_value_currency: EUR
                  fixed_value_decimal: '10.00'
                  category: discount
                  cashback_period: null
                  active: true
                  _schema: coupon
                  requires_promo_code: true
                  _id: 81b8e841-5926-4a73-ac77-6607c1037b65
                  _org: '739224'
                  _owners:
                  - org_id: '739224'
                    user_id: '11000622'
                  _created_at: '2025-01-29T15:46:41.014Z'
                  _updated_at: '2025-01-29T15:46:41.014Z'
                  _title: Coupon with promo-codes
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/availability:check:
    post:
      description: The availability check endpoint
      operationId: $availabilityCheck
      summary: availabilityCheck
      security:
      - EpilotPublicAuth: []
      tags:
      - Availability API
      parameters:
      - in: header
        name: X-Ivy-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AvailabilityCheckParams'
            examples:
              Check availability with location dimension:
                value:
                  products:
                  - cd75456a-30e4-4912-95be-e743d5ea175b
                  filters:
                    location:
                      postal_code: '57008'
                      city: Cologne
                      street: Media Park
                      street_number: 8a
              Check availability with location & available date dimension:
                value:
                  products:
                  - cd75456a-30e4-4912-95be-e743d5ea175b
                  filters:
                    location:
                      postal_code: '57008'
                      city: Cologne
                      street: Media Park
                      street_number: 8a
                    available_date: '2022-05-01'
      responses:
        '200':
          description: The availability check result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AvailabilityResult'
              examples:
                Response with available products:
                  value:
                    available_products:
                    - cd75456a-30e4-4912-95be-e743d5ea175b
                    check_results:
                    - product_id: cd75456a-30e4-4912-95be-e743d5ea175b
                      matching_hits: 1
                Response with no available products:
                  value:
                    available_products: []
                Response with available and unavailable products:
                  value:
                    availableProducts:
                    - my-product-id-123-2
                    checkResults:
                    - productId: my-product-id-123-1
                      matchingError:
                        msg: Error - Unknown file extension for availability file.
                    - matchingHits: 1
                      productId: my-product-id-123-2
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/validate-availability/{id}:
    get:
      description: Validates an availability file, it returns an array of errors if the file is invalid
      operationId: $validateAvailabilityFile
      summary: validateAvailabilityFile
      tags:
      - Availability API
      parameters:
      - in: path
        name: id
        description: Product ID that the Availability File is attached to
        schema:
          type: string
        required: true
        example: 72c803b2-2e5d-4bd6-bffc-fad998bbbe36
      - in: header
        name: X-Epilot-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
        example: 739224
      responses:
        '200':
          description: The availability get result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateAvailabilityFileResult'
              examples:
                Response when file has no errors:
                  value:
                    number_of_rules_parsed: 10
                    errors: []
                Response when file has errors:
                  value:
                    number_of_rules_parsed: 8
                    errors:
                    - File must be UTF-8 encoded
                    - Line 3 - Postal code is missing or invalid
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/historicMarketPrices:
    get:
      description: Get a series of historic energy prices for a given time period, market and bidding zone.
      operationId: $historicMarketPrices
      summary: historicMarketPrices
      tags:
      - Spot Market API
      security:
      - EpilotPublicAuth: []
      parameters:
      - in: query
        name: market
        schema:
          $ref: '#/components/schemas/SpotMarketType'
        required: true
        description: Market to use. For now, only day ahead prices are supported.
      - in: query
        name: bidding_zone
        schema:
          $ref: '#/components/schemas/SpotMarketBiddingZone'
        required: true
        description: Bidding zone to use. For now, only AT and DE-LU are supported.
      - in: query
        name: frequency
        schema:
          $ref: '#/components/schemas/SpotMarketDataFrequency'
        required: true
        description: Frequency of the price data points in ISO 8601 format.
      - in: query
        name: from
        schema:
          type: string
          anyOf:
          - format: date
          - format: date-time
        required: true
        description: |
          Start of price data in ISO 8601 format.
          If only a date is provided (YYYY-MM-DD) the timzone of the bidding zone is used.
      - in: query
        name: to
        schema:
          type: string
          anyOf:
          - format: date
          - format: date-time
        required: true
        description: |
          End of price data in ISO 8601 format.
          If only a date is provided (YYYY-MM-DD) the timzone of the bidding zone is used.
      responses:
        '200':
          description: Price data returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricMarketPricesResult'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/averageMarketPrice:
    get:
      description: Get the average energy prices for a given time period, market and bidding zone.
      operationId: $averageMarketPrice
      summary: averageMarketPrice
      tags:
      - Spot Market API
      security:
      - EpilotPublicAuth: []
      parameters:
      - in: query
        name: market
        schema:
          $ref: '#/components/schemas/SpotMarketType'
        required: true
        description: Market to use. For now, only day ahead prices are supported.
      - in: query
        name: bidding_zone
        schema:
          $ref: '#/components/schemas/SpotMarketBiddingZone'
        required: true
        description: Bidding zone to use. For now, only AT and DE-LU are supported.
      - in: query
        name: from
        schema:
          type: string
          anyOf:
          - format: date
          - format: date-time
        required: true
        description: |
          Start of price data in ISO 8601 format.
          If only a date is provided (YYYY-MM-DD) the timzone of the bidding zone is used.
      - in: query
        name: to
        schema:
          type: string
          anyOf:
          - format: date
          - format: date-time
        required: true
        description: |
          End of price data in ISO 8601 format.
          If only a date is provided (YYYY-MM-DD) the timzone of the bidding zone is used.
      responses:
        '200':
          description: Price data returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AverageMarketPriceResult'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/integration/{integrationId}/external-catalog:
    post:
      description: Returns the list of available products (including computed prices) based on a given context.
      operationId: $searchExternalCatalog
      security:
      - {}
      - EpilotPublicAuth: []
      parameters:
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: ikom
      summary: searchExternalCatalog
      tags:
      - External Integrations API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchExternalCatalogParams'
      responses:
        '200':
          description: The available products response payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchExternalCatalogResult'
              examples:
                External products:
                  $ref: '#/components/examples/external-catalog-sample-1'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden, no credentials found for the given integration / organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/integration/{integrationId}/providers:search:
    post:
      description: Returns the list of providers available based on a given location
      operationId: $searchProviders
      security:
      - {}
      - EpilotPublicAuth: []
      parameters:
      - in: header
        name: X-Epilot-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
        example: 739224
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: getag
      summary: searchProviders
      tags:
      - External Integrations API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchProvidersParams'
            examples:
              Search providers (power):
                value:
                  type: power
                  postal_code: '04109'
                  city: Leipzig
                  street: Willy-Brandt-Platz
              Search providers (gas):
                value:
                  type: gas
                  postal_code: '57008'
                  city: Cologne
                  street: Media Park
                  street_number: 8a
      responses:
        '200':
          description: The available providers response payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchProvidersResult'
              examples:
                Response with available providers:
                  value:
                  - name: Provider 1
                    code: code#1
                  - name: Provider 2
                    code: code#2
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden, no credentials found for the given integration / organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/integration/{integrationId}/streets:search:
    post:
      description: Returns the list of streets available for a given postal code and city
      operationId: $searchStreets
      security:
      - {}
      - EpilotPublicAuth: []
      parameters:
      - in: header
        name: X-Epilot-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
        example: 739224
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: getag
      summary: searchStreets
      tags:
      - External Integrations API
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchStreetsParams'
            examples:
              Search streets:
                value:
                  postal_code: '04109'
                  city: Leipzig
      responses:
        '200':
          description: The available streets response payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchStreetsResult'
              examples:
                Response with available streets:
                  value:
                  - name: Street 1
                  - name: Street 2
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden, no credentials found for the given integration / organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/public/integration/{integrationId}/compute-price:
    post:
      description: Returns the price for a given product type based on location and consumption
      operationId: $computePrice
      security:
      - {}
      - EpilotPublicAuth: []
      parameters:
      - in: header
        name: X-Epilot-Org-ID
        description: The target Organization Id represented by the caller
        schema:
          type: string
        required: true
        example: 739224
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: getag
      summary: calculatePricingDetails
      tags:
      - External Integrations API
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputePriceParams'
            examples:
              Compute price:
                value:
                  type: power
                  billing_period: monthly
                  postal_code: '04109'
                  consumption: 3500
                  association_id: '123456789'
      responses:
        '200':
          description: The compute price response payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputePriceResult'
              examples:
                Response of computed price:
                  value:
                    amount_total: 100
                    amount_total_decimal: '100.00'
                    amount_static: 500
                    amount_static_decimal: '50.00'
                    amount_variable: 500
                    amount_variable_decimal: '50.00'
                    currency: EUR
                    billing_period: monthly
                    breakdown:
                      static:
                        maintenance_fee:
                          amount: 50
                          amount_decimal: '50.00'
                      variable:
                        offshore_liability_fee:
                          amount: 50
                          amount_decimal: '50.00'
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden, no credentials found for the given integration / organization
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/integration/{integrationId}/credentials:
    get:
      description: Gets the credentials for a given integration / organization
      operationId: $getCredentials
      summary: getCredentials
      tags:
      - External Integrations API
      parameters:
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: getag
      responses:
        '200':
          description: The credentials response payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationCredentialsResult'
              examples:
                Response when credentials:
                  value:
                    username: username
                    password: password
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Credentials not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/integration/{integrationId}/credentials:save:
    put:
      description: Saves the credentials for a given integration / organization
      operationId: $saveCredentials
      summary: saveCredentials
      tags:
      - External Integrations API
      parameters:
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: getag
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SaveIntegrationCredentialsParams'
            examples:
              Save credentials:
                value:
                  username: username
                  password: password
      responses:
        '204':
          description: Credentials saved
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /v1/integration/{integrationId}/credentials:delete:
    delete:
      description: Delete the credentials for a given integration / organization
      operationId: $deleteCredentials
      summary: deleteCredentials
      tags:
      - External Integrations API
      parameters:
      - in: path
        name: integrationId
        description: The integration identifier
        schema:
          $ref: '#/components/schemas/IntegrationId'
        required: true
        example: getag
      responses:
        '204':
          description: Credentials deleted
        '400':
          description: Invalid payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  securitySchemes:
    EpilotAuth:
      type: http
      scheme: bearer
      description: Epilot Bearer Token
    EpilotPublicAuth:
      type: http
      scheme: bearer
      description: Epilot Public Access Bearer Token
      bearerFormat: JWT
  schemas:
    IntegrationId:
      type: string
      enum:
      - getag
      - ikom
    Error:
      required:
      - message
      properties:
        message:
          type: string
          description: Error message
        status:
          type: number
          description: The HTTP status code
        cause:
          type: string
          description: The cause of the error (visible for bad requests - http 400)
    Product:
      type: object
      description: The product entity
      readOnly: true
      additionalProperties: true
      example:
        $ref: '#/components/examples/product'
      properties:
        description:
          type: string
          description: The description for the product
        code:
          type: string
          description: The product code
        type:
          type: string
          description: |
            The type of Product:

            | type | description |
            |----| ----|
            | `product` | Represents a physical good |
            | `service` | Represents a service or virtual product |
          enum:
          - product
          - service
        name:
          type: string
          description: The product main name
        categories:
          type: array
          items:
            type: string
          description: The product categories
        feature:
          type: array
          items:
            type: object
            properties:
              _tags:
                type: array
                description: An arbitrary set of tags attached to a feature
                items:
                  type: string
              feature:
                type: string
        cross_sellable_products:
          type: object
          description: Stores references to products that can be cross sold with the current product.
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/EntityRelation'
        product_images:
          description: Stores references to a set of file images of the product
          oneOf:
          - type: object
            properties:
              $relation:
                type: array
                items:
                  $ref: '#/components/schemas/EntityRelation'
          - type: array
            items:
              $ref: '#/components/schemas/File'
        product_downloads:
          description: |
            Stores references to a set of files downloadable from the product.
            e.g: tech specifications, quality control sheets, privacy policy agreements
          oneOf:
          - type: object
            properties:
              $relation:
                type: array
                items:
                  $ref: '#/components/schemas/EntityRelation'
          - type: array
            items:
              $ref: '#/components/schemas/File'
        price_options:
          type: object
          description: A set of [prices](/api/pricing#tag/simple_price_schema) or [composite prices](/api/pricing#tag/dynamic_price_schema) for the current product.
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/EntityRelation'
        _availability_files:
          type: array
          description: |
            Stores references to the availability files that define where this product is available.
            These files are used when interacting with products via epilot Journeys, thought the AvailabilityCheck block.
          items:
            $ref: '#/components/schemas/File'
        _id:
          type: string
          description: The product id
        _title:
          type: string
          description: The autogenerated product title
        _org_id:
          type: string
          description: The organization id the product belongs to
        _created_at:
          type: string
          description: The product creation date
          readOnly: true
        _updated_at:
          type: string
          description: The product last update date
          readOnly: true
    Opportunity:
      type: object
      description: The opportunity entity
      additionalProperties: true
      example:
        $ref: '#/components/examples/opportunity'
      properties:
        opportunity_number:
          type: string
          description: The opportunity id number for the customer (autogenerated if left blank)
        opportunity_title:
          type: string
          description: The opportunity title for the opportunity
        description:
          type: string
          description: A description to frame this opportunity within its sales process
        status:
          type: string
          description: The opportunity status (defined by the opportunity workflow)
        due_date:
          type: string
          description: The expiration date
        assignee:
          description: The opportunity assignees
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              email:
                type: string
              display_name:
                type: string
              token:
                type: string
              image_uri:
                type: string
              organization_id:
                type: string
              department:
                type: string
              preferred_language:
                type: string
              status:
                type: string
              phone:
                type: string
              email_notification_settings:
                type: object
              is_signature_enabled:
                type: boolean
              created_at:
                type: string
        customer:
          type: object
          description: A list of customers related with the opportunity
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/EntityRelation'
        dates:
          type: array
          description: A set of dates associated with the opportunity
          items:
            oneOf:
            - type: object
              properties:
                _tags:
                  type: array
                  description: The date tags
                  items:
                    type: string
                value:
                  description: The date value
                  type: string
        billing_address:
          description: The billing address
          type: object
          properties:
            $relation_ref:
              description: The relation from which a field is being referenced
              type: array
              items:
                oneOf:
                - type: object
                  properties:
                    entity_id:
                      description: The id of the referenced entity
                      type: string
                    path:
                      description: The path to the target attribute being referenced
                      type: string
        delivery_address:
          description: The delivery address
          type: object
          properties:
            $relation_ref:
              description: The relation from which a field is being referenced
              type: array
              items:
                oneOf:
                - type: object
                  properties:
                    entity_id:
                      description: The id of the referenced entity
                      type: string
                    path:
                      description: The path to the target attribute being referenced
                      type: string
        address:
          description: A list of additional addresses
          type: object
          properties:
            $relation_ref:
              description: The relation from which a field is being referenced
              type: array
              items:
                oneOf:
                - type: object
                  properties:
                    entity_id:
                      description: The id of the referenced entity
                      type: string
                    path:
                      description: The path to the target attribute being referenced
                      type: string
        items:
          type: object
          description: The order relations items, representing quotes or orders associated with the opportunity
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/OrderRelation'
        _org_id:
          type: string
          description: Organization Id the order belongs to
        _id:
          type: string
          description: The opportunity id
          readOnly: true
        _created_at:
          type: string
          description: The opportunity creation date
          readOnly: true
        _updated_at:
          type: string
          description: The opportunity last update date
          readOnly: true
        source_type:
          type: string
          description: Type of source, e.g. journey or manual
          example: journey
        source_id:
          type: string
          description: Identifier for source e.g. journey ID
          example: ce99875f-fba9-4fe2-a8f9-afaf52059051
        source:
          $ref: '#/components/schemas/OpportunitySource'
        _tags:
          type: array
          description: An arbitrary set of tags attached to the opportunity
          items:
            type: string
    Order:
      type: object
      description: The order entity
      additionalProperties: true
      example:
        $ref: '#/components/examples/order-with-simple-prices'
      properties:
        order_number:
          type: string
          description: The order number (customer facing)
        cart_id:
          type: string
          description: The cart id that originated or is associated with the this order
        status:
          $ref: '#/components/schemas/OrderStatus'
        source_type:
          type: string
          description: Type of source, e.g. journey or manual
          example: journey
        source_id:
          type: string
          description: Identifier for source e.g. journey ID
          example: ce99875f-fba9-4fe2-a8f9-afaf52059051
        source:
          $ref: '#/components/schemas/OrderSource'
        metadata:
          $ref: '#/components/schemas/MetaData'
        customer:
          type: object
          description: A list of customers related with the opportunity
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/EntityRelation'
        billing_first_name:
          type: string
          description: The billing contact first name
        billing_last_name:
          type: string
          description: The billing contact last name
        billing_company_name:
          type: string
          description: The billing account name
        billing_vat:
          type: string
          description: The billing account VAT
        billing_email:
          type: string
          description: The billing email
        billing_phone:
          type: string
          description: The billing phone
        billing_address:
          type: array
          description: The billing address
          items:
            $ref: '#/components/schemas/Address'
        currency:
          description: The order main currency
          oneOf:
          - $ref: '#/components/schemas/Currency'
        delivery_address:
          type: array
          description: The delivery address
          items:
            $ref: '#/components/schemas/Address'
        payment_method:
          type: array
          description: The payment method details for the order
          items:
            $ref: '#/components/schemas/PaymentMethod'
        line_items:
          $ref: '#/components/schemas/PriceItems'
        products:
          type: object
          description: The product entities referenced from within `line_items`
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/EntityRelation'
        prices:
          type: object
          description: The price entities referenced from within `line_items`
          properties:
            $relation:
              type: array
              items:
                $ref: '#/components/schemas/EntityRelation'
        amount_subtotal:
          readOnly: true
          type: integer
          description: Total of all items before (discounts or) taxes are applied.
        amount_total:
          readOnly: true
          type: integer
          description: Total of all items after (discounts and) taxes are applied.
        total_details:
          $ref: '#/components/schemas/TotalDetails'
        _org_id:
          type: string
          description: Organization Id the order belongs to
        _id:
          type: string
          description: The order id
          readOnly: true
        _created_at:
          type: string
          description: The order creation date
          readOnly: true
        _updated_at:
          type: string
          description: The order last update date
          readOnly: true
        _tags:
          type: array
          description: An arbitrary set of tags attached to the order
          items:
            type: string
    Price:
      allOf:
      - $ref: '#/components/schemas/PriceConditions'
      type: object
      description: The price entity schema for simple pricing
      example:
        $ref: '#/components/examples/price'
      additionalProperties: true
      readOnly: true
      properties:
        active:
          type: boolean
          description: Whether the price can be used for new purchases.
        is_composite_price:
          description: The flag for prices that contain price components.
          type: boolean
        pricing_model:
          type: string
          description: |
            Describes how to compute the price per period. Either `per_unit`, `tiered_graduated` or `tiered_volume`.
            - `per_unit` indicates that the fixed amount (specified in unit_amount or unit_amount_decimal) will be charged per unit in quantity
            - `tiered_graduated` indicates that the unit pricing will be computed using tiers attribute. The customer pays the price per unit in every range their purchase rises through.
            - `tiered_volume` indicates that the unit pricing will be computed using tiers attribute. The customer pays the same unit price for all purchased units.
            - `tiered_flatfee` While similar to tiered_volume, tiered flat fee charges for the same price (flat) for the entire range instead using the unit price to multiply the quantity.
             - `dynamic_tariff` indicates that the price is dynamically dependend on the (quarter)-hourly spot market price.
            - `external_getag` indicates that the price is influenced by aquisition fees provided by GetAG.
          enum:
          - per_unit
          - tiered_graduated
          - tiered_volume
          - tiered_flatfee
          - dynamic_tariff
          - external_getag
        tiers:
          description: |
            Defines an array of tiers. Each tier has an upper bound, an unit amount and a flat fee.
          type: array
          items:
            $ref: '#/components/schemas/PriceTier'
        description:
          type: string
          description: A brief description of the price.
        long_description:
          type: string
          description: A detailed description of the price. This is shown on the order document and order table.
        sales_tax:
          deprecated: true
          description: |
            The default tax rate applicable to the product.
            This field is deprecated, use the new `tax` attribute.
          oneOf:
          - $ref: '#/components/schemas/SalesTax'
        tax:
          description: The default tax rate applied to the price
          oneOf:
          - type: object
            properties:
              $relation:
                type: array
                items:
                  $ref: '#/components/schemas/EntityRelation'
          - type: array
            items:
              $ref: '#/components/schemas/Tax'
        is_tax_inclusive:
          type: boolean
          description: Specifies whether the price is considered `inclusive` of taxes or not.
        type:
          type: string
          description: One of `one_time` or `recurring` depending on whether the price is for a one-time purchase or a recurring (subscription) purchase.
          enum:
          - one_time
          - recurring
        billing_period:
          description: For recurring prices `billing_period` defines the default extent of the recurrence.
          oneOf:
          - $ref: '#/components/schemas/BillingPeriod'
        unit_amount:
          description: The unit amount in cents to be charged, represented as a whole integer if possible.
          type: number
        unit_amount_decimal:
          description: The unit amount in cents to be charged, represented as a decimal string with at most 12 decimal places.
          type: string
        unit_amount_currency:
          description: Three-letter ISO currency code, in lowercase.
          oneOf:
          - $ref: '#/components/schemas/Currency'
        price_display_in_journeys:
          description: Defines the way the price amount is display in epilot journeys.
          type: string
          enum:
          - show_price
          - show_as_starting_price
          - show_as_on_request
          - estimated_price
        variable_price:
          description: The flag for prices that can be influenced by external variables such as user input.
          type: boolean
        unit:
          description: The unit of measurement used for display purposes and possibly for calculations when the price is variable.
          anyOf:
          - type: string
            description: built-in units
            enum:
            - kw
            - kwh
            - m
            - m2
            - l
            - cubic-meter
            - cubic-meter-h
            - ls
            - a
            - kva
            - w
            - wp
            - kwp
          - type: string
            description: user custom unit
        get_ag:
          $ref: '#/components/schemas/PriceGetAg'
        dynamic_tariff:
          $ref: '#/components/schemas/PriceDynamicTariff'
        _created_at:
          description: The price creation date
          type: string
        _id:
          description: The price id
          type: string
        _title:
          description: The price autogenerated title
          type: string
        _updated_at:
          description: The price last update date
          type: string
        _org_id:
          type: string
          description: The organization id the price belongs to
        _tags:
          type: array
          description: An arbitrary set of tags attached to the price
          items:
            type: string
      required:
      - pricing_model
    CompositePrice:
      allOf:
      - $ref: '#/components/schemas/PriceConditions'
      type: object
      description: The price entity schema for dynamic pricing
      example:
        $ref: '#/components/examples/composite-price'
      additionalProperties: true
      readOnly: true
      properties:
        active:
          type: boolean
          description: Whether the price can be used for new purchases.
        description:
          type: string
          description: A brief description of the price.
        price_components:
          description: A set of [price](/api/pricing#tag/simple_price_schema) components that define the composite price.
          oneOf:
          - type: array
            items:
              $ref: '#/components/schemas/Price'
          - type: object
            properties:
              $relation:
                type: array
                items:
                  $ref: '#/components/schemas/PriceComponentRelation'
        unit_amount_currency:
          description: Three-letter ISO currency code, in lowercase.
          oneOf:
          - $ref: '#/components/schemas/Currency'
        is_composite_price:
          description: The flag for prices that contain price components.
          type: boolean
        _created_at:
          description: The price creation date
          type: string
        _id:
          description: The price id
          type: string
        _title:
          description: The price autogenerated title
          type: string
        _updated_at:
          description: The price last update date
          type: string
        _org_id:
          type: string
          description: The organization id the price belongs to
        _tags:
          type: array
          description: An arbitrary set of tags attached to the composite price
          items:
            type: string
    PriceComponentRelation:
      type: object
      properties:
        entity_id:
          description: The id of the price component
          type: string
        quantity:
          description: |
            By default, the quantity is set to 1, when greater than 1 this value is used as a multiplicative factor.
            E.g: 16 x Solar Modules - Premium price.
          type: number
        _tags:
          type: array
          description: An arbitrary set of tags attached to the composite price - component relation
          items:
            type: string
    MetaData:
      description: A set of key-value pairs used to store meta data information about an entity.
      type: array
      items:
        oneOf:
        - type: object
          description: Key value pair entry
          properties:
            key:
              type: string
              description: Item key
            value:
              type: string
              description: Item value
    PriceInputMappings:
      type: array
      items:
        $ref: '#/components/schemas/PriceInputMapping'
      example:
      - price_id: 589B011B-F8D9-4F8E-AD71-BACE4B543C0F
        frequency_unit: weekly
        value: 1000.245
        name: avg consumption
        metadata:
          journey_title: energy journey
          step_name: avg consumption picker
    PriceInputMapping:
      type: object
      properties:
        price_id:
          type: string
        frequency_unit:
          type: string
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
          - one_time
        name:
          type: string
        value:
          type: number
        metadata:
          type: object
          additionalProperties:
            type: string
      example:
        price_id: 589B011B-F8D9-4F8E-AD71-BACE4B543C0F
        frequency_unit: weekly
        value: 1000.245
        name: avg consumption
        metadata:
          journey_title: energy journey
          step_name: avg consumption picker
    PriceConditions:
      type: object
      properties:
        billing_duration_amount:
          description: The billing period duration
          type: number
        billing_duration_unit:
          description: The billing period duration unit
          type: string
          enum:
          - weeks
          - months
          - years
        notice_time_amount:
          description: The notice period duration
          type: number
        notice_time_unit:
          description: The notice period duration unit
          type: string
          enum:
          - weeks
          - months
          - years
        termination_time_amount:
          description: The termination period duration
          type: number
        termination_time_unit:
          description: The termination period duration unit
          type: string
          enum:
          - weeks
          - months
          - years
        renewal_duration_amount:
          description: The renewal period duration
          type: number
        renewal_duration_unit:
          description: The renewal period duration unit
          type: string
          enum:
          - weeks
          - months
          - years
    ExternalFeeMetadata:
      allOf:
      - $ref: '#/components/schemas/ComputePriceResult'
      type: object
      properties:
        inputs:
          type: object
          additionalProperties: true
    ExternalPriceMetadata:
      allOf:
      - $ref: '#/components/schemas/AverageMarketPriceResult'
      type: object
      properties:
        inputs:
          type: object
          additionalProperties: true
    ExternalFeeMappings:
      type: array
      items:
        $ref: '#/components/schemas/ExternalFeeMapping'
      example:
      - price_id: 589B011B-F8D9-4F8E-AD71-BACE4B543C0F
        frequency_unit: weekly
        amount_total: 1000
        amount_total_decimal: '10.00'
    ExternalFeeMapping:
      type: object
      properties:
        price_id:
          type: string
        frequency_unit:
          type: string
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
          - one_time
        amount_total:
          type: number
        amount_total_decimal:
          type: string
      example:
        price_id: 589B011B-F8D9-4F8E-AD71-BACE4B543C0F
        frequency_unit: weekly
        amount_total: 1000
        amount_total_decimal: '10.00'
    CatalogSearch:
      description: A catalog search payload
      type: object
      properties:
        q:
          description: The query to perform using lucene query syntax.
          type: string
        sort:
          description: The sort expression to sort the results.
          type: string
        from:
          description: The index from which to query, used for pagination purposes. Defaults to 0
          type: number
        size:
          description: The max size of the response, defaults to 2000.
          type: number
        hydrate:
          type: boolean
          description: When true, enables entity hydration to resolve nested $relation references in-place.
          default: false
        availability:
          $ref: '#/components/schemas/AvailabilityFilters'
      example:
        q: _id:1233432 OR _id:123432454 OR _id:23445433
        sort: description ASC
        from: 0
        size: 200
      required:
      - q
    CatalogSearchResult:
      description: The query result payload
      type: object
      properties:
        hits:
          type: number
          description: The number os results returned.
        results:
          type: array
          items:
            anyOf:
            - $ref: '#/components/schemas/Product'
            - $ref: '#/components/schemas/Price'
            - $ref: '#/components/schemas/Coupon'
      example:
        hits: 2
        results:
        - schema: product
          description: product a
        - schema: price
          unit_amount_decimal: '124.342343434'
    SearchProvidersParams:
      description: A search providers payload
      type: object
      properties:
        type:
          description: The provider type (power or gas)
          type: string
          enum:
          - power
          - gas
        postal_code:
          description: The postal code to search for providers
          type: string
        city:
          description: The city to search for providers
          type: string
          nullable: true
        street:
          description: The street to search for providers
          type: string
          nullable: true
        street_number:
          description: The street number to search for providers
          type: string
          nullable: true
      required:
      - type
      - postal_code
    SearchStreetsParams:
      description: A search streets payload
      type: object
      properties:
        postal_code:
          description: The postal code to search for providers
          type: string
        city:
          description: The city to search for providers
          type: string
          nullable: true
      required:
      - city
      - postal_code
    AvailabilityCheckParams:
      description: Availability check request payload
      type: object
      properties:
        products:
          description: Products to check availability
          type: array
          items:
            type: string
            description: Product under availability check
        filters:
          $ref: '#/components/schemas/AvailabilityFilters'
      required:
      - products
      - filters
    AvailabilityResult:
      description: The availability check result payload
      type: object
      properties:
        available_products:
          type: array
          items:
            type: string
            description: Available Products
        check_results:
          description: The check result details
          type: array
          items:
            type: object
            properties:
              product_id:
                type: string
              matching_hits:
                description: The number of rules matched
                type: number
              matching_error:
                description: A set of matching errors when checking availability
                type: object
                additionalProperties: true
            required:
            - product_id
      required:
      - available_products
      example:
        available_products: []
        check_results:
        - product_id: my-product-id-123-1
          matching_hits: 0
        - product_id: my-product-id-123-2
          matching_hits: 0
    ValidateAvailabilityFileError:
      description: The availability rule error
      type: object
      properties:
        line:
          description: The line number where the error was found
          type: number
        msg:
          description: The error message
          type: string
        data:
          description: Data related to the error
          type: string
      required:
      - msg
    IntegrationCredentialsResult:
      $ref: '#/components/schemas/IntegrationAuthCredentials'
    SaveIntegrationCredentialsParams:
      $ref: '#/components/schemas/IntegrationAuthCredentials'
    ComputePriceParamsBase:
      type: object
      properties:
        postal_code:
          description: The postal code to search for providers
          type: string
        consumption_type:
          description: The consumption type
          type: string
          default: household
          enum:
          - household
          - heating_pump
          - night_storage_heating
          - night_storage_heating_common_meter
        consumption:
          description: (DEPRECATED - use consumption_HT) The yearly consumption to compute the price in kWh
          type: number
        consumption_HT:
          description: The yearly HT consumption to compute the price in kWh
          type: number
        consumption_NT:
          description: The yearly NT consumption to compute the price in kWh
          type: number
        association_id:
          description: The association id
          type: string
        billing_period:
          description: The billing period (defaults to monthly)
          type: string
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
          - one_time
          default: monthly
      required:
      - type
      - postal_code
    ComputePriceParamsPower:
      allOf:
      - $ref: '#/components/schemas/ComputePriceParamsBase'
      - type: object
        properties:
          type:
            type: string
            description: The type of energy to compute the price
            enum:
            - power
          meter_type:
            $ref: '#/components/schemas/PowerMeterType'
        description: The compute price payload for power
    ComputePriceParamsGas:
      allOf:
      - $ref: '#/components/schemas/ComputePriceParamsBase'
      - type: object
        properties:
          type:
            type: string
            description: The type of energy to compute the price
            enum:
            - gas
          concession_type:
            $ref: '#/components/schemas/GasConcessionType'
        description: The compute price payload for gas
    SignatureMeta:
      type: object
      description: Signature meta data payload
      properties:
        signature:
          description: The signature hash of the payload
          type: string
        timestamp:
          description: Timestamp of the signature
          type: number
      required:
      - timestamp
      - signature
    ComputedBasePrice:
      type: object
      description: The computed price
      properties:
        amount:
          description: The computed price
          type: number
        amount_decimal:
          description: The computed price as decimal
          type: string
        unit_amount:
          description: The computed unit price
          type: number
        unit_amount_decimal:
          description: The computed unit price as decimal
          type: string
      required:
      - amount
      - amount_decimal
    ComputePriceParams:
      description: The compute price payload
      oneOf:
      - $ref: '#/components/schemas/ComputePriceParamsPower'
      - $ref: '#/components/schemas/ComputePriceParamsGas'
    GasConcessionType:
      description: The concession type for gas
      type: string
      enum:
      - standard
      - special
    PowerMeterType:
      type: string
      description: The meter type for power
      enum:
      - classic
      - smart
      - digital
    DynamicTariffMode:
      description: The mode of the dynamic tariff. `day_ahead_market` uses the Day-Ahead spot market price as base.
      type: string
      enum:
      - day_ahead_market
      - manual
    DynamicTariffInterval:
      description: The interval of the tariff if a spot market price is used as base.
      type: string
      enum:
      - hourly
      - monthly_average
    ComputedPriceBreakdown:
      type: object
      description: Price breakdown
      properties:
        static:
          description: The static price breakdown
          $ref: '#/components/schemas/ComputedPriceComponents'
        variable:
          description: The variable price breakdown (day and night)
          $ref: '#/components/schemas/ComputedPriceComponents'
        variable_ht:
          description: The variable price breakdown for the day period
          $ref: '#/components/schemas/ComputedPriceComponents'
        variable_nt:
          description: The variable price breakdown for the night period
          $ref: '#/components/schemas/ComputedPriceComponents'
    ComputedPriceComponents:
      type: object
      description: The computed price components
      additionalProperties:
        $ref: '#/components/schemas/ComputedBasePrice'
    ComputePriceResult:
      type: object
      properties:
        amount_total:
          description: The computed total price
          type: number
        amount_total_decimal:
          description: The computed total price as decimal
          type: string
        amount_static:
          description: The computed static price
          type: number
        amount_static_decimal:
          description: The computed static price as decimal
        amount_variable_ht:
          description: The computed variable price, for the day period
          type: number
        amount_variable_decimal_ht:
          description: The computed variable price, for the day period, as decimal
          type: string
        unit_amount_variable_ht:
          description: The computed unit price, for the day period
          type: number
        unit_amount_variable_decimal_ht:
          description: The computed unit price, for the day period, as decimal
          type: string
        amount_variable_nt:
          description: The computed variable price, for the night period
          type: number
        amount_variable_decimal_nt:
          description: The computed variable price, for the night period, as decimal
          type: string
        unit_amount_variable_nt:
          description: The computed unit price, for the night period
          type: number
        unit_amount_variable_decimal_nt:
          description: The computed unit price, for the night period, as decimal
          type: string
        currency:
          description: The currency of the computed price (three-letter ISO currency code)
          oneOf:
          - $ref: '#/components/schemas/Currency'
        billing_period:
          description: The billing period
          type: string
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
          - one_time
        breakdown:
          $ref: '#/components/schemas/ComputedPriceBreakdown'
        _meta:
          $ref: '#/components/schemas/SignatureMeta'
      required:
      - amount_total
      - amount_total_decimal
      - currency
      - billing_period
      - breakdown
    SpotMarketBiddingZone:
      description: The bidding zone for a spot market price.
      type: string
      enum:
      - AT
      - DE-LU
    SpotMarketType:
      description: The market for a spot market price.
      type: string
      enum:
      - day_ahead
    SpotMarketDataFrequency:
      description: The aggregation frequency for a series of spot market price data.
      type: string
      enum:
      - PT15M
      - PT1H
      - P1D
      - P1M
    HistoricMarketPricesResult:
      type: object
      properties:
        market:
          $ref: '#/components/schemas/SpotMarketType'
        bidding_zone:
          $ref: '#/components/schemas/SpotMarketBiddingZone'
        prices:
          type: array
          items:
            $ref: '#/components/schemas/HistoricMarketPriceRecord'
      required:
      - market
      - bidding_zone
      - prices
    AverageMarketPriceResult:
      type: object
      properties:
        market:
          $ref: '#/components/schemas/SpotMarketType'
        bidding_zone:
          $ref: '#/components/schemas/SpotMarketBiddingZone'
        price:
          $ref: '#/components/schemas/AverageMarketPriceRecord'
        _meta:
          $ref: '#/components/schemas/SignatureMeta'
      required:
      - market
      - bidding_zone
      - price
    AverageMarketPriceRecord:
      description: An average market price over a given period in time.
      allOf:
      - $ref: '#/components/schemas/BaseMarketPriceRecord'
      - type: object
        properties:
          timestamp:
            type: string
            description: An ISO 8601 interval in the format 'start/end'.
            example: 2025-01-01T00:00:00Z/2025-01-31T23:59:59Z
    HistoricMarketPriceRecord:
      description: A market price at a given point in time.
      allOf:
      - $ref: '#/components/schemas/BaseMarketPriceRecord'
      - type: object
        properties:
          timestamp:
            type: string
            format: date-time
            description: ISO 8601 timestamp of the price record in UTC.
    BaseMarketPriceRecord:
      type: object
      properties:
        unit_amount:
          type: number
          description: Cost in Cents, e.g. 12.3 for 12,3 Cents = 0.123€.
          example: 12.3
        unit_amount_decimal:
          type: string
          description: Cost in decimal format, e.g. 0.123€.
          example: '0.123'
        unit_amount_currency:
          $ref: '#/components/schemas/Currency'
      required:
      - timestamp
      - unit_amount
      - unit_amount_decimal
      - unit_amount_currency
    OAuthCredentials:
      type: object
      properties:
        client_id:
          description: The OAuth client ID
          type: string
          example: client_id_123
        client_secret:
          description: The OAuth client secret
          type: string
          example: client_secret_456
        authorization_url:
          description: The URL to obtain OAuth tokens
          type: string
          example: https://api.example.com/oauth/token
        grant_type:
          description: The OAuth grant type
          type: string
          enum:
          - client_credentials
          default: client_credentials
        scope:
          description: The OAuth scope
          type: string
          example: read:user write:user
        access_token:
          description: The OAuth access token
          type: string
          example: access_token_789
        access_token_expires_in:
          description: The expiration time of the OAuth access token in seconds
          type: number
          example: 3600
        access_token_expires_at:
          description: The expiration time of the OAuth access token
          type: number
          example: 1715731200
      required:
      - client_id
      - client_secret
      - authorization_url
      - grant_type
    BasicAuthCredentials:
      type: object
      properties:
        username:
          description: The username
          type: string
          example: username
        password:
          description: The password
          type: string
          example: '123456'
      required:
      - username
      - password
    BasicAuthIntegration:
      type: object
      allOf:
      - $ref: '#/components/schemas/BasicAuthCredentials'
      - type: object
        properties:
          auth_type:
            type: string
            enum:
            - basic_auth
          base_url:
            description: The base URL
            type: string
            example: https://api.example.com
    OAuthIntegration:
      type: object
      properties:
        auth_type:
          type: string
          enum:
          - oauth
        oauth:
          $ref: '#/components/schemas/OAuthCredentials'
        base_url:
          description: The base URL
          type: string
          example: https://api.example.com
      required:
      - auth_type
      - oauth
    IntegrationAuthCredentials:
      description: The auth credentials for external integrations
      type: object
      oneOf:
      - $ref: '#/components/schemas/BasicAuthIntegration'
      - $ref: '#/components/schemas/OAuthIntegration'
    SearchStreetsResult:
      description: The search providers payload
      type: array
      items:
        $ref: '#/components/schemas/Street'
    SearchProvidersResult:
      description: The search providers payload
      type: array
      items:
        $ref: '#/components/schemas/Provider'
    Provider:
      description: The provider entity
      type: object
      properties:
        name:
          description: The provider name
          type: string
        code:
          description: The provider code
          type: string
      required:
      - name
      - code
    Street:
      description: The street entity
      type: object
      properties:
        street:
          description: The street name
          type: string
      required:
      - street
    ValidateAvailabilityFileResult:
      description: The availability map file result payload
      type: object
      properties:
        status:
          description: The status of the validation
          type: string
          enum:
          - success
          - error
        rules_parsed_count:
          description: The number of rules successfully parsed
          type: number
        errors:
          description: The errors found on the file
          type: array
          items:
            $ref: '#/components/schemas/ValidateAvailabilityFileError'
      required:
      - status
      - rules_parsed_count
      - errors
      example:
        rules_parsed_count: 8
        errors:
        - File must be UTF-8 encoded
        - Error on line 3 - street_number must be of type number
        - Error on line 6 - start_date cant be greater than end_date
    CartDto:
      description: A valid cart payload from a client.
      properties:
        metadata:
          $ref: '#/components/schemas/MetaData'
        customer:
          $ref: '#/components/schemas/Customer'
        billing_address:
          $ref: '#/components/schemas/Address'
        delivery_address:
          $ref: '#/components/schemas/Address'
        source_type:
          type: string
          description: type of source, e.g. journey or manual
          example: journey
        source_id:
          type: string
          description: identifier for source e.g. journey ID
          example: ce99875f-fba9-4fe2-a8f9-afaf52059051
        source:
          $ref: '#/components/schemas/OrderSource'
        additional_addresses:
          type: array
          items:
            $ref: '#/components/schemas/Address'
        payment_method:
          $ref: '#/components/schemas/PaymentMethod'
        line_items:
          $ref: '#/components/schemas/PriceItemsDto'
        files:
          type: array
          description: An array of file IDs, already upload into the File API, that are related with this cart
          items:
            type: string
            description: a string representing a file ID as received from the File API
        status:
          $ref: '#/components/schemas/OrderStatus'
        tags:
          type: array
          items:
            type: string
        journey_data:
          type: object
          additionalProperties: true
        consents:
          type: object
          additionalProperties: true
      required:
      - line_items
    CheckoutCart:
      type: object
      description: The cart checkout request payload
      properties:
        cart:
          anyOf:
          - description: the cart id
            type: string
          - $ref: '#/components/schemas/CartDto'
        redeemed_promos:
          type: array
          items:
            $ref: '#/components/schemas/RedeemedPromo'
        mode:
          $ref: '#/components/schemas/CheckoutMode'
    CheckoutCartResult:
      type: object
      description: The cart checkout result
      properties:
        order:
          $ref: '#/components/schemas/Order'
    CheckoutMode:
      type: string
      description: The checkout mode for the cart checkout.
      enum:
      - create_order
      - create_invoice
      - create_quote
    OrderStatus:
      type: string
      enum:
      - draft
      - quote
      - placed
      - cancelled
      - completed
      description: |

        | status      | description |
        |-------------|-------|
        | `draft`     | ​​Starting state for all orders, at this point we can still edit the order |
        | `quote`     | The order is in a quoting phase, bound to an expiration date |
        | `placed`    | The order has been paid and can now be fulfilled (shipped, delivered, complete) or canceled |
        | `cancelled` | The order has been cancelled |
        | `completed` | The order is now closed and finalized |
    BasePriceItemCommon:
      description: Represents the common keys in BasePriceItem and BasePriceItemDto
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/MetaData'
        quantity:
          type: integer
          description: The quantity of products being purchased.
        product_id:
          type: string
          description: The id of the product.
        price_id:
          type: string
          description: The id of the price.
        is_composite_price:
          description: The flag for prices that contain price components.
          type: boolean
        description:
          type: string
          description: An arbitrary string attached to the price item. Often useful for displaying to users. Defaults to product name.
        price_mappings:
          description: Price mapping information required to compute totals
          $ref: '#/components/schemas/PriceInputMappings'
        is_tax_inclusive:
          type: boolean
          description: Specifies whether the price is considered `inclusive` of taxes or not.
        _product:
          description: The snapshot of the product.
          allOf:
          - $ref: '#/components/schemas/Product'
    PriceItemsDto:
      description: A valid set of product prices, quantities, (discounts) and taxes from a client.
      type: array
      items:
        anyOf:
        - $ref: '#/components/schemas/PriceItemDto'
        - $ref: '#/components/schemas/CompositePriceItemDto'
    BasePriceItemDto:
      description: Represents a valid base price item from a client.
      type: object
      allOf:
      - $ref: '#/components/schemas/BasePriceItemCommon'
      properties:
        external_fees_mappings:
          description: External fees mapping information required to compute totals, for some pricing models
          $ref: '#/components/schemas/ExternalFeeMappings'
        external_fees_metadata:
          description: External fees metadata information required to compute totals, for some pricing models
          $ref: '#/components/schemas/ExternalFeeMetadata'
        external_price_metadata:
          description: External price metadata information required to compute totals, for some pricing models
          $ref: '#/components/schemas/ExternalPriceMetadata'
        _immutable_pricing_details:
          description: Immutable pricing details for external products/prices
          $ref: '#/components/schemas/PricingDetails'
        coupon_ids:
          type: array
          description: The ids of the coupons applicable to the price item
          readOnly: true
          items:
            type: string
            description: The id of the coupon
        taxes:
          type: array
          description: The taxes applied to the price item.
          readOnly: true
          items:
            oneOf:
            - $ref: '#/components/schemas/TaxAmountDto'
        recurrences:
          type: array
          description: The taxes applied to the price item.
          readOnly: true
          items:
            oneOf:
            - $ref: '#/components/schemas/RecurrenceAmountDto'
        _coupons:
          type: array
          description: The coupons applicable to the price item
          readOnly: true
          items:
            oneOf:
            - $ref: '#/components/schemas/Coupon'
    PriceItemDto:
      allOf:
      - $ref: '#/components/schemas/BasePriceItemDto'
      description: Represents a price input to the pricing library.
      type: object
      properties:
        type:
          type: string
          description: One of `one_time` or `recurring` depending on whether the price is for a one-time purchase or a recurring (subscription) purchase.
          enum:
          - one_time
          - recurring
        billing_period:
          type: string
          description: The price billing period.
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
        unit_amount:
          type: integer
          description: The unit amount value
        unit_amount_gross:
          type: integer
          description: The unit gross amount value.
        unit_amount_currency:
          $ref: '#/components/schemas/Currency'
        unit_amount_decimal:
          description: The unit amount in cents to be charged, represented as a decimal string with at most 12 decimal places.
          type: string
        pricing_model:
          type: string
          description: |
            Describes how to compute the price per period. Either `per_unit`, `tiered_graduated` or `tiered_volume`.
            - `per_unit` indicates that the fixed amount (specified in unit_amount or unit_amount_decimal) will be charged per unit in quantity
            - `tiered_graduated` indicates that the unit pricing will be computed using tiers attribute. The customer pays the price per unit in every range their purchase rises through.
            - `tiered_volume` indicates that the unit pricing will be computed using tiers attribute. The customer pays the same unit price for all purchased units.
            - `tiered_flatfee` indicates that the unit pricing will be computed using tiers attribute. The customer pays the same unit price for all purchased units.
            - `dynamic_tariff` indicates that the price is dynamically dependend on the (quarter)-hourly spot market price.
            - `external_getag` indicates that the price is influenced by aquisition fees provided by GetAG.
          enum:
          - per_unit
          - tiered_graduated
          - tiered_volume
          - tiered_flatfee
          - dynamic_tariff
          - external_getag
        _price:
          description: The snapshot of the price linked to the price item.
          allOf:
          - $ref: '#/components/schemas/Price'
      required:
      - pricing_model
    CompositePriceItemDto:
      allOf:
      - $ref: '#/components/schemas/BasePriceItemDto'
      description: Represents a composite price input to the pricing library.
      type: object
      properties:
        item_components:
          type: array
          description: Contains price item configurations, per price component, when the main price item is a [composite price](/api/pricing#tag/dynamic_price_schema).
          items:
            $ref: '#/components/schemas/PriceItemDto'
        selected_price_component_ids:
          type: array
          description: The ids of the price components that should be selected for the price calculation.
          items:
            type: string
            description: The id of the price component
        price_component_coupon_ids:
          type: object
          description: The map of coupon ids applicable to the price components
          readOnly: true
          additionalProperties:
            type: array
            items:
              type: string
              description: The id of the coupon
        _price:
          $ref: '#/components/schemas/CompositePrice'
    TaxAmountDto:
      type: object
      description: A valid tax rate from a client.
      properties:
        rate:
          type: string
          deprecated: true
          description: |
            The deprecated tax rate applied.
            This field has been deprecated in favor of the new Tax Management. You should use the new tax fields pointing to a proper tax entity.
        tax:
          $ref: '#/components/schemas/Tax'
    OrderSource:
      type: object
      description: The order generation source
      properties:
        http:
          type: string
          description: Link path for the source
          example: /app/v2/journey-builder/editor/db7f6940-994b-11ec-a46d-9f1824ff2939
        title:
          type: string
          description: Title for the source
          example: 'Journey: PH Journey'
    OpportunitySource:
      type: object
      description: The opportunity generation source
      properties:
        http:
          type: string
          description: Link path for the source
          example: /app/v2/journey-builder/editor/db7f6940-994b-11ec-a46d-9f1824ff2939
        title:
          type: string
          description: Title for the source
          example: 'Journey: PH Journey'
    RecurrenceAmountDto:
      type: object
      description: An amount associated with a specific recurrence.
      allOf:
      - $ref: '#/components/schemas/Amounts'
      properties:
        type:
          type: string
          description: The price type.
        billing_period:
          type: string
          description: The price billing period.
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
        unit_amount_gross:
          type: integer
          description: The unit gross amount value.
        unit_amount_net:
          type: integer
          description: The unit net amount value.
        amount_tax:
          type: integer
          description: Total of all items taxes, with same recurrence.
      required:
      - amount_subtotal
      - amount_total
      - amount_subtotal_decimal
      - amount_total_decimal
    Cart:
      description: Supports shopping for products and services until ready for checkout.
      allOf:
      - $ref: '#/components/schemas/Amounts'
      properties:
        id:
          type: string
          description: The cart identifier
        org_id:
          type: string
          description: The user's Organization Id the cart belongs to
          readOnly: true
        status:
          enum:
          - open
          - complete
          - expired
          type: string
          readOnly: true
          description: |
            The status of the Cart:
            - open - the cart checkout is still in progress. Payment processing has not started
            - complete - the cart checkout is complete. Payment processing may still be in progress
            - expired - the cart checkout has expired. No further processing will occur
        customer:
          $ref: '#/components/schemas/Customer'
        billing_address:
          $ref: '#/components/schemas/Address'
        delivery_address:
          $ref: '#/components/schemas/Address'
        metadata:
          $ref: '#/components/schemas/MetaData'
        line_items:
          $ref: '#/components/schemas/PriceItems'
        total_details:
          $ref: '#/components/schemas/TotalDetails'
        created_at:
          readOnly: true
          type: string
          format: date-time
        updated_at:
          readOnly: true
          type: string
          format: date-time
    Currency:
      type: string
      description: |
        Three-letter ISO currency code, in lowercase. Must be a supported currency.
        ISO 4217 CURRENCY CODES as specified in the documentation: https://www.iso.org/iso-4217-currency-codes.html
      example: EUR
    OrderRelation:
      type: object
      description: An order relation reference
      properties:
        entity_id:
          type: string
          description: The relation order id
        _tags:
          type: array
          items:
            type: string
            description: The tags array associated with the relation
    OrderPayload:
      type: object
      description: Order Entity Payload
      additionalProperties: true
      properties:
        status:
          $ref: '#/components/schemas/OrderStatus'
        line_items:
          $ref: '#/components/schemas/PriceItemsDto'
        source_type:
          type: string
          description: type of source, e.g. journey or manual
          example: journey
        currency:
          $ref: '#/components/schemas/Currency'
        contact:
          readOnly: true
          type: string
          description: The id of an existing contact.
        billing_first_name:
          type: string
        billing_last_name:
          type: string
        billing_company_name:
          type: string
        billing_vat:
          type: string
        billing_email:
          type: string
        billing_phone:
          type: string
        billing_address:
          type: array
          items:
            $ref: '#/components/schemas/Address'
        delivery_address:
          type: array
          items:
            $ref: '#/components/schemas/Address'
        payment_method:
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethod'
        redeemed_promos:
          type: array
          items:
            $ref: '#/components/schemas/RedeemedPromo'
        _tags:
          type: array
          items:
            type: string
    PriceItems:
      description: Tracks a set of product prices, quantities, (discounts) and taxes.
      type: array
      items:
        anyOf:
        - $ref: '#/components/schemas/PriceItem'
        - $ref: '#/components/schemas/CompositePriceItem'
    CompositePriceItem:
      allOf:
      - $ref: '#/components/schemas/BasePriceItem'
      description: Represents a composite price input to the pricing library.
      type: object
      properties:
        item_components:
          type: array
          description: Contains price item configurations, per price component, when the main price item is a [composite price](/api/pricing#tag/dynamic_price_schema).
          items:
            $ref: '#/components/schemas/PriceItem'
        total_details:
          $ref: '#/components/schemas/TotalDetails'
    BasePriceItem:
      description: Represents a price item
      type: object
      example:
        $ref: '#/components/examples/price-item/value'
      allOf:
      - $ref: '#/components/schemas/Amounts'
      - $ref: '#/components/schemas/BasePriceItemCommon'
      properties:
        _id:
          type: string
          description: price item id
          readOnly: true
        unit_amount:
          type: integer
          description: The unit amount value
          readOnly: true
        unit_amount_decimal:
          description: The unit amount in cents to be charged, represented as a decimal string with at most 12 decimal places.
          type: string
          readOnly: true
        before_discount_unit_amount:
          type: integer
          description: The unit amount before any discount is applied
          readOnly: true
        before_discount_unit_amount_decimal:
          type: string
          description: The unit amount before any discount is applied, represented as a decimal string with at most 12 decimal places.
          readOnly: true
        before_discount_unit_amount_gross:
          type: integer
          description: The unit gross amount before any discount is applied
          readOnly: true
        before_discount_unit_amount_gross_decimal:
          type: string
          description: The unit gross amount before any discount is applied, represented as a decimal string with at most 12 decimal places.
          readOnly: true
        before_discount_unit_amount_net:
          type: integer
          description: The unit net amount before any discount is applied
          readOnly: true
        before_discount_unit_amount_net_decimal:
          type: string
          description: The unit net amount before any discount is applied, represented as a decimal string with at most 12 decimal places.
          readOnly: true
        unit_discount_amount:
          type: integer
          description: The discount amount applied for each unit
          readOnly: true
        unit_discount_amount_decimal:
          type: string
          description: The discount amount applied for each unit represented as a decimal string
          readOnly: true
        unit_amount_gross:
          type: integer
          description: The unit gross amount value.
          readOnly: true
        unit_amount_gross_decimal:
          type: string
          description: The unit gross amount value.
          readOnly: true
        unit_amount_net:
          type: integer
          description: Net unit amount without taxes or discounts.
          readOnly: true
        unit_amount_net_decimal:
          type: string
          description: Net unit amount without taxes or discounts.
          readOnly: true
        unit_discount_amount_net:
          type: integer
          description: The net discount amount applied for each unit
          readOnly: true
        unit_discount_amount_net_decimal:
          type: string
          description: The net discount amount applied for each unit represented as a decimal string
          readOnly: true
        tax_discount_amount:
          type: integer
          description: The discount amount applied to the tax
          readOnly: true
        tax_discount_amount_decimal:
          type: string
          description: The discount amount applied to the tax represented as a decimal string
          readOnly: true
        discount_amount_net:
          type: integer
          description: The net discount amount applied
          readOnly: true
        discount_amount_net_decimal:
          type: string
          description: The net discount amount applied represented as a decimal string
          readOnly: true
        amount_tax:
          type: integer
          description: Total tax amount for this line item.
        before_discount_tax_amount:
          type: integer
          description: The tax amount before any discount is applied
          readOnly: true
        before_discount_tax_amount_decimal:
          type: string
          description: The tax amount before any discount is applied represented as a decimal string
          readOnly: true
        currency:
          $ref: '#/components/schemas/Currency'
        _price:
          description: The price snapshot data.
          anyOf:
          - $ref: '#/components/schemas/Price'
          - $ref: '#/components/schemas/CompositePrice'
        taxes:
          type: array
          description: The taxes applied to the price item.
          readOnly: true
          items:
            oneOf:
            - $ref: '#/components/schemas/TaxAmount'
        recurrences:
          type: array
          description: The sum of amounts of the price items by recurrence.
          readOnly: true
          items:
            oneOf:
            - $ref: '#/components/schemas/RecurrenceAmount'
        _coupons:
          type: array
          description: The coupons applicable to the price item
          readOnly: true
          items:
            oneOf:
            - $ref: '#/components/schemas/Coupon'
        on_request_approved:
          type: boolean
          description: >-
            When set to true on a `_price` displayed as OnRequest (`show_as_on_request: 'on_request'`) this flag means the price has been approved and can now be displayed to the customer. This flag is only valid for prices shown as
            'on_request'.
    Amounts:
      type: object
      properties:
        amount_subtotal:
          type: integer
          description: Total of all items before (discounts or) taxes are applied.
        amount_subtotal_decimal:
          type: string
          description: Total of all items before (discounts or) taxes are applied, as a string with all the decimal places.
        amount_total:
          type: integer
          description: Total of all items after (discounts and) taxes are applied.
        amount_total_decimal:
          type: string
          description: Total of all items after (discounts and) taxes are applied, as a string with all the decimal places.
        discount_amount:
          type: integer
          description: The discount amount.
          readOnly: true
        discount_amount_decimal:
          type: string
          description: The discount amount as a string with all the decimal places.
          readOnly: true
        cashback_amount:
          type: integer
          description: The cashback amount.
          readOnly: true
        cashback_amount_decimal:
          type: string
          description: The cashback amount as a string with all the decimal places.
          readOnly: true
        cashback_period:
          type: string
          description: The cashback period, for now it's limited to either 0 months or 12 months
          enum:
          - '0'
          - '12'
          nullable: true
        after_cashback_amount_total:
          type: integer
          description: Total amount after cashback is applied.
          readOnly: true
        after_cashback_amount_total_decimal:
          type: string
          description: Total amount after cashback is applied as a string with all the decimal places.
          readOnly: true
        discount_percentage:
          type: integer
          description: The discount percentage, if the applied coupon had a percentage type.
          readOnly: true
        before_discount_amount_total:
          type: integer
          description: Total amount before discount is applied.
          readOnly: true
        before_discount_amount_total_decimal:
          type: string
          description: Total amount before discount is applied as a string with all the decimal places.
          readOnly: true
    PriceItem:
      allOf:
      - $ref: '#/components/schemas/BasePriceItem'
      description: Represents a price item
      type: object
      example:
        $ref: '#/components/examples/price-item/value'
      properties:
        type:
          type: string
          description: One of `one_time` or `recurring` depending on whether the price is for a one-time purchase or a recurring (subscription) purchase.
          enum:
          - one_time
          - recurring
        billing_period:
          type: string
          description: The price billing period.
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
        pricing_model:
          $ref: '#/components/schemas/PricingModel'
        tiers_details:
          type: array
          items:
            $ref: '#/components/schemas/TierDetails'
        get_ag:
          $ref: '#/components/schemas/PriceGetAg'
        dynamic_tariff:
          $ref: '#/components/schemas/PriceDynamicTariff'
      required:
      - pricing_model
    TaxAmount:
      type: object
      description: A tax amount associated with a specific tax rate.
      readOnly: true
      properties:
        amount:
          type: integer
          description: The tax amount.
        rate:
          type: string
          description: The tax rate applied. With the release of the tax management feature this field is being deprecated in favor of the tax field.
          deprecated: true
        rateValue:
          type: number
          description: |
            The tax rate value applied (represented as an integer percentage, e.g, 19 or 7).
            With the release of the tax management feature this field is being deprecated in favor of the tax field.
          example: 19
          deprecated: true
        tax:
          description: The tax applied.
          oneOf:
          - $ref: '#/components/schemas/Tax'
    TaxAmountBreakdown:
      type: object
      description: A tax amount associated with a specific tax rate.
      readOnly: true
      properties:
        amount:
          type: integer
          description: The tax amount.
        rate:
          type: string
          description: The tax rate applied. With the release of the tax manager feature this field is being deprecated in favor of the tax field.
          deprecated: true
        rateValue:
          type: number
          description: The tax rate value applied. With the release of the tax manager feature this field is being deprecated in favor of the tax field.
          deprecated: true
        tax:
          $ref: '#/components/schemas/TaxBreakdownInfo'
    RecurrenceAmount:
      type: object
      description: An amount associated with a specific recurrence.
      readOnly: true
      allOf:
      - $ref: '#/components/schemas/Amounts'
      properties:
        type:
          type: string
          description: The price type.
        billing_period:
          type: string
          description: The price billing period.
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
        unit_amount_gross:
          type: integer
          description: The unit gross amount value.
        unit_amount_net:
          type: integer
          description: The unit net amount value.
        amount_tax:
          type: integer
          description: Total of all items taxes, with same recurrence.
        amount_tax_decimal:
          type: string
          description: Total of all items taxes, with same recurrence, as a string with all the decimal places.
        currency:
          $ref: '#/components/schemas/Currency'
          description: Currency
      required:
      - amount_subtotal
      - amount_total
      - amount_subtotal_decimal
      - amount_total_decimal
    CashbackAmount:
      type: object
      description: An amount associated with a specific cashback period.
      properties:
        cashback_period:
          type: string
          description: The cashback period, for now it's limited to either 0 months or 12 months
          enum:
          - '0'
          - '12'
          nullable: true
        amount_total:
          type: integer
          description: The sum of all cashbacks for a specific cashback period
      required:
      - cashback_period
      - amount_total
    RecurrenceAmountWithTax:
      type: object
      description: An amount associated with a specific recurrence.
      properties:
        type:
          type: string
          description: The price type.
        billing_period:
          type: string
          description: The price billing period.
          enum:
          - weekly
          - monthly
          - every_quarter
          - every_6_months
          - yearly
        amount_total:
          type: integer
          description: Total amount of items with same recurrence.
        amount_subtotal:
          type: integer
          description: Total amount of items with same recurrence, excluding taxes.
        amount_tax:
          type: integer
          description: Total tax amount of items with same recurrence.
        tax:
          type: object
          description: The taxes applied to the price item.
          items:
            oneOf:
            - $ref: '#/components/schemas/TaxAmountBreakdown'
      required:
      - amount_subtotal
      - amount_total
    TotalDetails:
      type: object
      description: The total details with tax (and discount) aggregated totals.
      readOnly: true
      properties:
        amount_shipping:
          type: integer
          description: This is the sum of all the price item shipping amounts.
        amount_tax:
          type: integer
          description: This is the sum of all the price item tax amounts.
        breakdown:
          type: object
          description: Breakdown of individual tax (and discount) amounts that add up to the totals.
          properties:
            taxes:
              type: array
              description: The aggregated price items tax amount per rate.
              items:
                oneOf:
                - $ref: '#/components/schemas/TaxAmountBreakdown'
            recurrences:
              type: array
              description: The aggregated price items tax amount per rate.
              items:
                oneOf:
                - $ref: '#/components/schemas/RecurrenceAmount'
            cashbacks:
              type: array
              description: The list of cashback sums for each cashback period.
              items:
                oneOf:
                - $ref: '#/components/schemas/CashbackAmount'
            recurrencesByTax:
              type: array
              description: The aggregated price items recurrences by tax rate
              items:
                oneOf:
                - $ref: '#/components/schemas/RecurrenceAmountWithTax'
    PricingDetails:
      type: object
      description: The result from the calculation of a set of price items.
      properties:
        items:
          type: array
          items:
            anyOf:
            - $ref: '#/components/schemas/PriceItem'
            - $ref: '#/components/schemas/CompositePriceItem'
        amount_subtotal:
          type: integer
          description: Total of all items before (discounts or) taxes are applied.
        amount_total:
          type: integer
          description: Total of all items after (discounts and) taxes are applied.
        unit_amount_gross:
          type: integer
          description: The unit gross amount value.
        unit_amount_net:
          type: integer
          description: The unit net amount value.
        amount_tax:
          type: integer
          description: This is the sum of all the price item tax amounts.
        total_details:
          $ref: '#/components/schemas/TotalDetails'
        currency:
          $ref: '#/components/schemas/Currency'
        redeemed_promos:
          type: array
          items:
            $ref: '#/components/schemas/RedeemedPromo'
    PromoCodeValidationResponse:
      type: object
      description: The result from the validation of a set of promo codes.
      properties:
        matched_coupons:
          type: array
          items:
            $ref: '#/components/schemas/BaseCoupon'
    PricingDetailsResponse:
      type: object
      description: The result from the calculation of a set of price items.
      allOf:
      - $ref: '#/components/schemas/PricingDetails'
    BillingPeriod:
      type: string
      enum:
      - weekly
      - monthly
      - every_quarter
      - every_6_months
      - yearly
    SalesTax:
      type: string
      enum:
      - nontaxable
      - reduced
      - standard
    AvailabilityLocation:
      type: object
      properties:
        street:
          type: string
          description: The first line of the address. Typically the street address or PO Box number.
        street_number:
          type: string
          description: The second line of the address. Typically the number of the apartment, suite, or unit.
        postal_code:
          type: string
          description: The postal code for the address.
        city:
          type: string
          description: The name of the city, district, village, or town.
        country:
          type: string
          description: The name of the country.
    AvailabilityDate:
      type: object
      properties:
        available_start_date:
          type: string
          format: date
          description: The availability interval start date
          example: '2017-07-21'
        available_end_date:
          type: string
          format: date
          description: The availability interval end date
          example: '2017-07-21'
    AvailabilityFilters:
      description: Availability filters dimensions
      type: object
      properties:
        location:
          $ref: '#/components/schemas/AvailabilityLocation'
        available_date:
          type: string
          format: date
          example: '2017-07-21'
          description: A value to be matched against the availability window (start & end date)
      required:
      - location
    Address:
      type: object
      additionalProperties: true
      properties:
        _tags:
          type: array
          items:
            type: string
          example:
          - billing
        street:
          type: string
          description: The first line of the address. Typically the street address or PO Box number.
          nullable: true
        street_number:
          type: string
          description: The second line of the address. Typically the number of the apartment, suite, or unit.
          nullable: true
        postal_code:
          type: string
          description: The postal code for the address.
          nullable: true
        city:
          type: string
          description: The name of the city, district, village, or town.
          nullable: true
        country:
          type: string
          description: The two-letter code for the country of the address.
          nullable: true
        additional_info:
          type: string
          description: An additional description for the address
          nullable: true
        company_name:
          type: string
          description: the company name, usually used as extra delivery instructions
          nullable: true
        first_name:
          type: string
          description: the first name of the recipient, usually used as extra delivery instructions
          nullable: true
        last_name:
          type: string
          description: the last name of the recipient, usually used as extra delivery instructions
          nullable: true
        salutation:
          type: string
          description: the salutation of the recipient, usually used as extra delivery instructions
          nullable: true
        title:
          type: string
          description: the title of the recipient, usually used as extra delivery instructions
          nullable: true
    PaymentMethod:
      type: object
      description: |
        A PaymentMethod represent your customer's payment instruments.
      properties:
        type:
          type: string
          description: The type of the PaymentMethod.
        details:
          type: object
          description: Contains relevant data associated with the payment method type.
          additionalProperties: true
    Customer:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
        company_name:
          type: string
        vat_id:
          type: string
        email:
          type: string
          description: A valid email identifying the customer.
        phone:
          type: string
    File:
      type: object
      additionalProperties: true
      properties:
        _id:
          type: string
        filename:
          type: string
        mime_type:
          type: string
        versions:
          type: array
          items:
            type: object
            additionalProperties: true
            properties:
              s3ref:
                type: object
                properties:
                  bucket:
                    type: string
                  key:
                    type: string
                required:
                - bucket
                - key
            required:
            - s3ref
        _schema:
          type: string
        _org:
          type: string
        _created_at:
          type: string
          format: date-time
        _updated_at:
          type: string
          format: date-time
        _title:
          type: string
        $relation:
          $ref: '#/components/schemas/EntityRelation'
      required:
      - versions
      - _id
      - _schema
      - _created_at
      - _updated_at
      - _org
      - mime_type
      - filename
    EntityId:
      type: string
      format: uuid
    EntityItem:
      type: object
      properties:
        _id:
          $ref: '#/components/schemas/EntityId'
        _title:
          type: string
          description: Title of entity
        _org:
          type: string
          description: Organization Id the entity belongs to
        _schema:
          type: string
        _tags:
          type: array
          items:
            type: string
        _created_at:
          type: string
          format: date-time
        _updated_at:
          type: string
          format: date-time
      required:
      - _id
      - _title
      - _org
      - _schema
      - _created_at
      - _updated_at
      example:
        _id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        _org: '123'
        _schema: contact
        _tags:
        - example
        - mock
        _created_at: 2021-02-09T12:41:43.662Z
        _updated_at: 2021-02-09T12:41:43.662Z
    EntityRelation:
      type: object
      additionalProperties: true
      properties:
        entity_id:
          type: string
        _tags:
          type: array
          items:
            type: string
    Tax:
      type: object
      description: the tax configuration
      additionalProperties: true
      required:
      - type
      - rate
      - _id
      - _title
      - _org
      - _schema
      - _created_at
      - _updated_at
      properties:
        _id:
          $ref: '#/components/schemas/EntityId'
        _title:
          type: string
          description: Title of entity
        _org:
          type: string
          description: Organization Id the entity belongs to
        _schema:
          type: string
        _tags:
          type: array
          items:
            type: string
        _created_at:
          type: string
          format: date-time
        _updated_at:
          type: string
          format: date-time
        type:
          type: string
          enum:
          - VAT
          - GST
          - Custom
        description:
          type: string
        rate:
          type: number
        active:
          type: boolean
        region:
          type: string
        region_label:
          type: string
      example:
        _id: 3fa85f64-5717-4562-b3fc-2c963f66afa6
        type: VAT
        description: Tax description
        active: 'true'
        region: DE
        region_label: Germany
        _org: '123'
        _schema: tax
        _tags:
        - example
        - mock
        _created_at: 2021-02-09T12:41:43.662Z
        _updated_at: 2021-02-09T12:41:43.662Z
    TaxBreakdownInfo:
      type: object
      properties:
        rate:
          type: number
        type:
          type: string
          enum:
          - VAT
          - GST
          - Custom
        _id:
          type: string
    BaseCoupon:
      type: object
      description: The coupon configuration
      additionalProperties: true
      required:
      - name
      - _id
      - _title
      - _org
      - _schema
      - _created_at
      - _updated_at
      properties:
        _id:
          $ref: '#/components/schemas/EntityId'
          readOnly: true
        _title:
          type: string
          description: The auto-generated title for the title
          readOnly: true
        _org:
          type: string
          description: Organization Id the entity belongs to
          readOnly: true
        _schema:
          type: string
          enum:
          - coupon
          readOnly: true
          description: The schema of the entity, for coupons it is always `coupon`
        _tags:
          type: array
          items:
            type: string
        _created_at:
          type: string
          format: date-time
          readOnly: true
          description: The creation date for the opportunity
        _updated_at:
          type: string
          format: date-time
          readOnly: true
          description: The date the coupon was last updated
        name:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        type:
          type: string
          enum:
          - fixed
          - percentage
        category:
          type: string
          enum:
          - discount
          - cashback
        percentage_value:
          type: string
          description: Use if type is set to percentage. The percentage to be discounted, represented as a whole integer.
          nullable: true
        fixed_value:
          description: Use if type is set to fixed. The fixed amount in cents to be discounted, represented as a whole integer.
          type: number
        fixed_value_decimal:
          description: Use if type is set to fixed. The unit amount in cents to be discounted, represented as a decimal string with at most 12 decimal places.
          type: string
        fixed_value_currency:
          description: Use if type is set to fixed. Three-letter ISO currency code, in lowercase.
          oneOf:
          - $ref: '#/components/schemas/Currency'
        cashback_period:
          type: string
          description: The cashback period, for now it's limited to either 0 months or 12 months
          enum:
          - '0'
          - '12'
          nullable: true
        active:
          type: boolean
        requires_promo_code:
          type: boolean
          description: Whether the coupon requires a promo code to be applied
        prices:
          description: The prices associated with the coupon. Will hold price entities if hydrated, relations otherwise.
          oneOf:
          - type: object
            properties:
              $relation:
                type: array
                items:
                  $ref: '#/components/schemas/EntityRelation'
          - type: array
            items:
              $ref: '#/components/schemas/Price'
      example:
        _id: 123e4567-e89b-12d3-a456-426614174000
        _schema: coupon
        _org: org_12345
        _created_at: '2024-01-15T10:00:00.000Z'
        _updated_at: '2024-01-20T12:00:00.000Z'
        _title: Sample Coupon
        name: Sample Coupon
        type: fixed
        fixed_value: 555
        fixed_value_currency: USD
        fixed_value_decimal: '5.55'
        active: true
        prices:
          $relation:
          - entity_id: abc12345-def6-7890-gh12-ijklmnopqrst
            _tags:
            - discount
            - special
            _schema: price
    Coupon:
      allOf:
      - $ref: '#/components/schemas/BaseCoupon'
      type: object
      properties:
        promo_codes:
          type: array
          items:
            $ref: '#/components/schemas/PromoCode'
        promo_code_usage:
          type: object
          additionalProperties:
            type: number
          description: Map of ids of promo codes with their usage count
    CouponWithoutPromoCodes:
      allOf:
      - $ref: '#/components/schemas/BaseCoupon'
    PromoCode:
      type: object
      required:
      - id
      - code
      properties:
        id:
          type: string
          description: The id of the promo code
        code:
          type: string
          description: The code of the promo code
        has_usage_limit:
          type: boolean
          description: Whether the promo code has a usage limit
        usage_limit:
          type: number
          nullable: true
          description: The usage limit of the promo code
      example:
        id: 123e4567-e89b-12d3-a456-426614174000
        code: '123456'
        has_usage_limit: true
        usage_limit: 10
    RedeemedPromo:
      type: object
      required:
      - code
      - coupons
      properties:
        code:
          description: The promocode inserted by the customer to redeem the promotion
          type: string
        coupons:
          description: The coupons that got redeemed with received the code
          type: array
          items:
            $ref: '#/components/schemas/CouponWithoutPromoCodes'
    PriceTier:
      type: object
      properties:
        up_to:
          type: number
          nullable: true
        flat_fee_amount:
          type: number
        flat_fee_amount_decimal:
          type: string
        unit_amount:
          type: number
        unit_amount_decimal:
          type: string
        display_mode:
          $ref: '#/components/schemas/PriceTierDisplayMode'
    PriceTierEnhanced:
      allOf:
      - $ref: '#/components/schemas/PriceTier'
      type: object
      properties:
        unit_amount_gross:
          type: number
        unit_amount_gross_decimal:
          type: string
        flat_fee_amount_gross:
          type: number
        flat_fee_amount_gross_decimal:
          type: string
    PriceTierDisplayMode:
      type: string
      enum:
      - hidden
      - on_request
    PricingModel:
      type: string
      description: |
        Describes how to compute the price per period. Either `per_unit`, `tiered_graduated` or `tiered_volume`.
        - `per_unit` indicates that the fixed amount (specified in unit_amount or unit_amount_decimal) will be charged per unit in quantity
        - `tiered_graduated` indicates that the unit pricing will be computed using tiers attribute. The customer pays the price per unit in every range their purchase rises through.
        - `tiered_volume` indicates that the unit pricing will be computed using tiers attribute. The customer pays the same unit price for all purchased units.
        - `tiered_flatfee` While similar to tiered_volume, tiered flat fee charges for the same price (flat) for the entire range instead using the unit price to multiply the quantity.
        - `dynamic_tariff` indicates that the price is dynamically dependend on the (quarter)-hourly spot market price.
        - `external_getag` indicates that the price is influenced by aquisition fees provided by GetAG.
      enum:
      - per_unit
      - tiered_graduated
      - tiered_volume
      - tiered_flatfee
      - dynamic_tariff
      - external_getag
    MarkupPricingModel:
      type: string
      description: |
        Describes how to compute the markup per period. Either `per_unit`, `tiered_volume` or `tiered_flatfee`.
        - `per_unit` indicates that the fixed amount (specified in unit_amount or unit_amount_decimal) will be charged per unit in quantity
        - `tiered_volume` indicates that the unit pricing will be computed using tiers attribute. The customer pays the same unitary price for all purchased units.
        - `tiered_flatfee` While similar to tiered_volume, tiered flat fee charges for the same price (flat) for the entire range instead using the unit price to multiply the quantity.
      enum:
      - per_unit
      - tiered_volume
      - tiered_flatfee
    TypeGetAg:
      type: string
      enum:
      - base_price
      - work_price
    TariffTypeGetAg:
      type: string
      enum:
      - HT
      - NT
    ConsumptionTypeGetAg:
      type: string
      enum:
      - household
      - heating_pump
      - night_storage_heating
      - night_storage_heating_common_meter
    ProductCategory:
      type: string
      enum:
      - power
      - gas
    PriceGetAg:
      type: object
      properties:
        category:
          $ref: '#/components/schemas/ProductCategory'
        markup_pricing_model:
          $ref: '#/components/schemas/MarkupPricingModel'
        type:
          $ref: '#/components/schemas/TypeGetAg'
        tariff_type:
          $ref: '#/components/schemas/TariffTypeGetAg'
        consumption_type:
          $ref: '#/components/schemas/ConsumptionTypeGetAg'
        concession_type:
          oneOf:
          - $ref: '#/components/schemas/GasConcessionType'
        meter_type:
          oneOf:
          - $ref: '#/components/schemas/PowerMeterType'
        markup_tiers:
          description: |
            Defines an array of tiers. Each tier has an upper bound, an unit amount and a flat fee.
          type: array
          items:
            $ref: '#/components/schemas/PriceTier'
        markup_amount:
          type: number
        markup_amount_decimal:
          type: string
        markup_amount_net:
          type: number
        markup_amount_net_decimal:
          type: string
        unit_amount_gross:
          type: number
        unit_amount_gross_decimal:
          type: string
        unit_amount_net:
          type: number
        unit_amount_net_decimal:
          type: string
      required:
      - category
      - markup_amount
      - markup_amount_decimal
      - unit_amount_gross
      - unit_amount_net
    PriceDynamicTariff:
      type: object
      properties:
        mode:
          $ref: '#/components/schemas/DynamicTariffMode'
        interval:
          $ref: '#/components/schemas/DynamicTariffInterval'
        average_price:
          type: number
        average_price_decimal:
          type: string
        markup_amount:
          type: number
          description: The markup amount, configured in Epilot, in cents.
        markup_amount_decimal:
          type: string
          description: The markup amount, configured in Epilot, as a string with full precision.
        markup_amount_net:
          type: number
          description: The markup amount net, configured in Epilot, in cents.
        markup_amount_net_decimal:
          type: string
          description: The markup amount net, configured in Epilot, as a string with full precision.
        markup_amount_gross:
          type: number
          description: The markup amount gross, configured in Epilot, in cents.
        markup_amount_gross_decimal:
          type: string
          description: The markup amount gross, configured in Epilot, as a string with full precision.
        unit_amount_net:
          type: number
          description: The unit amount net for the energy price in cents, it's provided by an external provider.
        unit_amount_net_decimal:
          type: string
          description: The unit amount net for the energy price as a string with full precision, it's provided by an external provider.
        unit_amount_gross:
          type: number
          description: The unit amount gross for the energy price in cents, it's provided by an external provider.
        unit_amount_gross_decimal:
          type: string
          description: The unit amount gross for the energy price as a string with full precision, it's provided by an external provider.
      required:
      - mode
      - markup
      - markup_decimal
      - average_price
      - average_price_decimal
    TierDetails:
      type: object
      properties:
        quantity:
          type: number
        unit_amount:
          type: number
        unit_amount_gross:
          type: number
        unit_amount_net:
          type: number
        amount_total:
          type: number
        amount_subtotal:
          type: number
        amount_tax:
          type: number
        unit_amount_decimal:
          type: string
      required:
      - quantity
      - unit_amount
      - unit_amount_gross
      - unit_amount_net
      - amount_total
      - amount_subtotal
      - amount_tax
      - unit_amount_decimal
    SearchExternalCatalogParams:
      type: object
      properties:
        context:
          anyOf:
          - $ref: '#/components/schemas/JourneyContext'
      additionalProperties: false
      required:
      - context
    JourneyContext:
      type: object
      additionalProperties: false
      properties:
        journey_id:
          type: string
          description: The ID of the journey.
          example: 8d0a2235-97ce-42d0-88a3-e374634ca44e
        journey_name:
          type: string
          description: The name of the journey.
          example: journey name
        journey_tags:
          type: array
          items:
            type: string
          description: The tags of the journey.
        journey_url_params:
          type: object
          description: The URL parameters of the journey.
          additionalProperties: true
        current_step_name:
          description: The name of the step where the products selection is happening.
          type: string
          example: step name
        current_block_name:
          type: string
          example: block name
          description: The name of the block where the products selection is happening.
        steps_data:
          type: array
          description: The steps of the journey.
          items:
            type: object
            properties:
              step_name:
                type: string
                description: The name of the step.
              step_index:
                type: integer
                description: The index of the step.
              blocks:
                type: object
                description: The data of the blocks.
                additionalProperties: true
                example:
                  Adresse:
                    countryCode: DE
                    city: Koblenz
                    zipCode: '56068'
                    streetName: Am Alten Hospital
                    houseNumber: '123'
            additionalProperties: false
            required:
            - step_name
            - step_index
            - blocks
      required:
      - journey_id
      - journey_name
      - current_step_name
      - current_block_name
      - steps_data
    SearchExternalCatalogResult:
      type: object
      properties:
        hits:
          type: number
          description: The number os results returned.
        results:
          type: array
          items:
            $ref: '#/components/schemas/ExternalCatalogItem'
      required:
      - results
      - hits
    ExternalCatalogItem:
      type: object
      description: An external product & price information (already computed) from an external catalog.
      properties:
        pricing_details:
          $ref: '#/components/schemas/PricingDetails'
        _meta:
          $ref: '#/components/schemas/SignatureMeta'
      required:
      - pricing_details
      - _meta
  examples:
    checkout-with-cart-id:
      value:
        mode: create_order
        cart: pZ324jnndf
    checkout-with-transient-cart:
      value:
        mode: create_order
        cart:
          customer:
            first_name: john
            last_name: doe
            company_name: company limited
            vat_id: '123892321'
            email: johndoe@company.com
            phone: '+44233242423'
          billing_address:
            street1: wallstreet
            street2: 1
            city: new york city
            country: united states
            country_code: US
            additional_info: headquarters office
          delivery_address:
            street1: berverly hills avenue
            street2: block 1
            city: berverly hills
            country: california
            country_code: CA
            additional_info: remote cowork place
          line_items:
          - quantity: 3
            product_id: b7185fb7-b10f-4875-bda7-288631446555
            price_id: df240bab-9f71-4a9a-a9e1-59f18827dbf9
          - quantity: 2
            product_id: 607d2952-8f3e-484f-a82b-4880528b7f55
            price_id: 7b028fdf-0b0a-4077-a8f1-d0cbbd14b7cf
    checkout-result:
      value:
        order:
          _id: d1ZoC1FwZ6
          type: Draft
          cart_id: p0ZoB1FwH6
          order_number: 20201021-234324
          _org_id: 123
          metadata:
          - key: journey-id
            value: 8d0a2235-97ce-42d0-88a3-e374634ca44e
          billing_first_name: john
          billing_last_name: doe
          billing_company_name: i me and myself
          billing_vat: '234823948'
          billing_email: johndoe@nowhere.com
          currency: EUR
          billing_phone: '+1234234545'
          billing_address: wallstreet, 1
          billing_contact: villy or zilly
          line_items:
          - id: mSjGCTfn8w
            metadata:
            - cart_id: p0ZoB1FwH6
            description: Wallbox Premium - Premium Price
            currency: EUR
            unit_amount: 78900
            amount_subtotal: 50000
            amount_total: 61500
            quantity: 1
            product_id: b7185fb7-b10f-4875-bda7-288631446555
            price_id: df240bab-9f71-4a9a-a9e1-59f18827dbf9
            taxes:
            - amount: 11500
              rate: MwSt. 23%
            _price:
              _id: df240bab-9f71-4a9a-a9e1-59f18827dbf9
              unit_amount: € 789
              type: one_time
              active: true
              sales_tax: standard
              is_tax_inclusive: true
              description: Winter Sale
              billing_scheme: per_unit
              _created_at: 2021-11-10T18:02:58.318Z
              _updated_at: 2021-11-10T18:02:58.318Z
              _title: Winter Sale
          - id: mZkGCTfn6p
            metadata:
            - cart_id: p0ZoB1FwH6
            description: Wallbox Basic with Full Add-ons - Basic Price
            currency: EUR
            unit_amount: 78900
            amount_subtotal: 50000
            amount_total: 53500
            quantity: 1
            product_id: zzzzzz-b10f-4875-bda7-288631446555
            price_id: zzzzz-9f71-4a9a-a9e1-59f18827dbf9
            taxes:
            - amount: 3500
              rate: MwSt. 7%
            _price:
              _id: zzzzz-9f71-4a9a-a9e1-59f18827dbf9
              unit_amount: € 789
              type: one_time
              active: true
              sales_tax: standard
              is_tax_inclusive: true
              description: Winter Sale
              billing_scheme: per_unit
              _created_at: 2021-11-10T18:02:58.318Z
              _updated_at: 2021-11-10T18:02:58.318Z
              _title: Winter Sale
          amount_subtotal: 100000
          amount_total: 115000
          total_details:
            amount_shipping: 10000
            amount_tax: 15000
            breakdown:
            - amount: 11500
              rate: MwSt. 23%
            - amount: 3500
              rate: MwSt. 7%
          _created_at: 2021-11-10T18:02:58.318Z
          _updated_at: 2021-11-10T18:02:58.318Z
    order-with-simple-prices:
      value:
        order_number: OR 2022/742701
        status: quote
        source:
          title: manual
          href: null
        source_type: manual
        _schema: order
        _title: OR 2022/742701
        expires_at: '2022-06-30T16:17:00.000Z'
        line_items:
        - price_id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
          product_id: a7f4771a-6368-4d77-bb01-71f1e4902de5
          taxes:
          - tax:
              _id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
              rate: '19'
              _schema: tax
              _org: '728'
              _created_at: '2021-09-24T15:06:13.859Z'
              _updated_at: '2022-04-04T17:36:15.273Z'
              _title: Tax Standard
              type: VAT
              active: true
              region: DE
              description: Standard
            amount: 255462
          _price:
            _id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
            unit_amount: 100000
            unit_amount_currency: EUR
            unit_amount_decimal: '1000'
            sales_tax: standard
            is_tax_inclusive: true
            price_display_in_journeys: show_price
            type: one_time
            billing_period: weekly
            billing_duration_unit: months
            notice_time_unit: months
            termination_time_unit: months
            renewal_duration_unit: months
            _schema: price
            _title: Solar Panel Module
            description: Solar Panel Module
            active: true
            tax:
              $relation:
              - entity_id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
            _org: '728'
            _created_at: '2022-06-03T16:04:10.369Z'
            _updated_at: '2022-06-03T16:04:10.369Z'
          _product:
            _id: a7f4771a-6368-4d77-bb01-71f1e4902de5
            type: product
            _schema: product
            _title: Solar Panel with Battery Storage
            name: Solar Panel with Battery Storage
            code: SOLAR-BATT
            active: true
            description: 'Solar Panel with battery solution, optimized for max efficiency. '
            feature:
            - _tags: []
              feature: Eco-Panels
            - _tags: []
              feature: Remote Management Platform
            - _tags: []
              feature: Battery Remote Control
            - _tags: []
              feature: Mobile App
            cross_sellable_products:
              $relation:
              - entity_id: 068d0713-a650-4668-9ed2-eca7be31e337
                _schema: product
                _tags: []
              - entity_id: c8402ee7-fba9-4f3d-bffd-6803ca655782
                _tags: []
            product_images:
              $relation:
              - entity_id: 37bdeaaa-65fe-403e-9894-65b01cd277f1
              - entity_id: 56dde657-795c-41bb-bf53-98fd586b7e6e
            product_downloads:
              $relation:
              - entity_id: 64211361-8759-414b-81c0-afbf24f83aa9
            _org: '728'
            _created_at: '2022-06-03T15:52:27.512Z'
            _updated_at: '2022-06-03T16:05:15.029Z'
            price_options:
              $relation:
              - entity_id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
                _tags: []
              - entity_id: 146aa2cc-f267-4d5e-bda4-cbe2669b7741
                _tags: []
          quantity: 16
          currency: EUR
          description: Solar Panel Module
          unit_amount: 100000
          unit_amount_net: 84034
          amount_subtotal: 1344538
          amount_total: 1600000
        - price_id: 146aa2cc-f267-4d5e-bda4-cbe2669b7741
          product_id: a7f4771a-6368-4d77-bb01-71f1e4902de5
          taxes:
          - tax:
              _id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
              rate: '19'
              _schema: tax
              _org: '728'
              _created_at: '2021-09-24T15:06:13.859Z'
              _updated_at: '2022-04-04T17:36:15.273Z'
              _title: Tax Standard
              type: VAT
              active: true
              region: DE
              description: Standard
            amount: 31933
          _price:
            _id: 146aa2cc-f267-4d5e-bda4-cbe2669b7741
            unit_amount: 50000
            unit_amount_currency: EUR
            unit_amount_decimal: '500'
            sales_tax: standard
            is_tax_inclusive: true
            price_display_in_journeys: show_price
            type: one_time
            billing_period: weekly
            billing_duration_unit: months
            notice_time_unit: months
            termination_time_unit: months
            renewal_duration_unit: months
            _schema: price
            _title: Battery Module 500amps
            description: Battery Module 500amps
            active: true
            tax:
              $relation:
              - entity_id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
            _org: '728'
            _created_at: '2022-06-03T16:05:04.391Z'
            _updated_at: '2022-06-03T16:05:04.391Z'
          _product:
            _id: a7f4771a-6368-4d77-bb01-71f1e4902de5
            type: product
            _schema: product
            _title: Solar Panel with Battery Storage
            name: Solar Panel with Battery Storage
            code: SOLAR-BATT
            active: true
            description: 'Solar Panel with battery solution, optimized for max efficiency. '
            feature:
            - _tags: []
              feature: Eco-Panels
            - _tags: []
              feature: Remote Management Platform
            - _tags: []
              feature: Battery Remote Control
            - _tags: []
              feature: Mobile App
            cross_sellable_products:
              $relation:
              - entity_id: 068d0713-a650-4668-9ed2-eca7be31e337
                _schema: product
                _tags: []
              - entity_id: c8402ee7-fba9-4f3d-bffd-6803ca655782
                _tags: []
            product_images:
              $relation:
              - entity_id: 37bdeaaa-65fe-403e-9894-65b01cd277f1
              - entity_id: 56dde657-795c-41bb-bf53-98fd586b7e6e
            product_downloads:
              $relation:
              - entity_id: 64211361-8759-414b-81c0-afbf24f83aa9
            _org: '728'
            _created_at: '2022-06-03T15:52:27.512Z'
            _updated_at: '2022-06-03T16:05:15.029Z'
            price_options:
              $relation:
              - entity_id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
                _tags: []
              - entity_id: 146aa2cc-f267-4d5e-bda4-cbe2669b7741
                _tags: []
          quantity: 4
          currency: EUR
          description: Battery Module 500amps
          unit_amount: 50000
          unit_amount_net: 42017
          amount_subtotal: 168067
          amount_total: 200000
        - price_id: d88a8763-3e3d-4fc7-a7a5-2bc9117148bf
          product_id: 065d6618-cc59-45f4-8e3a-700edf6813c3
          _price:
            _id: d88a8763-3e3d-4fc7-a7a5-2bc9117148bf
            unit_amount: 12055
            type: recurring
            billing_period: monthly
            billing_duration_amount: '8'
            billing_duration_unit: years
            notice_time_amount: '3'
            notice_time_unit: months
            termination_time_amount: '2'
            termination_time_unit: months
            renewal_duration_amount: '1'
            renewal_duration_unit: years
            active: true
            sales_tax: reduced
            is_tax_inclusive: true
            description: Monthly
            billing_scheme: per_unit
            _schema: price
            _org: '728'
            _created_at: '2021-11-10T14:40:27.695Z'
            _updated_at: '2021-12-14T18:16:33.248Z'
            _title: Monthly
            unit_amount_currency: EUR
            unit_amount_decimal: '120.55456634'
          _product:
            _id: 065d6618-cc59-45f4-8e3a-700edf6813c3
            name: 'Smartmeter: Schneider Electric PM5000 LCD Energiemessgerät / 3-phasig'
            code: '1312378123'
            _tags:
            - wallbox
            - review demo
            - '1'
            categories:
            - Power
            type: product
            active: true
            feature:
            - _tags: []
              feature: Bis zu 11 kW Ladeleistung (5x schneller laden)
            - _tags: []
              feature: Integrierter MID Zähler für eine kilowattstundengenaue Abrechnung*
            - _tags: []
              feature: Konfigurierbare Ladeleistung
            - _tags: []
              feature: Zugangskontrolle über RFID-Karten
            - _tags: []
              feature: Kommunikation über LAN
            - _tags: []
              feature: New feature
            _schema: product
            _org: '728'
            _created_at: '2021-11-30T11:05:19.484Z'
            _updated_at: '2022-01-13T09:18:29.944Z'
            _title: 'Smartmeter: Schneider Electric PM5000 LCD Energiemessgerät / 3-phasig'
            price_options:
              $relation:
              - entity_id: 5264b089-fc6a-4a91-9a2a-80c673958faa
              - entity_id: d88a8763-3e3d-4fc7-a7a5-2bc9117148bf
            product_images:
              $relation:
              - entity_id: 16729e60-c527-44ef-93c9-c68b6acf1224
          quantity: 1
          currency: EUR
          description: Monthly
          unit_amount: 12055
          unit_amount_net: 11267
          amount_subtotal: 11267
          amount_total: 12055
          taxes:
          - rate: reduced
            amount: 789
        - price_id: e1ddf75a-d0d1-40b4-a07e-56e292867c88
          product_id: 5b9f05b7-f0f8-49c2-8a8d-0f8f923d6382
          _price:
            _id: e1ddf75a-d0d1-40b4-a07e-56e292867c88
            unit_amount: 9900
            unit_amount_currency: EUR
            unit_amount_decimal: '99'
            sales_tax: standard
            is_tax_inclusive: true
            price_display_in_journeys: show_price
            type: recurring
            billing_period: yearly
            billing_duration_unit: months
            notice_time_unit: months
            termination_time_unit: months
            renewal_duration_unit: months
            _schema: price
            _title: Yearly payment
            description: Yearly payment
            active: true
            _org: '728'
            _created_at: '2022-02-07T22:58:39.884Z'
            _updated_at: '2022-02-07T22:58:39.884Z'
          _product:
            _id: 5b9f05b7-f0f8-49c2-8a8d-0f8f923d6382
            _schema: product
            _title: Yearly Payment Product
            name: Yearly Payment Product
            type: product
            active: true
            price_options:
              $relation:
              - entity_id: e1ddf75a-d0d1-40b4-a07e-56e292867c88
                _tags: []
            _org: '728'
            _created_at: '2022-02-07T22:58:44.162Z'
            _updated_at: '2022-02-08T09:34:08.026Z'
            description: Hier steht die Produktbeschreibung die sich auf dem Dokument, was generiert wird, gezogen wird.
          quantity: 1
          currency: EUR
          description: Yearly payment
          unit_amount: 9900
          unit_amount_net: 8319
          amount_subtotal: 8319
          amount_total: 9900
          taxes:
          - rate: standard
            amount: 1581
        amount_subtotal: 1532191
        amount_total: 1821955
        total_details:
          amount_tax: 289764
          breakdown:
            taxes:
            - tax:
                _id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
                rate: '19'
                _schema: tax
                _org: '728'
                _created_at: '2021-09-24T15:06:13.859Z'
                _updated_at: '2022-04-04T17:36:15.273Z'
                _title: Tax Standard
                type: VAT
                active: true
                region: DE
                description: Standard
              amount: 287395
            recurrences:
            - type: one_time
              amount_subtotal: 1512605
              amount_total: 1800000
              amount_tax: 287395
            - type: recurring
              billing_period: monthly
              amount_subtotal: 11267
              amount_total: 12055
              amount_tax: 789
            - type: recurring
              billing_period: yearly
              amount_subtotal: 8319
              amount_total: 9900
              amount_tax: 1581
        currency: EUR
        payment_method:
        - type: IBAN
          details: {}
        billing_contact:
          $relation:
          - entity_id: 1834a54e-b68f-4f7f-a98a-fe16f11bc2a5
            _tags: []
        billing_first_name: Joao
        billing_last_name: Pinho
        billing_email: j.pinho@epilot.cloud
        billing_company_name: epilot cloud
        billing_address:
        - _tags: []
          street: Im Media Park
          street_number: 8a
          postal_code: '52000'
          city: Cologne
          country: DE
          additional_info: ''
        delivery_address: []
        dates:
        - _tags:
          - Instalation Date
          dates: ''
          value: '2022-06-30T16:29:00.000Z'
        _id: 4c7c9562-f8f0-4af0-a3a6-6aebc5571a6e
        _org: '728'
        _created_at: '2022-06-03T16:29:46.303Z'
        _updated_at: '2022-06-03T16:29:46.303Z'
    order-with-simple-prices-request:
      value:
        order_number: OR 2022/742701
        status: quote
        source:
          title: manual
          href: null
        source_type: manual
        _schema: order
        _title: OR 2022/742701
        expires_at: '2022-06-30T16:17:00.000Z'
        line_items:
        - price_id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
          product_id: a7f4771a-6368-4d77-bb01-71f1e4902de5
          quantity: 16
        - price_id: 146aa2cc-f267-4d5e-bda4-cbe2669b7741
          product_id: a7f4771a-6368-4d77-bb01-71f1e4902de5
          quantity: 4
        - price_id: d88a8763-3e3d-4fc7-a7a5-2bc9117148bf
          product_id: 065d6618-cc59-45f4-8e3a-700edf6813c3
          quantity: 1
        - price_id: e1ddf75a-d0d1-40b4-a07e-56e292867c88
          product_id: 5b9f05b7-f0f8-49c2-8a8d-0f8f923d6382
          quantity: 1
        currency: EUR
        payment_method:
        - type: IBAN
          details: {}
        billing_contact:
          $relation:
          - entity_id: 1834a54e-b68f-4f7f-a98a-fe16f11bc2a5
            _tags: []
        billing_first_name: Joao
        billing_last_name: Pinho
        billing_email: j.pinho@epilot.cloud
        billing_company_name: epilot cloud
        billing_address:
        - _tags: []
          street: Im Media Park
          street_number: 8a
          postal_code: '52000'
          city: Cologne
          country: DE
          additional_info: ''
        delivery_address: []
        dates:
        - _tags:
          - Instalation Date
          dates: ''
          value: '2022-06-30T16:29:00.000Z'
        _id: 4c7c9562-f8f0-4af0-a3a6-6aebc5571a6e
        _org: '728'
        _created_at: '2022-06-03T16:29:46.303Z'
        _updated_at: '2022-06-03T16:29:46.303Z'
    order-with-composite-prices:
      value:
        metadata:
        - key: _origin
          value: journey checkout
        _tags:
        - journey
        - automation
        status: quote
        order_number: OREabZxnO
        billing_first_name: Paulo
        billing_last_name: Henriques
        billing_email: ph@ph1.pt
        billing_address:
        - street: Bernauer Str.
          street_number: '1'
          city: Berlin
          postal_code: '10115'
          country: DE
          additional_info: '1'
        delivery_address:
        - street: Bernauer Str.
          street_number: '1'
          city: Berlin
          postal_code: '10115'
          country: DE
          additional_info: '1'
        payment_method:
        - type: BankTransfer
          details:
            label: Überweisung
        currency: EUR
        line_items:
        - product_id: 73f857a4-0fbc-4aa6-983f-87c0d6d410a6
          price_id: c2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
          quantity: 3
          currency: EUR
          item_components:
          - price_id: comp1-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
            product_id: target-price-product-id
            quantity: 3
            unit_amount: 15000
            unit_amount_currency: EUR
            unit_amount_decimal: '150.00'
            amount_subtotal: 45000
            amount_total: 47700
            taxes:
            - tax:
                _id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
                type: VAT
                active: true
                region: DE
                _schema: tax
                _title: Tax Without Behaviour
                description: Without Behaviour
                rate: '6'
                _org: '739224'
                _created_at: '2022-02-07T14:49:08.831Z'
                _updated_at: '2022-02-07T14:49:08.831Z'
              amount: 2700
          - price_id: comp2-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
            product_id: target-price-product-id
            quantity: 3
            unit_amount: 15000
            unit_amount_currency: EUR
            unit_amount_decimal: '150.00'
            amount_subtotal: 45000
            amount_total: 47700
            taxes:
            - tax:
                _id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
                type: VAT
                active: true
                region: DE
                _schema: tax
                _title: Tax Without Behaviour
                description: Without Behaviour
                rate: 6
                _org: '739224'
                _created_at: '2022-02-07T14:49:08.831Z'
                _updated_at: '2022-02-07T14:49:08.831Z'
              amount: 2700
          _price:
            _id: c2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
            _schema: price
            _title: Test 1
            description: Test 1
            _org: '739224'
            _created_at: '2022-02-18T10:10:26.439Z'
            _updated_at: '2022-02-18T11:53:04.191Z'
            active: true
            price_components:
              $relation:
              - entity_id: comp1-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
                _schema: price
                _product_id: target-price-product-id
                quantity: 1
                item:
                  _id: comp1-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
                  unit_amount: 10000
                  unit_amount_currency: EUR
                  unit_amount_decimal: '100.00'
                  sales_tax: standard
                  price_display_in_journeys: show_price
                  type: one_time
                  _schema: price
                  _title: Test 1
                  description: Test 1
                  tax:
                    $relation:
                    - entity_id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
                  _org: '739224'
                  _created_at: '2022-02-18T10:10:26.439Z'
                  _updated_at: '2022-02-18T11:53:04.191Z'
                  active: true
                  billing_period: weekly
                  billing_duration_unit: months
                  notice_time_unit: months
                  termination_time_unit: months
                  renewal_duration_unit: months
              - entity_id: comp2-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
                _schema: price
                _product_id: target-price-product-id
                quantity: 2
                item:
                  _id: comp2-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
                  unit_amount: 10000
                  unit_amount_currency: EUR
                  unit_amount_decimal: '100.00'
                  sales_tax: standard
                  is_tax_inclusive: false
                  price_display_in_journeys: show_price
                  type: one_time
                  _schema: price
                  _title: Test 1
                  description: Test 1
                  tax:
                    $relation:
                    - entity_id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
                  _org: '739224'
                  _created_at: '2022-02-18T10:10:26.439Z'
                  _updated_at: '2022-02-18T11:53:04.191Z'
                  active: true
                  billing_period: weekly
                  billing_duration_unit: months
                  notice_time_unit: months
                  termination_time_unit: months
                  renewal_duration_unit: months
          _product:
            _id: 73f857a4-0fbc-4aa6-983f-87c0d6d410a6
            type: product
            name: Cool box
            _title: Cool box
          description: Price Component
          unit_amount: 90000
          amount_subtotal: 270000
          amount_total: 286200
        - price_id: adbd8cee-0db2-41dd-b93b-2d0ed57c77da
          product_id: 11bd46e5-4c02-425c-bcce-5f5e022a2b45
          taxes:
          - tax: null
            amount: 0
          _price:
            _id: adbd8cee-0db2-41dd-b93b-2d0ed57c77da
            unit_amount: 55566677
            unit_amount_currency: EUR
            unit_amount_decimal: '555666.77'
            sales_tax: standard
            is_tax_inclusive: true
            price_display_in_journeys: show_as_starting_price
            type: one_time
            _schema: price
            _title: As Starting Price One Time No Tax
            description: As Starting Price One Time No Tax
            tax: null
            active: true
            _org: '739224'
            _created_at: '2022-04-14T16:12:34.456Z'
            _updated_at: '2022-04-14T16:13:47.261Z'
            billing_period: weekly
            billing_duration_unit: months
            notice_time_unit: months
            termination_time_unit: months
            renewal_duration_unit: months
          _product:
            _id: 11bd46e5-4c02-425c-bcce-5f5e022a2b45
            type: product
            _schema: product
            _title: Product With A Lot Of Prices - Do Not Change 🙏
            name: Product With A Lot Of Prices - Do Not Change 🙏
            _org: '739224'
            _created_at: '2022-04-14T16:08:08.595Z'
            _updated_at: '2022-04-18T16:26:33.089Z'
            price_options:
              $relation:
              - entity_id: f850ebff-082e-4924-8631-965cc9c0ab2b
                _tags: []
              - entity_id: d6ecc576-b5d6-44b4-8c95-496ab2ac14d3
                _tags: []
              - entity_id: 3c0e47ad-6ca3-4cd8-b6b4-b2a48dab7f16
                _tags: []
              - entity_id: adbd8cee-0db2-41dd-b93b-2d0ed57c77da
                _tags: []
              - entity_id: 3e97f809-1d4b-47e1-9faf-46386b2b0d21
                _tags: []
              - entity_id: d4061656-71dc-45ec-bf6c-1d90d2419d87
                _tags: []
              - entity_id: 4ae4221b-4fd0-4bcc-98a2-f20cda954903
                _tags: []
              - entity_id: b326df19-9d0f-433a-a4d2-a0a65034b5f7
                _tags: []
              - entity_id: 0d071551-47be-4a5b-90d7-d425a59607e6
                _tags: []
            _files:
              $relation:
              - entity_id: 27cc0710-651d-48dc-9624-9d1d3057d025
                _tags: []
              - entity_id: 8530678c-d4cb-4e27-b314-16a79d6c0abc
                _tags: []
              - entity_id: 714d6253-213f-4e30-8caf-00b0d11032e4
                _tags: []
              - entity_id: 2218a8f8-c6e2-4a98-a2fe-030ed78ebfa7
                _tags: []
          quantity: 7
          currency: EUR
          description: As Starting Price One Time No Tax
          unit_amount: 55566677
          amount_subtotal: 388966739
          amount_total: 388966739
        amount_subtotal: 389236739
        amount_total: 389252939
        total_details:
          amount_tax: 5400
          breakdown:
            taxes:
            - tax:
                _id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
                type: VAT
                active: true
                region: DE
                _schema: tax
                _title: Tax Without Behaviour
                description: Without Behaviour
                rate: '6'
                _org: '739224'
                _created_at: '2022-02-07T14:49:08.831Z'
                _updated_at: '2022-02-07T14:49:08.831Z'
              amount: 5400
            recurrences:
            - type: one_time
              amount_subtotal: 389236739
              amount_total: 389252939
              amount_tax: 5400
        _schema: order
        _id: 78ac88ae-d7df-4a1e-a26b-acaf089abfb2
        _org: '739224'
        _created_at: '2022-04-19T08:19:29.816Z'
        _updated_at: '2022-04-20T16:15:48.759Z'
        _title: OREabZxnO
        customer:
          $relation:
          - entity_id: bb986d50-f403-477c-9d9c-726f8fd6d155
    opportunity:
      value:
        opportunity_number: OP 2022/335790
        source:
          title: manual
        source_type: manual
        _schema: opportunity
        _title: 16 Module Solar Pack Lead
        opportunity_title: 16 Module Solar Pack Lead
        due_date: '2022-06-30T15:18:00.000Z'
        assignee:
        - id: '10002563'
          email: j.pinho@epilot.cloud
          display_name: j.pinho@epilot.cloud
          token: 9e1758a3-2a32-4a5f-b034-a8ab883f8fb9
          image_uri: {}
          organization_id: '728'
          department: null
          preferred_language: en
          status: Active
          phone: null
          email_notification_setting:
            added_participant_opportunity: true
            assigned_opportunity: true
            assigned_task: true
            comment_opportunity: true
            deleted_task: true
            escalated_task: true
            message_receive_opportunity: true
            message_send_opportunity: true
            created_task: true
            created_opportunity_manual: true
            created_opportunity_auto: true
            deleted_opportunity: true
          is_signature_enabled: true
          created_at: '2021-05-18T06:30:25.36046'
        description: Lead generated automatically via journey automation.
        customer:
          $relation:
          - entity_id: 69bf4355-9c1e-498a-b87e-6c873668194d
            _tags: []
          - entity_id: 8625e2e4-978e-4d16-b3d2-0d05fb4091f0
            _tags: []
        dates:
        - _tags:
          - Installation Date
          dates: ''
          value: '2022-06-30T15:21:00.000Z'
        items:
          $relation:
          - entity_id: ff5fcdaf-9e36-4292-97f0-6a4e3f82a8f3
          - entity_id: ec10b7cf-95ce-4f6b-a266-c566c7734b96
          - entity_id: c3745dfe-4a46-4c22-8bf3-6159303474e4
        billing_address:
          $relation_ref:
          - entity_id: 69bf4355-9c1e-498a-b87e-6c873668194d
            path: address.2
        delivery_address:
          $relation_ref:
          - entity_id: 69bf4355-9c1e-498a-b87e-6c873668194d
            path: address.24
        address:
          $relation_ref:
          - entity_id: 69bf4355-9c1e-498a-b87e-6c873668194d
            path: address.25
        _id: 319a274b-0477-45e3-9d58-1f46c82d4604
        _org: '728'
        _created_at: '2022-06-03T15:26:14.006Z'
        _updated_at: '2022-06-03T15:26:14.006Z'
    product:
      value:
        type: product
        _schema: product
        _title: Solar Panel with Battery Storage
        name: Solar Panel with Battery Storage
        code: SOLAR-BATT
        active: true
        description: 'Solar Panel with battery solution, optimized for max efficiency. '
        feature:
        - _tags: []
          feature: Eco-Panels
        - _tags: []
          feature: Remote Management Platform
        - _tags: []
          feature: Battery Remote Control
        - _tags: []
          feature: Mobile App
        cross_sellable_products:
          $relation:
          - entity_id: 068d0713-a650-4668-9ed2-eca7be31e337
            _schema: product
            _tags: []
          - entity_id: c8402ee7-fba9-4f3d-bffd-6803ca655782
            _tags: []
        product_images:
          $relation:
          - entity_id: 37bdeaaa-65fe-403e-9894-65b01cd277f1
          - entity_id: 56dde657-795c-41bb-bf53-98fd586b7e6e
        product_downloads:
          $relation:
          - entity_id: 64211361-8759-414b-81c0-afbf24f83aa9
        _id: a7f4771a-6368-4d77-bb01-71f1e4902de5
        _org: '728'
        _created_at: '2022-06-03T15:52:27.512Z'
        _updated_at: '2022-06-03T16:05:15.029Z'
        price_options:
          $relation:
          - entity_id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
            _tags: []
          - entity_id: 146aa2cc-f267-4d5e-bda4-cbe2669b7741
            _tags: []
    price:
      value:
        unit_amount: 100000
        unit_amount_currency: EUR
        unit_amount_decimal: '1000'
        sales_tax: standard
        is_tax_inclusive: true
        price_display_in_journeys: show_price
        type: one_time
        billing_period: weekly
        billing_duration_unit: months
        notice_time_unit: months
        termination_time_unit: months
        renewal_duration_unit: months
        _schema: price
        _title: Solar Panel Module
        description: Solar Panel Module
        active: true
        tax:
          $relation:
          - entity_id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
        _id: 9c36c23b-1574-4193-beff-b1b5e1124bc7
        _org: '728'
        _created_at: '2022-06-03T16:04:10.369Z'
        _updated_at: '2022-06-03T16:04:10.369Z'
        pricing_model: per_unit
    composite-price:
      value:
        _id: c2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
        _schema: price
        _title: My Composite Price
        description: My Composite Price
        _org: '739224'
        _created_at: '2022-02-18T10:10:26.439Z'
        _updated_at: '2022-02-18T11:53:04.191Z'
        active: true
        price_components:
          $relation:
          - entity_id: comp1-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
            _schema: price
            _product_id: target-price-product-id
            quantity: 1
            item:
              _id: comp1-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
              unit_amount: 10000
              unit_amount_currency: EUR
              unit_amount_decimal: '100.00'
              sales_tax: standard
              is_tax_inclusive: false
              price_display_in_journeys: show_price
              type: one_time
              _schema: price
              _title: Test 1
              description: Test 1
              tax:
                $relation:
                - entity_id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
              _org: '739224'
              _created_at: '2022-02-18T10:10:26.439Z'
              _updated_at: '2022-02-18T11:53:04.191Z'
              active: true
              billing_period: weekly
              billing_duration_unit: months
              notice_time_unit: months
              termination_time_unit: months
              renewal_duration_unit: months
          - entity_id: comp2-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
            _schema: price
            _product_id: target-price-product-id
            quantity: 2
            item:
              _id: comp2-2a95ca9-7a50-41a4-a73c-b5fb1a57d40f
              unit_amount: 10000
              unit_amount_currency: EUR
              unit_amount_decimal: '100.00'
              sales_tax: standard
              is_tax_inclusive: false
              price_display_in_journeys: show_price
              type: one_time
              _schema: price
              _title: Test 1
              description: Test 1
              tax:
                $relation:
                - entity_id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
              _org: '739224'
              _created_at: '2022-02-18T10:10:26.439Z'
              _updated_at: '2022-02-18T11:53:04.191Z'
              active: true
              billing_period: weekly
              billing_duration_unit: months
              notice_time_unit: months
              termination_time_unit: months
              renewal_duration_unit: months
    price-item:
      value:
        amount_subtotal: 10000
        amount_total: 10600
        currency: EUR
        description: Annual internet service
        price_id: 7e24ff5d-d580-4136-a32f-19191eed039a
        product_id: 6241487f-b7fd-428b-ab92-24ee0b37fd84
        taxes:
        - amount: 600
          tax:
            active: true
            description: Without Behaviour
            rate: 6
            region: DE
            type: VAT
            _created_at: '2022-02-07T14:49:08.831Z'
            _id: 18bbbc2e-2c37-4f91-924a-07ae60d830e4
            _org: '739224'
            _schema: tax
            _title: Tax Without Behaviour
            _updated_at: '2022-02-07T14:49:08.831Z'
        unit_amount: 10000
        unit_amount_net: 10000
        _price:
          unit_amount: 10000
          unit_amount_currency: EUR
          unit_amount_decimal: '100.00'
          sales_tax: standard
          is_tax_inclusive: false
          price_display_in_journeys: show_price
          type: one_time
          billing_period: weekly
          billing_duration_unit: months
          notice_time_unit: months
          termination_time_unit: months
          renewal_duration_unit: months
          _schema: price
          _title: Solar Panel Module
          description: Solar Panel Module
          active: true
          tax:
            $relation:
            - entity_id: 24641e82-0690-4135-8b43-ef12a9b1c5dc
          _id: 7e24ff5d-d580-4136-a32f-19191eed039a
          _org: '728'
          _created_at: '2022-06-03T16:04:10.369Z'
          _updated_at: '2022-06-03T16:04:10.369Z'
          pricing_model: per_unit
        _product:
          name: Cool box
          type: product
          _id: 73f857a4-0fbc-4aa6-983f-87c0d6d410a6
          _title: Cool box
    external-catalog-sample-1:
      value:
        hits: 1
        results:
        - pricing_details:
            items:
            - _id: price-12312414
              price_id: price-12312414
              is_composite_price: true
              description: Home Energy Package Composite
              item_components:
              - _id: price-12312414-component-0
                price_id: price-12312414-component-0
                description: Working Price
                is_tax_inclusive: true
                amount_total_decimal: '100'
                amount_total: 10000
                amount_subtotal_decimal: '100'
                amount_subtotal: 10000
                unit_amount: 10
                unit_amount_gross: 10
                unit_amount_gross_decimal: '0.10'
                unit_amount_net: 10
                unit_amount_net_decimal: '0.10'
                billing_period: monthly
                type: recurring
                taxes: []
                pricing_model: per_unit
                quantity: 1
                _price:
                  _id: price-12312414-component-0
                  unit_amount_currency: EUR
                  description: Working Price
                  is_tax_inclusive: true
                  unit_amount: 10
                  unit_amount_decimal: '0.10'
                  unit: kWh
                  billing_period: monthly
                  type: recurring
                  billing_duration_amount: 24
                  billing_duration_unit: months
                  notice_time_amount: 3
                  notice_time_unit: months
                  termination_time_amount: 3
                  termination_time_unit: months
                  renewal_duration_amount: 12
                  renewal_duration_unit: months
                  active: true
                  is_composite_price: false
                  variable_price: true
                  pricing_model: per_unit
                  price_display_in_journeys: show_price
            currency: EUR
            amount_subtotal: 10000
            amount_total: 10000
            amount_tax: 0
            total_details:
              amount_tax: 0
              breakdown:
                taxes: []
                recurrences:
                - type: recurring
                  billing_period: monthly
                  amount_subtotal: 10000
                  amount_total: 10000
                  amount_tax: 0
          _meta:
            signature: abc123
            timestamp: '2024-01-15T10:00:00Z'

