Shodan · Arazzo Workflow

Shodan Network Alert Lifecycle

Version 1.0.0

Create a network alert, enable a trigger, verify it, then update the IP set.

1 workflow 1 source API 1 provider
View Spec View on GitHub SecuritySearchInternetDevicesIoTVulnerabilitiesCVEAttack SurfaceThreat IntelligenceReconnaissanceNetworkDNSScanningPublic APIsArazzoWorkflows

Provider

shodan

Workflows

network-alert-lifecycle
Create, arm, verify, and update a Shodan network alert.
Creates a network alert, enables a trigger on it, retrieves it to confirm the trigger, and updates the monitored IP ranges.
4 steps inputs: apiKey, ips, name, trigger, updatedIps outputs: alertId, triggers, updatedFilters
1
createAlert
createAlert
Create a network alert over the supplied IP ranges.
2
enableTrigger
enableAlertTrigger
Enable the requested monitoring trigger on the newly created alert.
3
verifyAlert
getAlert
Read the alert back to confirm its configuration and active triggers.
4
updateAlert
updateAlert
Update the alert's monitored IP ranges.

Source API Descriptions

Arazzo Workflow Specification

shodan-network-alert-lifecycle-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Shodan Network Alert Lifecycle
  summary: Create a network alert, enable a trigger, verify it, then update the IP set.
  description: >-
    A full network alert management pattern. The workflow creates a network
    alert over a set of IP ranges, enables a monitoring trigger on it, reads the
    alert back to confirm the trigger is active, and then updates the alert's IP
    set. 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: shodanRest
  url: ../openapi/shodan-rest-openapi.yml
  type: openapi
workflows:
- workflowId: network-alert-lifecycle
  summary: Create, arm, verify, and update a Shodan network alert.
  description: >-
    Creates a network alert, enables a trigger on it, retrieves it to confirm
    the trigger, and updates the monitored IP ranges.
  inputs:
    type: object
    required:
    - apiKey
    - name
    - ips
    - trigger
    properties:
      apiKey:
        type: string
        description: Shodan API key passed as the `key` query parameter.
      name:
        type: string
        description: A human-readable name for the network alert.
      ips:
        type: array
        items:
          type: string
        description: The IP ranges to monitor with this alert.
      trigger:
        type: string
        description: The trigger name to enable (e.g. "malware", "new_service").
      updatedIps:
        type: array
        items:
          type: string
        description: The revised IP ranges to apply when updating the alert.
  steps:
  - stepId: createAlert
    description: >-
      Create a network alert over the supplied IP ranges.
    operationId: createAlert
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.name
        filters:
          ip: $inputs.ips
    parameters:
    - name: key
      in: query
      value: $inputs.apiKey
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      alertId: $response.body#/id
  - stepId: enableTrigger
    description: >-
      Enable the requested monitoring trigger on the newly created alert.
    operationId: enableAlertTrigger
    parameters:
    - name: key
      in: query
      value: $inputs.apiKey
    - name: id
      in: path
      value: $steps.createAlert.outputs.alertId
    - name: trigger
      in: path
      value: $inputs.trigger
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      success: $response.body#/success
  - stepId: verifyAlert
    description: >-
      Read the alert back to confirm its configuration and active triggers.
    operationId: getAlert
    parameters:
    - name: key
      in: query
      value: $inputs.apiKey
    - name: id
      in: path
      value: $steps.createAlert.outputs.alertId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      triggers: $response.body#/triggers
      filters: $response.body#/filters
  - stepId: updateAlert
    description: >-
      Update the alert's monitored IP ranges.
    operationId: updateAlert
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.name
        filters:
          ip: $inputs.updatedIps
    parameters:
    - name: key
      in: query
      value: $inputs.apiKey
    - name: id
      in: path
      value: $steps.createAlert.outputs.alertId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      updatedFilters: $response.body#/filters
  outputs:
    alertId: $steps.createAlert.outputs.alertId
    triggers: $steps.verifyAlert.outputs.triggers
    updatedFilters: $steps.updateAlert.outputs.updatedFilters