Abstract API · Arazzo Workflow

Abstract API IP Security and Geolocation

Version 1.0.0

Screen an IP for VPN/proxy/Tor risk, then geolocate clean traffic.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub AvatarsCompany EnrichmentContactsCurrenciesEmail ValidationExchange RatesIBAN ValidationImage ProcessingIP GeolocationIP IntelligencePhone ValidationPublic HolidaysScreenshotsTimezonesVAT ValidationWeb ScrapingArazzoWorkflows

Provider

abstract-api

Workflows

ip-security-and-geolocation
Security-screen an IP and geolocate it only when it is not flagged.
Runs an IP through security intelligence for anonymizer and abuse signals, then branches to a detailed geolocation lookup for traffic that passes the screen.
2 steps inputs: apiKey, ipAddress outputs: city, countryCode, isProxy, isVpn
1
screenIp
getIPIntelligence
Analyze the IP for VPN, proxy, Tor, and abuse signals using the IP Intelligence API.
2
geolocateIp
getIPGeolocation
Retrieve detailed city, region, country, and timezone data for the IP that passed the security screen.

Source API Descriptions

Arazzo Workflow Specification

abstract-api-ip-security-and-geolocation-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Abstract API IP Security and Geolocation
  summary: Screen an IP for VPN/proxy/Tor risk, then geolocate clean traffic.
  description: >-
    A fraud-screening flow that first analyzes an IP address with the IP
    Intelligence API for VPN, proxy, Tor, and abuse signals, and branches: when
    the IP is flagged as risky it ends with the security verdict, and when it is
    clean it proceeds to the IP Geolocation API for detailed city, region, and
    timezone data. Every step inlines the api_key query parameter and request so
    the flow reads and runs without opening the underlying OpenAPI descriptions.
  version: 1.0.0
sourceDescriptions:
- name: ipIntelligenceApi
  url: ../openapi/abstract-api-ip-intelligence.yaml
  type: openapi
- name: ipGeolocationApi
  url: ../openapi/abstract-api-ip-geolocation.yaml
  type: openapi
workflows:
- workflowId: ip-security-and-geolocation
  summary: Security-screen an IP and geolocate it only when it is not flagged.
  description: >-
    Runs an IP through security intelligence for anonymizer and abuse signals,
    then branches to a detailed geolocation lookup for traffic that passes the
    screen.
  inputs:
    type: object
    required:
    - apiKey
    - ipAddress
    properties:
      apiKey:
        type: string
        description: Abstract API key valid for IP Intelligence and IP Geolocation.
      ipAddress:
        type: string
        description: The IPv4 or IPv6 address to screen and geolocate.
  steps:
  - stepId: screenIp
    description: >-
      Analyze the IP for VPN, proxy, Tor, and abuse signals using the IP
      Intelligence API.
    operationId: getIPIntelligence
    parameters:
    - name: api_key
      in: query
      value: $inputs.apiKey
    - name: ip_address
      in: query
      value: $inputs.ipAddress
    - name: fields
      in: query
      value: security,location
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      isVpn: $response.body#/security/is_vpn
      isProxy: $response.body#/security/is_proxy
      isTor: $response.body#/security/is_tor
      isAbuse: $response.body#/security/is_abuse
    onSuccess:
    - name: ipClean
      type: goto
      stepId: geolocateIp
      criteria:
      - context: $response.body
        condition: $.security.is_vpn == false && $.security.is_proxy == false && $.security.is_tor == false
        type: jsonpath
    - name: ipFlagged
      type: end
      criteria:
      - context: $response.body
        condition: $.security.is_vpn == true || $.security.is_proxy == true || $.security.is_tor == true
        type: jsonpath
  - stepId: geolocateIp
    description: >-
      Retrieve detailed city, region, country, and timezone data for the IP that
      passed the security screen.
    operationId: getIPGeolocation
    parameters:
    - name: api_key
      in: query
      value: $inputs.apiKey
    - name: ip_address
      in: query
      value: $inputs.ipAddress
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      city: $response.body#/city
      region: $response.body#/region
      countryCode: $response.body#/country_code
      timezoneName: $response.body#/timezone/name
  outputs:
    isVpn: $steps.screenIp.outputs.isVpn
    isProxy: $steps.screenIp.outputs.isProxy
    city: $steps.geolocateIp.outputs.city
    countryCode: $steps.geolocateIp.outputs.countryCode