AbuseIPDB · Arazzo Workflow

AbuseIPDB Bulk Report Then Verify

Version 1.0.0

Upload a CSV of abuse reports in bulk, then spot-check one submitted IP to confirm it landed.

1 workflow 1 source API 1 provider
View Spec View on GitHub Anti MalwareBlacklistCyber SecurityIP ReputationNetwork SecurityPublic APIsThreat IntelligenceArazzoWorkflows

Provider

abuseipdb

Workflows

bulk-report-then-verify
Bulk-upload abuse reports, then check one sample IP to verify the batch was saved.
Submits a CSV of abuse reports to the bulk-report endpoint and, when reports are saved, runs a single-IP check against a sample IP from the batch to confirm the submission registered.
2 steps inputs: apiKey, csv, maxAgeInDays, sampleIp outputs: sampleIp, sampleScore, savedReports
1
bulkReport
bulkReportIps
Upload the CSV batch of abuse reports and capture how many were saved versus rejected.
2
verifySample
checkIp
Check one sample IP from the uploaded batch to confirm the bulk submission was recorded and to read its current abuse confidence score.

Source API Descriptions

Arazzo Workflow Specification

abuseipdb-bulk-report-then-verify-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: AbuseIPDB Bulk Report Then Verify
  summary: Upload a CSV of abuse reports in bulk, then spot-check one submitted IP to confirm it landed.
  description: >-
    A batch-submission pattern with a verification tail. The workflow uploads a
    CSV file of abuse reports via the bulk-report endpoint, then performs a
    single-IP check against a caller-supplied sample address from that batch to
    confirm the submission was processed and to read back the resulting abuse
    confidence score. Every step spells out its request inline so the flow can be
    read and executed without opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: abuseipdbApi
  url: ../openapi/abuseipdb-apiv2-openapi.yml
  type: openapi
workflows:
- workflowId: bulk-report-then-verify
  summary: Bulk-upload abuse reports, then check one sample IP to verify the batch was saved.
  description: >-
    Submits a CSV of abuse reports to the bulk-report endpoint and, when reports
    are saved, runs a single-IP check against a sample IP from the batch to
    confirm the submission registered.
  inputs:
    type: object
    required:
    - apiKey
    - csv
    - sampleIp
    properties:
      apiKey:
        type: string
        description: AbuseIPDB API key supplied via the Key header.
      csv:
        type: string
        description: CSV file contents with columns IP, Categories, ReportDate, Comment.
      sampleIp:
        type: string
        description: One IP address from the CSV batch to spot-check after upload.
      maxAgeInDays:
        type: integer
        description: Restrict reports considered on the verifying check to the last N days (1-365).
        default: 30
  steps:
  - stepId: bulkReport
    description: >-
      Upload the CSV batch of abuse reports and capture how many were saved
      versus rejected.
    operationId: bulkReportIps
    parameters:
    - name: Key
      in: header
      value: $inputs.apiKey
    requestBody:
      contentType: multipart/form-data
      payload:
        csv: $inputs.csv
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      savedReports: $response.body#/data/savedReports
      invalidReports: $response.body#/data/invalidReports
    onSuccess:
    - name: someSaved
      type: goto
      stepId: verifySample
      criteria:
      - context: $response.body
        condition: $.data.savedReports > 0
        type: jsonpath
    - name: noneSaved
      type: end
      criteria:
      - context: $response.body
        condition: $.data.savedReports == 0
        type: jsonpath
  - stepId: verifySample
    description: >-
      Check one sample IP from the uploaded batch to confirm the bulk submission
      was recorded and to read its current abuse confidence score.
    operationId: checkIp
    parameters:
    - name: Key
      in: header
      value: $inputs.apiKey
    - name: ipAddress
      in: query
      value: $inputs.sampleIp
    - name: maxAgeInDays
      in: query
      value: $inputs.maxAgeInDays
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      ipAddress: $response.body#/data/ipAddress
      abuseConfidenceScore: $response.body#/data/abuseConfidenceScore
      totalReports: $response.body#/data/totalReports
  outputs:
    savedReports: $steps.bulkReport.outputs.savedReports
    sampleIp: $steps.verifySample.outputs.ipAddress
    sampleScore: $steps.verifySample.outputs.abuseConfidenceScore