Some fields are ripped out for ease of reading example 1 eJ: Rendered as: ``` Adult 1 £13.00 Government taxes £13.00 ``` New version: ``` charge_breakdown = ImmutableVector([ # adult BundleChargeBreakdown( breakdown=ImmutableVector([ PriceWithPriceCode(amount=13.0, currency='EUR', price_code=BreakdownPriceCode.GOVERMENT_TAX) ]), passenger_id='adt_1' ), ]) ``` Old JSON: ``` json { "bkid": "XVHSH44I-0", "booking_type": "flight", "fare": { "adult_fare": 28.99, "adult_fee": 0.0, "adult_num": 2, "adult_tax": 13.0, "adult_tax_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 13.0, "price": 13.0, "tax_code": "Government taxes"} ], "child_fare": 28.99, "child_fee": 0.0, "child_num": 1, "child_tax": 0.0, "child_tax_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 0.0, "price": 0.0, "tax_code": "Government taxes"} ], "currency": "GBP", "extra_fees": 0.0, "infant_fare": 25.0, "infant_fee": 0.0, "infant_num": 1, "infant_tax": 0.0, "total": 137.97, }, }, ``` Icelandair Renders: ``` Adult 1 £188.30 Air transportation charges £153.90 Base Amount £99.00 Ticketing Fee £13.10 Communication fee/PSF (YRVA) £41.80 Taxes, fees and charges £34.40 Airport Security Charge NL £11.50 Passenger Service Charge NL £16.00 Noise Isolation Charge NL £6.90 ``` ``` json { "bkid": "XVHSH44I-1", "booking_type": "flight", "fare": { "adult_fare": 99.0, "adult_fee": 13.1, "adult_fee_breakdown": [ {"currency": "GBP", "description": "TKT FEE ", "designator": "OB", "nature": "T01", "original_currency": "GBP", "original_price": 13.1, "price": 13.1} ], "adult_num": 2, "adult_price_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 175.2, "price": 175.2, "price_code": "TOTAL AMOUNT PAX1"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 99.0, "price": 99.0, "price_code": "BASE AMOUNT PAX1"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 76.2, "price": 76.2, "price_code": "TAXES AMOUNT PAX1"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 175.2, "price": 175.2, "price_code": "TOTAL AMOUNT PAX2"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 99.0, "price": 99.0, "price_code": "BASE AMOUNT PAX2"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 76.2, "price": 76.2, "price_code": "TAXES AMOUNT PAX2"} ], "adult_tax": 76.2, "adult_tax_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 41.8, "price": 41.8, "tax_code": "YRVA"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 11.5, "price": 11.5, "tax_code": "CJSO"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 16.0, "price": 16.0, "tax_code": "RNDP"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 6.9, "price": 6.9, "tax_code": "VVMU"} ], "child_fare": 79.0, "child_fee": 13.1, "child_fee_breakdown": [ {"currency": "GBP", "description": "TKT FEE ", "designator": "OB", "nature": "T01", "original_currency": "GBP", "original_price": 13.1, "price": 13.1} ], "child_num": 1, "child_price_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 155.2, "price": 155.2, "price_code": "TOTAL AMOUNT PAX3"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 79.0, "price": 79.0, "price_code": "BASE AMOUNT PAX3"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 76.2, "price": 76.2, "price_code": "TAXES AMOUNT PAX3"} ], "child_tax": 76.2, "child_tax_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 41.8, "price": 41.8, "tax_code": "YRVA"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 11.5, "price": 11.5, "tax_code": "CJSO"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 16.0, "price": 16.0, "tax_code": "RNDP"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 6.9, "price": 6.9, "tax_code": "VVMU"} ], "currency": "GBP", "extra_fees": 0.0, "infant_fare": 10.0, "infant_fee": 0.0, "infant_fee_breakdown": [], "infant_num": 1, "infant_price_breakdown": [ {"currency": "GBP", "original_currency": "GBP", "original_price": 10.0, "price": 10.0, "price_code": "TOTAL AMOUNT PAX11"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 10.0, "price": 10.0, "price_code": "BASE AMOUNT PAX11"}, {"currency": "GBP", "original_currency": "GBP", "original_price": 0.0, "price": 0.0, "price_code": "TAXES AMOUNT PAX11"} ], "infant_tax": 0.0, "infant_tax_breakdown": [], "total": 554.9, }, } ``` We would take base level elements only: Base Amount £99.00 Ticketing Fee £13.10 Communication fee/PSF (YRVA) £41.80 Airport Security Charge NL £11.50 Passenger Service Charge NL £16.00 Noise Isolation Charge NL £6.90 ``` charge_breakdown = ImmutableVector([ # adult BundleChargeBreakdown( breakdown=ImmutableVector([ PriceWithPriceCode(amount=99.0, currency='GBP', price_code=BreakdownPriceCode.BASE_FARE_AMOUNT), PriceWithPriceCode(amount=13.10, currency='GBP', price_code=BreakdownPriceCode.TICKETING_FEE), PriceWithPriceCode(amount=41.80, currency='GBP', price_code=BreakdownPriceCode.YRVA_COMMUNICATION_FEE), PriceWithPriceCode(amount=11.50, currency='GBP', price_code=BreakdownPriceCode.NETHERLANDS_GOVERMENT_AIRPORT_SECURITY_FEE), PriceWithPriceCode(amount=16.00, currency='GBP', price_code=BreakdownPriceCode.NETHERLANDS_GOVERMENT_PASSENGER_SERVICE_FEE), PriceWithPriceCode(amount=6.90, currency='GBP', price_code=BreakdownPriceCode.NETHERLANDS_GOVERMENT_NOISE_ISOLATION_FEE), ]), passenger_id='adt_1' ), ]) ``` And the client would be responsible to categorise each enum on whatever category they think makes sense and translate an enum into different languages