@epilot/pricing-client 3.35.0 → 3.35.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/openapi.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "openapi": "3.0.3",
3
3
  "info": {
4
4
  "title": "Pricing API",
5
- "description": "The `pricing-api` hub sets the foundations for the following Pricing APIs:\n\n### Order API\nThis api enables the management of orders in epilot 360, providing features such as:\n - Automatic calculation of totals and price breakdowns for taxes on the Order entity\n - Product and pricing data validation\n\n### Shopping Cart API\nUsed to interact with a cart during a customer's checkout session, providing:\n - An unified data model to model a Shopping Cart\n - Product and pricing data validation\n - Checkout a cart into an order or quote\n\n### Catalog API\nProvides a way to query the entire catalog of products and prices.\n\n### Availability API\nProvides endpoints for querying products availability by a set of predefined dimensions.\n\n### External Integrations API\nProvides endpoints for external integrations (e.g. Enet / GetAG).\n",
5
+ "description": "The `pricing-api` hub sets the foundations for the following Pricing APIs:\n\n### Order API\nThis api enables the management of orders in epilot 360, providing features such as:\n - Automatic calculation of totals and price breakdowns for taxes on the Order entity\n - Product and pricing data validation\n\n### Shopping Cart API\nUsed to interact with a cart during a customer's checkout session, providing:\n - An unified data model to model a Shopping Cart\n - Product and pricing data validation\n - Checkout a cart into an order or quote\n\n### Catalog API\nProvides a way to query the entire catalog of products and prices.\n\n### Availability API\nProvides endpoints for querying products availability by a set of predefined dimensions.\n\n### External Integrations API\nProvides endpoints for external integrations.\n",
6
6
  "version": "1.0.0",
7
7
  "termsOfService": "https://epilot.cloud/agb",
8
8
  "contact": {
@@ -30,7 +30,7 @@
30
30
  },
31
31
  {
32
32
  "name": "External Integrations API",
33
- "description": "Provides endpoints for external integrations (e.g. Enet / GetAG).\n"
33
+ "description": "Provides endpoints for external integrations.\n"
34
34
  },
35
35
  {
36
36
  "name": "Deprecated Endpoints",
@@ -867,7 +867,6 @@
867
867
  "operationId": "$availabilityCheck",
868
868
  "summary": "availabilityCheck",
869
869
  "security": [
870
- {},
871
870
  {
872
871
  "EpilotPublicAuth": []
873
872
  }
@@ -1063,6 +1062,81 @@
1063
1062
  }
1064
1063
  }
1065
1064
  },
1065
+ "/v1/public/integration/{integrationId}/external-catalog": {
1066
+ "post": {
1067
+ "description": "Returns the list of available products (including computed prices) based on a given context.",
1068
+ "operationId": "$searchExternalCatalog",
1069
+ "security": [
1070
+ {},
1071
+ {
1072
+ "EpilotPublicAuth": []
1073
+ }
1074
+ ],
1075
+ "parameters": [
1076
+ {
1077
+ "in": "path",
1078
+ "name": "integrationId",
1079
+ "description": "The integration identifier",
1080
+ "schema": {
1081
+ "$ref": "#/components/schemas/IntegrationId"
1082
+ },
1083
+ "required": true,
1084
+ "example": "ikom"
1085
+ }
1086
+ ],
1087
+ "summary": "searchExternalCatalog",
1088
+ "tags": [
1089
+ "External Integrations API"
1090
+ ],
1091
+ "requestBody": {
1092
+ "required": true,
1093
+ "content": {
1094
+ "application/json": {
1095
+ "schema": {
1096
+ "$ref": "#/components/schemas/SearchExternalCatalogParams"
1097
+ }
1098
+ }
1099
+ }
1100
+ },
1101
+ "responses": {
1102
+ "200": {
1103
+ "description": "The available products response payload",
1104
+ "content": {
1105
+ "application/json": {
1106
+ "schema": {
1107
+ "$ref": "#/components/schemas/SearchExternalCatalogResult"
1108
+ },
1109
+ "examples": {
1110
+ "External products": {
1111
+ "$ref": "#/components/examples/external-catalog-sample-1"
1112
+ }
1113
+ }
1114
+ }
1115
+ }
1116
+ },
1117
+ "400": {
1118
+ "description": "Invalid payload",
1119
+ "content": {
1120
+ "application/json": {
1121
+ "schema": {
1122
+ "$ref": "#/components/schemas/Error"
1123
+ }
1124
+ }
1125
+ }
1126
+ },
1127
+ "403": {
1128
+ "description": "Forbidden, no credentials found for the given integration / organization",
1129
+ "content": {
1130
+ "application/json": {
1131
+ "schema": {
1132
+ "$ref": "#/components/schemas/Error"
1133
+ }
1134
+ }
1135
+ }
1136
+ }
1137
+ }
1138
+ }
1139
+ },
1066
1140
  "/v1/public/integration/{integrationId}/providers:search": {
1067
1141
  "post": {
1068
1142
  "description": "Returns the list of providers available based on a given location",
@@ -1566,8 +1640,8 @@
1566
1640
  "IntegrationId": {
1567
1641
  "type": "string",
1568
1642
  "enum": [
1569
- "enet",
1570
- "getag"
1643
+ "getag",
1644
+ "ikom"
1571
1645
  ]
1572
1646
  },
1573
1647
  "Error": {
@@ -3108,6 +3182,11 @@
3108
3182
  "description": "The password",
3109
3183
  "type": "string",
3110
3184
  "example": "123456"
3185
+ },
3186
+ "base_url": {
3187
+ "description": "The Base API URL",
3188
+ "type": "string",
3189
+ "example": "https://api.example.com"
3111
3190
  }
3112
3191
  },
3113
3192
  "required": [
@@ -5127,6 +5206,482 @@
5127
5206
  "amount_tax",
5128
5207
  "unit_amount_decimal"
5129
5208
  ]
5209
+ },
5210
+ "SearchExternalCatalogParams": {
5211
+ "type": "object",
5212
+ "properties": {
5213
+ "context": {
5214
+ "anyOf": [
5215
+ {
5216
+ "$ref": "#/components/schemas/JourneyContext"
5217
+ }
5218
+ ]
5219
+ }
5220
+ },
5221
+ "additionalProperties": false,
5222
+ "required": [
5223
+ "context"
5224
+ ]
5225
+ },
5226
+ "JourneyContext": {
5227
+ "type": "object",
5228
+ "additionalProperties": false,
5229
+ "properties": {
5230
+ "journey_id": {
5231
+ "type": "string",
5232
+ "description": "The ID of the journey.",
5233
+ "example": "8d0a2235-97ce-42d0-88a3-e374634ca44e"
5234
+ },
5235
+ "journey_name": {
5236
+ "type": "string",
5237
+ "description": "The name of the journey.",
5238
+ "example": "journey name"
5239
+ },
5240
+ "current_step_name": {
5241
+ "description": "The name of the step where the products selection is happening.",
5242
+ "type": "string",
5243
+ "example": "step name"
5244
+ },
5245
+ "current_block_name": {
5246
+ "type": "string",
5247
+ "example": "block name",
5248
+ "description": "The name of the block where the products selection is happening."
5249
+ },
5250
+ "steps_data": {
5251
+ "type": "array",
5252
+ "description": "The steps of the journey.",
5253
+ "items": {
5254
+ "type": "object",
5255
+ "properties": {
5256
+ "step_name": {
5257
+ "type": "string",
5258
+ "description": "The name of the step."
5259
+ },
5260
+ "step_index": {
5261
+ "type": "integer",
5262
+ "description": "The index of the step."
5263
+ },
5264
+ "blocks": {
5265
+ "type": "object",
5266
+ "description": "The data of the blocks.",
5267
+ "additionalProperties": true,
5268
+ "example": {
5269
+ "Adresse": {
5270
+ "countryCode": "DE",
5271
+ "city": "Koblenz",
5272
+ "zipCode": "56068",
5273
+ "streetName": "Am Alten Hospital",
5274
+ "houseNumber": "123"
5275
+ }
5276
+ }
5277
+ }
5278
+ },
5279
+ "additionalProperties": false,
5280
+ "required": [
5281
+ "step_name",
5282
+ "step_index",
5283
+ "blocks"
5284
+ ]
5285
+ }
5286
+ }
5287
+ },
5288
+ "required": [
5289
+ "journey_id",
5290
+ "journey_name",
5291
+ "current_step_name",
5292
+ "current_block_name",
5293
+ "steps_Data"
5294
+ ]
5295
+ },
5296
+ "SearchExternalCatalogResult": {
5297
+ "type": "object",
5298
+ "properties": {
5299
+ "results": {
5300
+ "type": "array",
5301
+ "items": {
5302
+ "$ref": "#/components/schemas/ExternalProduct"
5303
+ }
5304
+ }
5305
+ },
5306
+ "required": [
5307
+ "results"
5308
+ ]
5309
+ },
5310
+ "ExternalProduct": {
5311
+ "type": "object",
5312
+ "description": "An external product & price information (already computed) from an external catalog.",
5313
+ "properties": {
5314
+ "id": {
5315
+ "type": "string",
5316
+ "description": "The ID of the product in the external catalog."
5317
+ },
5318
+ "name": {
5319
+ "type": "string",
5320
+ "description": "The name of the product."
5321
+ },
5322
+ "description": {
5323
+ "type": "string",
5324
+ "description": "A description of the product."
5325
+ },
5326
+ "features": {
5327
+ "type": "array",
5328
+ "description": "A list of features of the product.",
5329
+ "items": {
5330
+ "type": "string"
5331
+ }
5332
+ },
5333
+ "product_image_urls": {
5334
+ "type": "array",
5335
+ "items": {
5336
+ "type": "string"
5337
+ },
5338
+ "description": "A list of image URLs of the product. RECOMMENDED: Store files in Epilot for advantages such as resizing, versioning, easy access, and maintenance.\n"
5339
+ },
5340
+ "product_downloads_urls": {
5341
+ "type": "array",
5342
+ "items": {
5343
+ "type": "string"
5344
+ },
5345
+ "description": "A list of file/attachment URLs of the product RECOMMENDED: Store files in Epilot for advantages such as resizing, versioning, easy access, and maintenance.\n"
5346
+ },
5347
+ "legal_footnotes": {
5348
+ "type": "string",
5349
+ "description": "Legal footnotes for the product."
5350
+ },
5351
+ "additional_notes": {
5352
+ "type": "array",
5353
+ "description": "Additional notes for the product.",
5354
+ "items": {
5355
+ "type": "string"
5356
+ }
5357
+ },
5358
+ "recommendation_settings": {
5359
+ "type": "object",
5360
+ "description": "Recommendation settings for the product.",
5361
+ "properties": {
5362
+ "is_recommended": {
5363
+ "type": "boolean",
5364
+ "description": "Flag to enable or disable the recommendation for this product."
5365
+ },
5366
+ "recommended_label": {
5367
+ "type": "string",
5368
+ "description": "Label to display when the product is recommended."
5369
+ }
5370
+ },
5371
+ "example": {
5372
+ "is_recommended": true,
5373
+ "recommended_label": "Best Value"
5374
+ }
5375
+ },
5376
+ "price": {
5377
+ "oneOf": [
5378
+ {
5379
+ "$ref": "#/components/schemas/ExternalSimplePrice"
5380
+ },
5381
+ {
5382
+ "$ref": "#/components/schemas/ExternalCompositePrice"
5383
+ }
5384
+ ]
5385
+ }
5386
+ },
5387
+ "required": [
5388
+ "price",
5389
+ "name",
5390
+ "id"
5391
+ ]
5392
+ },
5393
+ "ExternalBasePrice": {
5394
+ "type": "object",
5395
+ "properties": {
5396
+ "variable_price": {
5397
+ "type": "boolean",
5398
+ "description": "A flag to indicate if the price is variable.\n"
5399
+ },
5400
+ "unit": {
5401
+ "description": "The unit of measurement used for display purposes and possibly for calculations when the price is variable.",
5402
+ "type": "string",
5403
+ "example": "kWh"
5404
+ },
5405
+ "currency": {
5406
+ "type": "string",
5407
+ "description": "The currency of the price. ISO 4217 currency code. E.g. EUR.",
5408
+ "default": "EUR",
5409
+ "example": "EUR"
5410
+ },
5411
+ "type": {
5412
+ "type": "string",
5413
+ "description": "The price type.",
5414
+ "enum": [
5415
+ "one_time",
5416
+ "recurring"
5417
+ ]
5418
+ },
5419
+ "billing_period": {
5420
+ "$ref": "#/components/schemas/BillingPeriod",
5421
+ "description": "The billing period of the price."
5422
+ },
5423
+ "unit_amount_gross_decimal": {
5424
+ "type": "string",
5425
+ "example": "1.19",
5426
+ "description": "The unit gross amount value, as a string with all the decimal places."
5427
+ },
5428
+ "unit_amount_net_decimal": {
5429
+ "type": "string",
5430
+ "description": "The unit net amount value, as a string with all the decimal places.",
5431
+ "example": "1.00"
5432
+ },
5433
+ "amount_subtotal_decimal": {
5434
+ "type": "string",
5435
+ "description": "Total of all items before discounts or taxes, as a string with all the decimal places.",
5436
+ "example": "1.00"
5437
+ },
5438
+ "amount_total_decimal": {
5439
+ "type": "string",
5440
+ "description": "Total of all items after discounts and taxes, as a string with all the decimal places.",
5441
+ "example": "1.19"
5442
+ },
5443
+ "tax": {
5444
+ "type": "object",
5445
+ "properties": {
5446
+ "name": {
5447
+ "type": "string",
5448
+ "description": "The tax name.",
5449
+ "example": "VAT"
5450
+ },
5451
+ "description": {
5452
+ "type": "string",
5453
+ "description": "The tax description.",
5454
+ "example": "Value Added Tax"
5455
+ },
5456
+ "type": {
5457
+ "type": "string",
5458
+ "enum": [
5459
+ "VAT",
5460
+ "GST",
5461
+ "Custom"
5462
+ ],
5463
+ "description": "The type of the tax.",
5464
+ "example": "VAT"
5465
+ },
5466
+ "rate": {
5467
+ "type": "number",
5468
+ "description": "The tax rate applied.",
5469
+ "example": 19
5470
+ },
5471
+ "region": {
5472
+ "type": "string",
5473
+ "description": "The region code of the tax.",
5474
+ "example": "DE"
5475
+ },
5476
+ "region_label": {
5477
+ "type": "string",
5478
+ "description": "The region label of the tax.",
5479
+ "example": "Germany"
5480
+ }
5481
+ },
5482
+ "required": [
5483
+ "rate"
5484
+ ]
5485
+ },
5486
+ "price_display_in_journeys": {
5487
+ "type": "string",
5488
+ "enum": [
5489
+ "show_price",
5490
+ "show_as_starting_price",
5491
+ "show_as_on_request"
5492
+ ],
5493
+ "description": "The way the price should be displayed in the journeys."
5494
+ },
5495
+ "is_tax_inclusive": {
5496
+ "type": "boolean",
5497
+ "description": "A flag to indicate if the price is tax inclusive."
5498
+ },
5499
+ "fees": {
5500
+ "type": "object",
5501
+ "description": "Fees structure with static and variable amounts",
5502
+ "properties": {
5503
+ "billing_period": {
5504
+ "$ref": "#/components/schemas/BillingPeriod",
5505
+ "description": "The billing period of the fee values (e.g. monthly)."
5506
+ },
5507
+ "amount_total_decimal": {
5508
+ "type": "string",
5509
+ "example": "1.00"
5510
+ },
5511
+ "amount_static_decimal": {
5512
+ "type": "string",
5513
+ "example": "1.00"
5514
+ },
5515
+ "amount_variable_decimal": {
5516
+ "type": "string",
5517
+ "example": "1.00"
5518
+ },
5519
+ "breakdown": {
5520
+ "type": "object",
5521
+ "description": "Breakdown of the fee values",
5522
+ "properties": {
5523
+ "static": {
5524
+ "type": "object",
5525
+ "description": "Static breakdown of fees",
5526
+ "additionalProperties": {
5527
+ "type": "object",
5528
+ "properties": {
5529
+ "amount_decimal": {
5530
+ "type": "string",
5531
+ "description": "The amount of the fee, as a string with all the decimal places.",
5532
+ "example": "1.00"
5533
+ }
5534
+ }
5535
+ },
5536
+ "required": [
5537
+ "amount_decimal"
5538
+ ]
5539
+ },
5540
+ "variable": {
5541
+ "type": "object",
5542
+ "description": "Variable breakdown of fees",
5543
+ "additionalProperties": {
5544
+ "type": "object",
5545
+ "properties": {
5546
+ "amount_decimal": {
5547
+ "type": "string",
5548
+ "example": "1.00"
5549
+ },
5550
+ "unit": {
5551
+ "type": "string",
5552
+ "description": "The unit of the fee (e.g. kWh) if applicable."
5553
+ }
5554
+ },
5555
+ "required": [
5556
+ "amount_decimal"
5557
+ ]
5558
+ }
5559
+ }
5560
+ }
5561
+ }
5562
+ },
5563
+ "required": [
5564
+ "billing_period",
5565
+ "amount_total_decimal",
5566
+ "amount_static_decimal",
5567
+ "amount_variable_decimal",
5568
+ "breakdown"
5569
+ ]
5570
+ }
5571
+ },
5572
+ "required": [
5573
+ "type",
5574
+ "unit_amount_decimal",
5575
+ "unit_amount_gross_decimal",
5576
+ "unit_amount_net_decimal",
5577
+ "amount_subtotal_decimal",
5578
+ "amount_total_decimal"
5579
+ ]
5580
+ },
5581
+ "ExternalSimplePrice": {
5582
+ "allOf": [
5583
+ {
5584
+ "$ref": "#/components/schemas/ExternalBasePrice"
5585
+ },
5586
+ {
5587
+ "type": "object",
5588
+ "properties": {
5589
+ "is_composite_price": {
5590
+ "type": "boolean",
5591
+ "enum": [
5592
+ false
5593
+ ]
5594
+ }
5595
+ },
5596
+ "required": [
5597
+ "is_composite_price"
5598
+ ]
5599
+ }
5600
+ ]
5601
+ },
5602
+ "ExternalCompositePrice": {
5603
+ "allOf": [
5604
+ {
5605
+ "$ref": "#/components/schemas/ExternalBasePrice"
5606
+ },
5607
+ {
5608
+ "type": "object",
5609
+ "properties": {
5610
+ "is_composite_price": {
5611
+ "type": "boolean",
5612
+ "enum": [
5613
+ true
5614
+ ]
5615
+ },
5616
+ "price_components": {
5617
+ "type": "array",
5618
+ "items": {
5619
+ "$ref": "#/components/schemas/ExternalSimplePrice"
5620
+ }
5621
+ },
5622
+ "total_details": {
5623
+ "$ref": "#/components/schemas/ExternalPriceTotalDetails"
5624
+ }
5625
+ },
5626
+ "required": [
5627
+ "is_composite_price",
5628
+ "price_components",
5629
+ "total_details"
5630
+ ]
5631
+ }
5632
+ ]
5633
+ },
5634
+ "ExternalPriceTotalDetails": {
5635
+ "type": "object",
5636
+ "description": "Details of the total price including shipping and tax amounts.",
5637
+ "properties": {
5638
+ "breakdown": {
5639
+ "type": "object",
5640
+ "description": "A breakdown of the recurrences of amounts.",
5641
+ "properties": {
5642
+ "recurrences": {
5643
+ "type": "array",
5644
+ "items": {
5645
+ "type": "object",
5646
+ "description": "Recurrence details including subtotal, total, and tax amounts.",
5647
+ "properties": {
5648
+ "amount_subtotal_decimal": {
5649
+ "type": "string",
5650
+ "description": "Total of all items before discounts or taxes, as a string with all the decimal places.",
5651
+ "example": "1.00"
5652
+ },
5653
+ "amount_total_decimal": {
5654
+ "type": "string",
5655
+ "description": "Total of all items after discounts and taxes, as a string with all the decimal places.",
5656
+ "example": "1.19"
5657
+ },
5658
+ "type": {
5659
+ "type": "string",
5660
+ "enum": [
5661
+ "one_time",
5662
+ "recurring"
5663
+ ],
5664
+ "description": "The price type.",
5665
+ "example": "one_time"
5666
+ },
5667
+ "billing_period": {
5668
+ "$ref": "#/components/schemas/BillingPeriod",
5669
+ "description": "The billing period of the price."
5670
+ }
5671
+ },
5672
+ "required": [
5673
+ "amount_subtotal_decimal",
5674
+ "amount_total_decimal",
5675
+ "type"
5676
+ ]
5677
+ }
5678
+ }
5679
+ }
5680
+ }
5681
+ },
5682
+ "required": [
5683
+ "breakdown"
5684
+ ]
5130
5685
  }
5131
5686
  },
5132
5687
  "examples": {
@@ -6635,6 +7190,181 @@
6635
7190
  "_title": "Cool box"
6636
7191
  }
6637
7192
  }
7193
+ },
7194
+ "external-catalog-sample-1": {
7195
+ "value": [
7196
+ {
7197
+ "id": "73f857a4-0fbc-4aa6-983f-87c0d6d410a6",
7198
+ "name": "Home Energy Package",
7199
+ "description": "Composite home energy solution with solar panels and battery",
7200
+ "features": [
7201
+ "4kW solar system",
7202
+ "10kWh battery storage",
7203
+ "Smart energy management"
7204
+ ],
7205
+ "product_image_urls": [
7206
+ "https://example.com/images/home-energy-package.jpg"
7207
+ ],
7208
+ "legal_footnotes": "Installation and permitting fees may vary by location.",
7209
+ "price": {
7210
+ "is_composite_price": true,
7211
+ "currency": "EUR",
7212
+ "amount_subtotal_decimal": "419.110616246297",
7213
+ "amount_total_decimal": "498.741633333333",
7214
+ "price_display_in_journeys": "show_price",
7215
+ "price_components": [
7216
+ {
7217
+ "type": "recurring",
7218
+ "billing_period": "monthly",
7219
+ "is_tax_inclusive": true,
7220
+ "variable_price": true,
7221
+ "price_display_in_journeys": "show_price",
7222
+ "unit": "kWh",
7223
+ "amount_subtotal_decimal": "11.244355742297",
7224
+ "amount_total_decimal": "13.380783333333",
7225
+ "unit_amount_net_decimal": "11.24",
7226
+ "unit_amount_gross_decimal": "13.38",
7227
+ "currency": "EUR",
7228
+ "tax": {
7229
+ "name": "tax",
7230
+ "type": "VAT",
7231
+ "rate": 19,
7232
+ "region": "DE"
7233
+ }
7234
+ },
7235
+ {
7236
+ "price_display_in_journeys": "show_price",
7237
+ "variable_price": true,
7238
+ "type": "recurring",
7239
+ "billing_period": "monthly",
7240
+ "is_tax_inclusive": true,
7241
+ "unit": "kWh",
7242
+ "amount_subtotal_decimal": "407.866260504",
7243
+ "amount_total_decimal": "485.36085",
7244
+ "unit_amount_net_decimal": "14",
7245
+ "unit_amount_gross_decimal": "16",
7246
+ "currency": "EUR",
7247
+ "tax": {
7248
+ "name": "VAT",
7249
+ "type": "VAT",
7250
+ "rate": 19,
7251
+ "region": "DE"
7252
+ }
7253
+ }
7254
+ ],
7255
+ "fees": {
7256
+ "amount_total_decimal": "410.84",
7257
+ "amount_variable_decimal": "356.58",
7258
+ "billing_period": "yearly",
7259
+ "breakdown": {
7260
+ "static": {
7261
+ "basic_fee": {
7262
+ "amount_decimal": "19.21"
7263
+ },
7264
+ "maintenance_fee": {
7265
+ "amount_decimal": "35.05"
7266
+ }
7267
+ },
7268
+ "variable": {
7269
+ "offshore_liability_fee": {
7270
+ "amount_decimal": "2.4",
7271
+ "unit": "kWh"
7272
+ },
7273
+ "interruptible_load": {
7274
+ "amount_decimal": "0"
7275
+ },
7276
+ "extra_charge": {
7277
+ "amount_decimal": "22.68"
7278
+ },
7279
+ "chp": {
7280
+ "amount_decimal": "26.7"
7281
+ },
7282
+ "power_kwh": {
7283
+ "amount_decimal": "161.4"
7284
+ },
7285
+ "concession": {
7286
+ "amount_decimal": "143.4"
7287
+ }
7288
+ }
7289
+ }
7290
+ },
7291
+ "total_details": {
7292
+ "breakdown": {
7293
+ "recurrences": [
7294
+ {
7295
+ "type": "recurring",
7296
+ "billing_period": "monthly",
7297
+ "amount_subtotal_decimal": "419.110616246297",
7298
+ "amount_total_decimal": "498.741633333333"
7299
+ }
7300
+ ]
7301
+ }
7302
+ }
7303
+ }
7304
+ },
7305
+ {
7306
+ "id": "73f857a4-0fbc-4aa6-983f-87c0d6d410a6",
7307
+ "name": "Solar Panel X1",
7308
+ "description": "High-efficiency solar panel for residential use",
7309
+ "additional_notes": [
7310
+ "Includes mounting hardware",
7311
+ "Professional installation recommended"
7312
+ ],
7313
+ "price": {
7314
+ "is_composite_price": true,
7315
+ "currency": "EUR",
7316
+ "amount_subtotal_decimal": "99",
7317
+ "amount_total_decimal": "99",
7318
+ "price_components": [
7319
+ {
7320
+ "type": "one_time",
7321
+ "unit_amount_net_decimal": "99",
7322
+ "unit_amount_gross_decimal": "99",
7323
+ "amount_subtotal_decimal": "99",
7324
+ "amount_total_decimal": "99",
7325
+ "is_tax_inclusive": true,
7326
+ "currency": "EUR"
7327
+ }
7328
+ ],
7329
+ "total_details": {
7330
+ "breakdown": {
7331
+ "recurrences": [
7332
+ {
7333
+ "type": "one_time",
7334
+ "amount_subtotal_decimal": "99",
7335
+ "amount_total_decimal": "99"
7336
+ }
7337
+ ]
7338
+ }
7339
+ }
7340
+ }
7341
+ },
7342
+ {
7343
+ "id": "73f857a4-0fbc-4aa6-983f-87c0d6d410a6",
7344
+ "name": "Solar Panel X2",
7345
+ "recommendation_settings": {
7346
+ "is_recommended": true,
7347
+ "recommended_label": "Best Value"
7348
+ },
7349
+ "price": {
7350
+ "is_composite_price": false,
7351
+ "currency": "EUR",
7352
+ "price_display_in_journeys": "show_price",
7353
+ "type": "one_time",
7354
+ "unit_amount_net_decimal": "25",
7355
+ "unit_amount_gross_decimal": "25",
7356
+ "amount_subtotal_decimal": "25",
7357
+ "amount_total_decimal": "25",
7358
+ "is_tax_inclusive": true,
7359
+ "tax": {
7360
+ "name": "no-tax",
7361
+ "type": "VAT",
7362
+ "rate": 0,
7363
+ "region": "DE"
7364
+ }
7365
+ }
7366
+ }
7367
+ ]
6638
7368
  }
6639
7369
  }
6640
7370
  }