{"id":"ipv4-prefix-set-intersect","version":"1.0.0","description":"Intersect two IPv4 prefix sets into one sorted minimal list of disjoint CIDRs.","supported_operations":["intersection of two ipv4 prefix sets","cidr blocks common to two ipv4 sets","addresses covered by both prefix sets","overlap of two ipv4 prefix lists as cidrs","shared coverage of ipv4 prefix sets","prefix set meet operation","keep only overlapping ipv4 prefixes"],"unsupported_operations":["IPv6 prefix sets","a yes or no overlap flag for exactly two prefixes","non-contiguous wildcard bit masks"],"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 intersection.","prefixes is the shortest list of non-overlapping CIDRs, sorted by network address, whose addresses are exactly the intersection. The list is empty when the sets are disjoint. 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. Intersecting with an empty set yields an empty cover."],"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/8"],"right":["10.2.0.0/16","11.0.0.0/8"]},"output":{"prefixes":["10.2.0.0/16"],"count":1}},{"input":{"left":["172.16.0.0/16"],"right":["192.168.99.0/24"]},"output":{"prefixes":[],"count":0}},{"input":{"left":["10.0.0.0/16"],"right":["10.0.1.0/24","10.0.3.0/24"]},"output":{"prefixes":["10.0.1.0/24","10.0.3.0/24"],"count":2}}],"execute_url":"/v1/tools/ipv4-prefix-set-intersect/versions/1.0.0/execute"}