Cisco Systems vendor logo

Vendor

Cisco Systems

Product

Meraki

Method

REST

Category

SD-WAN (SASE)

Project Type

Workflow Project


View Repository
Workflow

Cisco Meraki Modular Automations

Overview

The integration of Itential and the Cisco Meraki solution enables network teams to utilize its REST API to build automations that can include common tasks for provisioning and device management. This is a library of related automations that can be used as modular components in your own larger, end-to-end workflows.

Workflows

NameOverview
Create Network - Meraki - RESTThis is a modular workflow that automates the creation of a new network.
Claim Network Devices - Meraki - RESTThis is a modular workflow that automates the process of claiming a new network device.

For further technical details on how to install and use this Workflow Project, please click the Technical Documentation tab.

Table of Contents

Getting Started

This section is helpful for deployments as it provides you with pertinent information on prerequisites and properties.

Helpful Background Information

Workflows often include logic that varies from business to business. As a result, we often find that our Workflow Projects are more useful as modular components that can be incorporated into a larger process. In addition, they often can add value as a learning tool on how we integrate with other systems and how we do things within the Itential Automation Platform.

While these can be utilized, you may find more value in using them as a starting point to build around.

Prerequisites

Itential Workflow Projects are built and tested on particular versions of IAP. In addition, Workflow Projects are often dependent on external systems and as such, these Workflow Projects will have dependencies on these other systems. This version of Cisco - Meraki - REST has been tested with:

  • IAP 2023.2

External Dependencies

NameOS VersionAPI Version
Merakiv1

Adapters

NameVersionConfiguration Notes
adapter-meraki^1.3.0In order to run the workflows in this Pre-Built Automation, the adapter property choosepath must be added to the Meraki adapter configuration with value `"v1"`.

How to Install

To install the Workflow Project:

  • Verify you are running a supported version of the Itential Automation Platform (IAP) as listed above in the Supported IAP Versions section in order to install the Example Project.
  • Import the Example Project in Admin Essentials.

Testing

Cypress is generally used to test all Itential Example Projects. While Cypress is an opensource tool, at Itential we have internal libraries that have been built around Cypress to allow us to test with a deployed IAP.

When certifying our Example Projects for a release of IAP we run these tests against the particular version of IAP and create a release branch in GitLab. If you do not see the Example Project available in your version of IAP please contact Itential.

While Itential tests this Example Project and its capabilities, it is often the case the customer environments offer their own unique circumstances. Therefore, it is our recommendation that you deploy this Example Project into a development/testing environment in which you can test the Example Project.

Using this Workflow Project

Workflow Projects contain 1 or more workflows. Each of these workflows have different inputs and outputs.

Claim Network Devices - Meraki - REST

This is a modular workflow that automates the process of claiming a new network device.

Capabilities include:

  • The workflow is used to claim a device into a network

Entry Point IAP Component

The primary IAP component to run Claim Network Devices - Meraki - REST is listed below:

IAP Component NameIAP Component Type
Claim Network Devices - Meraki - RESTWorkflow

Inputs

The following table lists the inputs for Claim Network Devices - Meraki - REST:

NameTypeRequiredDescriptionExample Value
networkIdstringyesThe network ID to use for claiming devices
L_427115228141788519
adapterIdstringyesThe Meraki adapter instance to use in the job
Meraki
serialsarrayyesThe list of devices to claim as denoted by serial number
[
  "A1B2-C3D4-E4F5",
  "1111-2222-3333"
]

Outputs

The following table lists the outputs for Claim Network Devices - Meraki - REST:

NameTypeDescriptionExample Value
claimNetworkDevicesResultobjectResult of successfully claiming devices to network
{
  "icode": "AD.200",
  "response": ""
}
claimNetworkDevicesErrorobjectResult if failure claiming devices to network
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "meraki-connectorRest-handleEndResponse",
    "displayString": "Error 400 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 400,
    "raw_response": {
      "status": "success",
      "code": 400,
      "response": {
        "errors": [
          "Device with serial  not found"
        ]
      },
      "redirects": 0,
      "tripTime": "2649ms"
    }
  },
  "response": {
    "errors": [
      "Device with serial  not found"
    ]
  }
}

Query Output

No object to query upon success

The following items show how to query failure results from the output of Claim Network Devices - Meraki - REST:

Error Response Message

claimNetworkDevicesError.response.errors[0]

Example Inputs and Outputs

Example 1

Input:

{
  "networkId": "L_427115228141788519",
  "adapterId": "Meraki",
  "serials": ["A1B2-C3D4-E4F5",  "1111-2222-3333"]
} 

Output:

{   
  "icode": "AD.200", 
  "response": "" 
} 
Example 2

Input:

{
  "networkId": "L_427115228141788519",
  "adapterId": "Meraki",
  "serials": ["4444-5555-6666"]
} 

Output:

{
  "claimNetworkDevicesError": {
    "icode": "AD.500",
    "IAPerror": {
      "origin": "meraki-connectorRest-handleEndResponse",
      "displayString": "Error 400 received on request",
      "recommendation": "Verify the request is accurate via debug logs and postman",
      "code": 400,
      "raw_response": {
        "status": "success",
        "code": 400,
        "response": {
          "errors": [
            "Device with serial not found"
          ]
        },
        "redirects": 0,
        "tripTime": "2649ms"
      }
    },
    "response": {
      "errors": [
        "Device with serial not found"
      ]
    }
  },
  "claimNetworkDevicesResult": null
} 

API Links

No API Links provided.


Create Network - Meraki - REST

This is a modular workflow that automates the creation of a new network.

Capabilities include:

  • The workflow is used to create an organization network

Entry Point IAP Component

The primary IAP component to run Create Network - Meraki - REST is listed below:

IAP Component NameIAP Component Type
Create Network - Meraki - RESTWorkflow

Inputs

The following table lists the inputs for Create Network - Meraki - REST:

NameTypeRequiredDescriptionExample Value
adapterIdstringyesThe Meraki adapter instance to use in job
Meraki
networkNamestringyesThe name of the new organization network
Network
timeZonestringyesThe timezone of the network
America/New_York
tagsarrayyesList of tags to be applied to the network
[
  "tag1",
  "tag2"
]
productTypesarrayyesList of the product type(s) of the new network. If more than one type is included, the network will be a combined network.
[
  "appliance",
  "camera",
  "cellularGateway",
  "sensor",
  "switch",
  "systemsManager",
  "wireless"
]
organizationNamestringyesName of the organization within which to create network in Meraki
Organization
notesstringyesAdd any notes or additional information about the network
Note associated with the network created.

Outputs

The following table lists the outputs for Create Network - Meraki - REST:

NameTypeDescriptionExample Value
createNetworkSuccessobjectResult of creating network in Meraki
{
  "icode": "AD.201",
  "response": {
    "id": "L_627126248111380577",
    "organizationId": "627126248111354170",
    "productTypes": [
      "systemsManager"
    ],
    "url": "https://n114.meraki.com/Test-Network-2-c/n/NcJKHbYb/manage/usage/list",
    "name": "Test Network 2",
    "timeZone": "America/Chicago",
    "enrollmentString": null,
    "tags": [],
    "notes": "Create test organization network",
    "isBoundToConfigTemplate": false
  }
}
createNetworkErrorobjectResult if failure creating network in Meraki
{
  "icode": "AD.500",
  "IAPerror": {
    "origin": "meraki-connectorRest-handleEndResponse",
    "displayString": "Error 400 received on request",
    "recommendation": "Verify the request is accurate via debug logs and postman",
    "code": 400,
    "raw_response": {
      "status": "success",
      "code": 400,
      "response": {
        "errors": [
          "Name has already been taken"
        ]
      },
      "redirects": 0,
      "tripTime": "325ms"
    }
  },
  "response": {
    "errors": [
      "Name has already been taken"
    ]
  }
}

Query Output

The following items show how to query successful results from the output of Create Network - Meraki - REST:

Network ID

createNetworkSuccess.response.id

The following items show how to query failure results from the output of Create Network - Meraki - REST:

Error Response Message

createNetworkError.response.errors[0]

Example Inputs and Outputs

Example 1

Input:

{
  "adapterId": "Meraki",
  "networkName": "Test Network",
  "timeZone": "America/Denver",
  "tags": [
    "tag1",
    "tag2"
  ],
  "productTypes": [
    "appliance",
    "camera",
    "cellularGateway",
    "sensor",
    "switch",
    "systemsManager",
    "wireless"
  ],
  "notes": "Notes to associate with the created network",
  "organizationName": "Organization"
} 

Output:

{
  "createNetworkSuccess": {
    "icode": "AD.201",
    "response": {
      "id": "L_627126248111380578",
      "organizationId": "627126248111354170",
      "productTypes": [
        "systemsManager"
      ],
      "url": "https://.meraki.com/Test-Network-e/n/d-oQxbYb/manage/usage/list",
      "name": "Test Network 1",
      "timeZone": "America/Denver",
      "enrollmentString": null,
      "tags": [
        "tag1",
        "tag2"
      ],
      "notes": "Notes to associate with the created network",
      "isBoundToConfigTemplate": false
    }
  }
} 
Example 2

Input:

{
  "adapterId": "Meraki",
  "networkName": "Network Already Exists",
  "timeZone": "America/Denver",
  "tags": [
    "tag1",
    "tag2"
  ],
  "productTypes": [
    "appliance",
    "camera",
    "cellularGateway",
    "sensor",
    "switch",
    "systemsManager",
    "wireless"
  ],
  "notes": "Notes to associate with the created network",
  "organizationName": "Organization"
} 

Output:

{
  "createNetworkError": {
    "icode": "AD.500",
    "IAPerror": {
      "origin": "meraki-connectorRest-handleEndResponse",
      "displayString": "Error 400 received on request",
      "recommendation": "Verify the request is accurate via debug logs and postman",
      "code": 400,
      "raw_response": {
        "status": "success",
        "code": 400,
        "response": {
          "errors": [
            "Name has already been taken"
          ]
        },
        "redirects": 0,
        "tripTime": "325ms"
      }
    },
    "response": {
      "errors": [
        "Name has already been taken"
      ]
    }
  },
  "createNetworkSuccess": null
} 

API Links

No API Links provided.


Additional Information

Support

Please use your Itential Customer Success account if you need support when using this Workflow Project.