Skip to content

Please Update/Upgrade the APIVoid Integration to use v2 of the API #831

@oed-albrinkd

Description

@oed-albrinkd

Is your feature request related to a problem? Please describe.

The current APIVoid response integration (content/response_integrations/google/api_void, currently at version 15.0) still calls APIVoid's legacy v1 endpoints exclusively. In core/APIVoidManager.py every request points at https://endpoint.apivoid.com/<service>/v1/pay-as-you-go/ and authenticates via the ?key= query parameter, e.g.:

python
self.session.post(
    url=f"{self.api_root}/iprep/v1/pay-as-you-go/",
    params={"ip": ip, "key": self.api_key},
)

In the meantime APIVoid has released a redesigned v2 API on a new host (api.apivoid.com) with cleaner, REST-style paths, header-based authentication, and JSON request bodies — for example, IP Reputation is now POST https://api.apivoid.com/v2/ip-reputation with an X-API-Key header and a JSON body. This means:

  • Customers running the shipped integration are stuck on the older API surface and miss any improvements, fields, or services that v2 introduces.
  • There is an ongoing risk that v1 endpoints will be deprecated or sunset by APIVoid, which would silently break this integration for every Google SecOps SOAR customer using it.
  • Anyone wanting v2 today has to fork the integration and maintain their own copy, which defeats the purpose of having an officially maintained Google integration.

Describe the solution you'd like

Migrate the APIVoid integration to APIVoid API v2 across all actions (Get IP Reputation, Get URL Reputation, Get Domain Reputation, Get Screenshot, Verify Email, Ping). Concretely:

  • Update the default Api Root in definition.yaml to https://api.apivoid.com (or make the API version configurable to ease the transition).
  • Rewrite APIVoidManager to use the v2 endpoint paths (/v2/ip-reputation, /v2/url-reputation, /v2/domain-reputation, /v2/screenshot, /v2/email-verify, etc.).
  • Switch authentication from the key query parameter to the X-API-Key HTTP header.
  • Send request payloads as JSON bodies with Content-Type: application/json instead of query parameters.
  • Update APIVoidTranslationLayer and the data models to map the v2 response schema, and update the predefined widgets accordingly so the UI keeps rendering correctly.
  • Bump the integration to a new major version (16.0) and document the change in release_notes.yaml, ideally with upgrade notes for existing users.

Example v2 call the integration should produce (equivalent of today's Get IP Reputation):

http
POST /v2/ip-reputation HTTP/1.1
Host: api.apivoid.com
Content-Type: application/json
X-API-Key: <API_KEY>

{"ip": "80.82.77.139"}

Describe alternatives you've considered

  • Forking the integration internally and maintaining a private v2 version. Works, but every customer who wants v2 has to do this independently, and forks drift away from upstream fixes (widget updates, Python version bumps, TIPCommon upgrades, etc.).
  • Leaving things on v1 until APIVoid forces a migration. Reactive and risky — it guarantees a period of broken playbooks if/when v1 is retired, especially since reputation lookups often sit on critical incident-response paths.
  • Adding only v2 support as a new integration alongside the existing one. Possible, but doubles the maintenance surface and confuses users who'd have two near-identical integrations to choose from. A clean upgrade with a major-version bump and release notes seems preferable.

Additional context

  • Integration path in the repo: content/response_integrations/google/api_void
  • Current integration version (from pyproject.toml): 15.0
  • Last meaningful code-level change was 11.0 (Python 3.11 compatibility, 2024-07-14). Versions 12.0–15.0 were widget updates, metadata changes, and the public open-sourcing on GitHub — no API surface changes.
  • v1 vs v2 summary:
      | v1 (current) | v2 (requested) -- | -- | -- Host | endpoint.apivoid.com | api.apivoid.com Path | /iprep/v1/pay-as-you-go/ | /v2/ip-reputation Auth | ?key= query param | X-API-Key: header Payload | Query parameters | JSON body Plan coupling | Pay-as-you-go suffix in path | Unified endpoint
  • APIVoid's official v2 documentation can be referenced at https://docs.apivoid.com/ for the exact schemas of each endpoint.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions