{"id":"ipv4-prefix-set-union","version":"1.0.0","description":"Union two IPv4 prefix sets into one sorted minimal list of disjoint CIDRs.","supported_operations":["union of two ipv4 prefix sets","merge two ipv4 prefix lists","combine ipv4 cidr sets into one cover","shortest cidr cover of two prefix sets","join overlapping ipv4 prefixes from two lists","ipv4 network set union","supernet the combined ipv4 prefix sets"],"unsupported_operations":["IPv6 prefix sets","keeping duplicate or overlapping entries in the output","a single address range given as first and last host"],"semantics":["left and right are arrays of canonical IPv4 CIDR strings (dotted decimal, a slash, and a prefix length 0-32 with no leading zeros). An omitted strict means true.","When strict is true, any prefix with host bits set is invalid_input. When strict is false, those bits are cleared before the union.","prefixes is the shortest list of non-overlapping CIDRs, sorted by network address, whose addresses are exactly the union. Aligned neighbors are merged. No prefix longer than /32 is emitted.","More than 64 prefixes on one side, or a prefix longer than 18 code points, is limit_exceeded before syntax checks. A cover longer than 16 prefixes is limit_exceeded.","Empty arrays are empty sets. The union may itself be empty."],"limits":{"max_prefixes_per_side":64,"max_prefix_chars":18,"max_emitted_prefixes":16},"pricing":{"status":"unpriced","charge_usd":null},"input_schema":{"type":"object","additionalProperties":false,"required":["left","right"],"properties":{"left":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"string","minLength":1,"maxLength":18,"pattern":"^(?:0|[1-9][0-9]{0,2})(?:\\.(?:0|[1-9][0-9]{0,2})){3}/(?:0|[1-9]|[12][0-9]|3[0-2])$"}},"right":{"type":"array","minItems":0,"maxItems":64,"items":{"type":"string","minLength":1,"maxLength":18,"pattern":"^(?:0|[1-9][0-9]{0,2})(?:\\.(?:0|[1-9][0-9]{0,2})){3}/(?:0|[1-9]|[12][0-9]|3[0-2])$"}},"strict":{"type":"boolean"}}},"output_schema":{"type":"object","additionalProperties":false,"required":["prefixes","count"],"properties":{"prefixes":{"type":"array","minItems":0,"maxItems":16,"items":{"type":"string","minLength":1,"maxLength":18,"pattern":"^(?:0|[1-9][0-9]{0,2})(?:\\.(?:0|[1-9][0-9]{0,2})){3}/(?:0|[1-9]|[12][0-9]|3[0-2])$"}},"count":{"type":"integer","minimum":0,"maximum":16}}},"examples":[{"input":{"left":["10.0.0.0/25"],"right":["10.0.0.128/25"]},"output":{"prefixes":["10.0.0.0/24"],"count":1}},{"input":{"left":["172.16.0.0/16"],"right":["192.168.99.0/24"]},"output":{"prefixes":["172.16.0.0/16","192.168.99.0/24"],"count":2}},{"input":{"left":["10.0.1.0/24","10.0.2.0/24"],"right":[]},"output":{"prefixes":["10.0.1.0/24","10.0.2.0/24"],"count":2}}],"execute_url":"/v1/tools/ipv4-prefix-set-union/versions/1.0.0/execute"}