{"service":"HALOWERK rohstoffwerk","endpoint":"/parcel-bundling","method":"POST","content_type":"application/json","inputSchema":{"type":"object","required":["items","rates"],"additionalProperties":false,"properties":{"items":{"type":"array","minItems":1,"maxItems":200,"description":"Items to ship. Girth limits apply only when every item carries all three dimensions.","items":{"type":"object","required":["weight_kg"],"additionalProperties":false,"properties":{"name":{"type":"string"},"weight_kg":{"type":"number","minimum":0.001,"maximum":1000},"length_cm":{"type":"number","minimum":0.1,"maximum":500},"width_cm":{"type":"number","minimum":0.1,"maximum":500},"height_cm":{"type":"number","minimum":0.1,"maximum":500},"quantity":{"type":"integer","minimum":1,"maximum":500,"default":1}}}},"rates":{"type":"array","minItems":1,"maxItems":40,"description":"Own rate brackets; the cheapest fitting bracket wins.","items":{"type":"object","required":["max_weight_kg","price_eur"],"additionalProperties":false,"properties":{"label":{"type":"string"},"max_weight_kg":{"type":"number","minimum":0.001,"maximum":1000},"max_girth_cm":{"type":"number","minimum":1,"maximum":1000},"price_eur":{"type":"number","minimum":0,"maximum":100000}}}},"max_parcel_weight_kg":{"type":"number","minimum":0.1,"maximum":1000,"description":"Limit per parcel; defaults to the heaviest bracket."},"packaging_cost_eur":{"type":"number","minimum":0,"maximum":10000,"default":0,"description":"Packaging cost per parcel."}}},"requestExample":{"items":[{"weight_kg":0.001,"quantity":1}],"rates":[{"max_weight_kg":0.001,"price_eur":0}],"packaging_cost_eur":0},"operations":[{"method":"POST","inputSchema":{"type":"object","required":["items","rates"],"additionalProperties":false,"properties":{"items":{"type":"array","minItems":1,"maxItems":200,"description":"Items to ship. Girth limits apply only when every item carries all three dimensions.","items":{"type":"object","required":["weight_kg"],"additionalProperties":false,"properties":{"name":{"type":"string"},"weight_kg":{"type":"number","minimum":0.001,"maximum":1000},"length_cm":{"type":"number","minimum":0.1,"maximum":500},"width_cm":{"type":"number","minimum":0.1,"maximum":500},"height_cm":{"type":"number","minimum":0.1,"maximum":500},"quantity":{"type":"integer","minimum":1,"maximum":500,"default":1}}}},"rates":{"type":"array","minItems":1,"maxItems":40,"description":"Own rate brackets; the cheapest fitting bracket wins.","items":{"type":"object","required":["max_weight_kg","price_eur"],"additionalProperties":false,"properties":{"label":{"type":"string"},"max_weight_kg":{"type":"number","minimum":0.001,"maximum":1000},"max_girth_cm":{"type":"number","minimum":1,"maximum":1000},"price_eur":{"type":"number","minimum":0,"maximum":100000}}}},"max_parcel_weight_kg":{"type":"number","minimum":0.1,"maximum":1000,"description":"Limit per parcel; defaults to the heaviest bracket."},"packaging_cost_eur":{"type":"number","minimum":0,"maximum":10000,"default":0,"description":"Packaging cost per parcel."}}},"requestExample":{"items":[{"weight_kg":0.001,"quantity":1}],"rates":[{"max_weight_kg":0.001,"price_eur":0}],"packaging_cost_eur":0}}],"example_request":{"items":[{"weight_kg":0.001,"quantity":1}],"rates":[{"max_weight_kg":0.001,"price_eur":0}],"packaging_cost_eur":0},"serviceName":"parcel_bundling_check","tags":["logistics","shipping","optimisation"],"outputSchema":{"type":"object"},"outputExample":{"item_count":1,"total_weight_kg":0,"max_parcel_weight_kg_used":0.001,"dimensions_complete":false,"bundled":{"parcels":1,"parcel_detail":[{"parcel":1,"weight_kg":0,"girth_cm":null,"items":["item"],"rate_label":null,"price_eur":0}],"packaging_eur":0,"total_eur":0},"single":{"parcels":1,"packaging_eur":0,"total_eur":0},"saving_eur":0,"saving_percent":0,"recommendation":"no_difference","assumptions":["First fit by descending weight; a proven optimum is not claimed.","Girth limits are only applied when every item carries all three dimensions.","Bundling stacks heights and takes the largest length and width; no nesting or reorientation.","Rate brackets are caller data; no carrier tariff is stored or redistributed."],"method":"first fit decreasing, cheapest matching bracket per parcel"}}