They all do the same thing. None of them agree on how.
You want to create a firewall rule that allows TCP port 443 from 10.0.1.0/24 to 192.168.5.0/24. That's it. One sentence. One concept. Universal across every firewall product manufactured in the last 20 years.
Here's what that looks like when you try to automate it across three vendors:
Three vendors. Three completely different JSON structures. Three different field names for the same concept. Three different authentication models. Three different error response formats. Three different ways to say "yes, it's allowed."
Action: "Accept" vs "accept" vs true.
Source: named object reference vs named object reference vs inline CIDR with a "kind" wrapper.
Service: "https" vs "HTTPS" vs "tcp/https".
"service": "https"
"source": "Net_10.0.1.0"
"service": [{"name":"HTTPS"}]
"srcaddr": [{"name":"..."}]
"value": "tcp/https"
"kind": "IPv4Network"
Your daily translation job
Here's what your actual workday looks like when you maintain multi-vendor automation:
- Parse the AWS Security Group change event. Extract the CIDR, port range, protocol, and direction from AWS's JSON format. Handle the 9 different edge cases: prefix lists, security group references, IPv6, ephemeral port ranges, self-referencing groups...
- Translate for Check Point. Create the network object first (separate API call). Then create the service object if it doesn't exist (another API call). Then create the rule (another API call). Then "publish" the session (yet another API call). Handle the session lock if someone else is editing the policy. Handle the 10-minute session timeout.
- Translate again for Fortinet. Different field names. Different nesting structure. Everything in arrays. Interfaces are mandatory but Check Point doesn't use them. Map your internal interface naming convention. Handle the API key auth (not session-based like Check Point).
- Translate again for Cisco. Inline CIDR this time, not named objects. "kind/value" wrappers around everything. Different URL path structure per access list. No bulk operations — one rule per API call.
- Handle the errors. Check Point returns a task ID you have to poll. Fortinet returns the error in a different JSON path depending on the error type. Cisco returns HTTP 500 for everything and puts the actual error in the response body. Parse all three error formats. Decide what to do for each one.
- Repeat every time a vendor releases an API update. Check Point R81.10 changed three field names. Fortinet 7.4 deprecated two endpoints. Cisco ASA 9.18 added a mandatory field. Each one breaks your code silently. You find out at 2am.
What if the translation just... happened?
This is the part that's almost too simple to believe. Cyberm8 understands what an IP address is. What a subnet is. What a port range is. What "allow TCP 443 from A to B" means. It knows how to express that concept in Check Point's language, and Fortinet's language, and Cisco's language, and Palo Alto's language.
You describe the rule once. In human terms. The engine translates it for every vendor in your estate.
In Cyberm8, you describe the request once
No Python. No per-vendor code. No JSON parsing. No session management. No error format translation. You described the what. The engine handled the how.
And when Check Point releases R82 and changes three field names? Cyberm8 updates the adapter. Your configuration doesn't change. Your night's sleep doesn't change. You don't even need to know it happened.
How to make the case to your team
"We're spending X hours a week maintaining three vendor-specific API adapters that do the same thing: translate firewall rules between formats. Every vendor update breaks at least one of them. There's a platform that handles the translation natively for all our vendors. It would eliminate our entire vendor-specific codebase and the on-call burden that comes with it. I want to test it against our Check Point cluster for one hour. Can I?"
The strongest version of this pitch is: show your team lead the three JSON payloads side by side (use the ones above — they're real). Then show them the Cyberm8 version. The visual says more than any argument.
Stop being a JSON translator.
Connect your firewalls to the free test instance. Push one rule to three vendors. See the translation happen in real time. Takes less time than debugging one Check Point session timeout.
Try the Multi-Vendor Demo → info@cyberm8.com — we know what "kind": "IPv4Network" feels like.