Cisco · Arazzo Workflow

Cisco Meraki Network Inventory Snapshot

Version 1.0.0

Drill from organization to network to devices to connected clients in a single audited pass.

1 workflow 1 source API 1 provider
View Spec View on GitHub Fortune 100CollaborationEnterpriseNetworkingSecuritySD-WANArazzoWorkflows

Provider

cisco

Workflows

meraki-network-inventory
Collect an organization-scoped inventory of one Meraki network's devices and clients.
Verifies organization access, verifies the network is in scope for that organization, lists the devices deployed in the network, and lists the clients that have used the network within the requested timespan.
4 steps inputs: networkId, organizationId, timespan outputs: clients, devices, networks
1
verifyOrganizationAccess
getOrganizations
List the organizations the API key has privileges on and assert the target organization is among them. This anchors the inventory to an organization the key can actually read.
2
resolveNetwork
getOrganizationNetworks
List the organization's networks and assert the requested network id belongs to it, so the inventory cannot silently cross an organization boundary.
3
listDevices
getNetworkDevices
List the devices deployed in the network — access points, switches, appliances, and cameras — with their serials, models, firmware, and LAN addressing.
4
listClients
getNetworkClients
List the clients that have used the network over the requested timespan, with their MAC, IP, VLAN, operating system, and current status.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Cisco Meraki Network Inventory Snapshot
  summary: Drill from organization to network to devices to connected clients in a single audited pass.
  description: >-
    The inventory drill-down every Meraki integration runs, whether it is
    feeding a CMDB, a monitoring dashboard, or a compliance report. The flow
    confirms the API key has privileges on the organization, confirms the target
    network belongs to that organization, then collects the network's hardware
    inventory and the clients seen on it over a caller-supplied timespan. 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: merakiApi
  url: ../openapi/cisco-meraki-api.yaml
  type: openapi
workflows:
- workflowId: meraki-network-inventory
  summary: Collect an organization-scoped inventory of one Meraki network's devices and clients.
  description: >-
    Verifies organization access, verifies the network is in scope for that
    organization, lists the devices deployed in the network, and lists the
    clients that have used the network within the requested timespan.
  inputs:
    type: object
    required:
    - organizationId
    - networkId
    properties:
      organizationId:
        type: string
        description: The Meraki organization identifier (e.g. 500123).
      networkId:
        type: string
        description: The Meraki network identifier to inventory (e.g. L_500123).
      timespan:
        type: integer
        description: >-
          Timespan in seconds over which clients are fetched. Defaults to 86400
          (the trailing 24 hours) when omitted.
        default: 86400
  steps:
  - stepId: verifyOrganizationAccess
    description: >-
      List the organizations the API key has privileges on and assert the target
      organization is among them. This anchors the inventory to an organization
      the key can actually read.
    operationId: getOrganizations
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $[?(@.id == '$inputs.organizationId')]
      type: jsonpath
    outputs:
      organizations: $response.body
  - stepId: resolveNetwork
    description: >-
      List the organization's networks and assert the requested network id
      belongs to it, so the inventory cannot silently cross an organization
      boundary.
    operationId: getOrganizationNetworks
    parameters:
    - name: organizationId
      in: path
      value: $inputs.organizationId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $[?(@.id == '$inputs.networkId')]
      type: jsonpath
    outputs:
      networks: $response.body
  - stepId: listDevices
    description: >-
      List the devices deployed in the network — access points, switches,
      appliances, and cameras — with their serials, models, firmware, and LAN
      addressing.
    operationId: getNetworkDevices
    parameters:
    - name: networkId
      in: path
      value: $inputs.networkId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      devices: $response.body
      firstDeviceSerial: $response.body#/0/serial
  - stepId: listClients
    description: >-
      List the clients that have used the network over the requested timespan,
      with their MAC, IP, VLAN, operating system, and current status.
    operationId: getNetworkClients
    parameters:
    - name: networkId
      in: path
      value: $inputs.networkId
    - name: timespan
      in: query
      value: $inputs.timespan
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      clients: $response.body
  outputs:
    networks: $steps.resolveNetwork.outputs.networks
    devices: $steps.listDevices.outputs.devices
    clients: $steps.listClients.outputs.clients