{"id":13639042,"url":"https://github.com/NTTLimitedRD/Meraki.Dashboard","last_synced_at":"2025-04-19T21:35:25.583Z","repository":{"id":86511895,"uuid":"114576367","full_name":"NTTLimitedRD/Meraki.Dashboard","owner":"NTTLimitedRD","description":"A strong-typed, mockable Cisco Meraki Dashboard API .Net Standard client library.","archived":false,"fork":false,"pushed_at":"2022-12-07T18:39:02.000Z","size":50,"stargazers_count":6,"open_issues_count":2,"forks_count":3,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-05-22T06:09:55.198Z","etag":null,"topics":["c-sharp","cisco-meraki","cisco-meraki-ap","donet-core","dotnet","dotnet-standard","dotnetcore","dotnetstandard","meraki","meraki-dashboard"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NTTLimitedRD.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-12-17T23:26:10.000Z","updated_at":"2021-01-11T02:22:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"f0467ea3-d507-4ea8-8928-7507e0f66b7e","html_url":"https://github.com/NTTLimitedRD/Meraki.Dashboard","commit_stats":null,"previous_names":["dimensiondatacbusydney/meraki.dashboard"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTTLimitedRD%2FMeraki.Dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTTLimitedRD%2FMeraki.Dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTTLimitedRD%2FMeraki.Dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NTTLimitedRD%2FMeraki.Dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NTTLimitedRD","download_url":"https://codeload.github.com/NTTLimitedRD/Meraki.Dashboard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223810248,"owners_count":17206722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-sharp","cisco-meraki","cisco-meraki-ap","donet-core","dotnet","dotnet-standard","dotnetcore","dotnetstandard","meraki","meraki-dashboard"],"created_at":"2024-08-02T01:00:57.004Z","updated_at":"2024-11-09T09:30:32.290Z","avatar_url":"https://github.com/NTTLimitedRD.png","language":"C#","funding_links":[],"categories":["Dashboards"],"sub_categories":["Contents"],"readme":"[![Build status](https://ci.appveyor.com/api/projects/status/oehy76art96ex6sp?svg=true)](https://ci.appveyor.com/project/anthonylangsworth/meraki-dashboard-r15c8)\n[![NuGet Badge](https://buildstats.info/nuget/Meraki.Dashboard)](https://www.nuget.org/packages/Meraki.Dashboard/)\n\n# Meraki Dashboard API .Net Standard Client\n\n[Meraki](http://meraki.cisco.com) is a network appliance vendor acquired by Cisco in 2012 that focuses on \ncloud-hosted management and ease of use. Their devices are increasingly popular with companies of any size looking\nto simply their network management.\n\nMeraki provides a limited web API for managing their devices called the [Dashboard API](https://dashboard.meraki.com/api_docs). \nMeraki provides wrappers in NodeJS (JavaScript), Ruby and Python but not for C#. This library is the \nbeginnings of a .Net Standard 2.0 wrapper. Its goals are:\n1. Wrap the Meraki Dashboard APIs, making them callable with the least effort.\n1. Follow C# standards and conventions as much as possible. For example, provide lists and enums with transparent conversions.\n1. Allow easy mocking to make automated testing of calling code easier.\n1. Allow APIs not wrapped by this library to be callable.\n1. Provide assistance for debugging both this library and Meraki Dashboard API calls.\n\nIt is currently a work in progress. While this library is in beta, breaking changes are still possible.\n\nSee [LICENSE](LICENSE) for the license. Based off original work by Michael Park at https://github.com/migrap/Meraki. Meraki and Cisco are trademarks owned by Cisco Meraki and Cisco respectively.\n\n## Use\n\nCreate a `MerakiDashboardClient` instance using `MerakiDashboardClientFactory.Create`, supplying your API key, \nthen call methods on it, such as:\n\n``` C#\nusing Meraki.Dashboard;\n\n // ...\n\nstring apiKey; // API key from the user's profile in the Meraki Dashboard\nstring organizationId; // my organization ID\nusing (MerakiDashboardClient merakiDashboardClient = MerakiDashboardClientFactory.Create(apiKey))\n{\n\ttry\n\t{\n\t\t// GET /organizations/[id] as documented at \n\t\t// https://dashboard.meraki.com/api_docs#return-an-organization\n\t\tOrganization organization = await merakiDashboardClient.GetOrganizationAsync(organizationId);\n\n\t\t// ...\n\t}\n\tcatch(HttpRequestException ex)\n\t{\n\t\t// Hande errors\n\t}\n}\n```\n\n`MerakiDashboardClientFactory.Create` also accepts an `IOption\u003cMerakiClientOptions\u003e` overload when \nloading settings from an appSettings.json file as shown in [`TestOption.cs`](test/Meraki.Dashboard.Test/TestOptions.cs).\n\nIf Meraki introduces a new Dashboard API where there is no support in the library, use the `Client` \nproperty to get access to the underlying `MerakiHttpApiClient` object that a `MerakiDashboardClient`\nobject uses to call Meraki Dashboard APIs.\n\nFor example, if Meraki introduced a `GET /networks/[id]/alerts` API to retreive the alerts\nfor each network (found on the Dashboard under \"Network-wide\" -\u003e \"Configure\" -\u003e \"Alerts):\n\n``` C#\nusing Meraki.Dashboard;\n\n // ...\n\n [DataContract]\n public class NetworkAlerts\n {\n\t[DataMember(Name=\"networkId\")]\n\tpublic string NetworkId { get; set; }\n\n\t// Insert other fields\n }\n\nstring apiKey; // API key from the user's profile in the Meraki Dashboard\nstring networkId; // my network ID\nusing (MerakiDashboardClient merakiDashboardClient = MerakiDashboardClientFactory.Create(apiKey))\n{\n\tNetworkAlerts networkAlerts = \n\t\tawait merakiDashboardClient.Client.GetAsync\u003cNetworkAlerts\u003e(\"v0/network/{id}/alerts\");\n\n\t// ...\n}\n```\n\nThe [Meraki Dashboard APIs](https://dashboard.meraki.com/api_docs) with at least partial support are:\n\n- [x] GET /organizations/[organization_id]/admins\n- [ ] POST /organizations/[organization_id]/admins\n- [ ] PUT /organizations/[organization_id]/admins/[id]\n- [ ] DELETE /organizations/[organization_id]/admins/[id]\n- [x] GET /devices/[serial]/clients \n- [ ] GET /networks/[networkId]/clients/[client_mac]/policy\n- [ ] PUT /networks/[id]/clients/[mac]/policy\n- [ ] GET /networks/[id]/clients/[mac]/splashAuthorizationStatus\n- [ ] PUT /networks/[id]/clients/[mac]/splashAuthorizationStatus\n- [ ] GET /organizations/[organizationId]/configTemplates\n- [ ] DELETE /organizations/[organizationId]/configTemplates/[id]\n- [x] GET /networks/[networkId]/devices\n- [x] GET /networks/[networkId]/devices/[serial]\n- [ ] GET /networks/[networkId]/devices/[serial]/uplink \n- [ ] PUT /networks/[networkId]/devices/[serial]\n- [ ] POST /networks/[networkId]/devices/claim\n- [ ] GET /networks/[networkId]/devices/[serial]/lldp_cdp\n- [ ] PUT /networks/[networkId]/cellularFirewallRules\n- [ ] GET /networks/[networkId]/l3FirewallRules\n- [ ] PUT /networks/[networkId]/l3FirewallRules\n- [ ] GET /organizations/[organizationId]/vpnFirewallRules\n- [ ] PUT /organizations/[organizationId]/vpnFirewallRules\n- [ ] GET /networks/[networkId]/ssids/[number]/l3FirewallRules\n- [ ] PUT /networks/[networkId]/ssids/[number]/l3FirewallRules\n- [ ] GET /networks/[id]/groupPolicies\n- [x] GET /organizations/[organizationId]/networks \n- [x] GET /networks/[id]\n- [ ] PUT /networks/[id]\n- [ ] POST /organizations/[organizationId]/networks\n- [ ] DELETE /networks/[id]\n- [ ] POST /networks/[id]/bind\n- [ ] POST /networks/[id]/unbind\n- [ ] GET /networks/[id]/siteToSiteVpn\n- [ ] PUT /networks/[id]/siteToSiteVpn\n- [x] GET /networks/[id]/traffic\n- [ ] GET /networks/[id]/accessPolicies\n- [ ] GET /networks/[id]/airMarshal\n- [ ] GET /networks/[id]/bluetoothSettings\n- [ ] PUT /networks/[id]/bluetoothSettings\n- [x] GET /organizations\n- [x] GET /organizations/[id]\n- [ ] PUT /organizations/[id]\n- [ ] POST /organizations\n- [ ] POST /organizations/[id]/clone\n- [ ] POST /organizations/[id]/claim\n- [x] GET /organizations/[id]/licenseState\n- [x] GET /organizations/[id]/inventory\n- [x] GET /organizations/[id]/snmp\n- [x] PUT /organizations/[id]/snmp\n- [ ] GET /organizations/[id]/thirdPartyVPNPeers\n- [ ] PUT /organizations/[id]/thirdPartyVPNPeers\n- [ ] PUT /organizations/[id]/thirdPartyVPNPeers\n- [ ] GET /networks/[networkId]/phoneAssignments\n- [ ] GET /networks/[networkId]/phoneAssignments/[serial]\n- [ ] PUT /networks/[networkId]/phoneAssignments/[serial]\n- [ ] DELETE /networks/[networkId]/phoneAssignments/[serial]\n- [ ] GET /networks/[networkId]/phoneContacts\n- [ ] POST /networks/[networkId]/phoneContacts\n- [ ] PUT /networks/[networkId]/phoneContacts/[contactId]\n- [ ] DELETE /networks/[networkId]/phoneContacts/[contactId]\n- [ ] GET /networks/[networkId]/phoneNumbers\n- [ ] GET /networks/[networkId]/phoneNumbers/available\n- [ ] GET /organizations/[organizationId]/samlRoles\n- [ ] GET /organizations/[organizationId]/samlRoles/[id]\n- [ ] PUT /organizations/[organizationId]/samlRoles/[id]\n- [ ] POST /organizations/[organizationId]/samlRoles\n- [ ] DELETE /organizations/[organizationId]/samlRoles/[id]\n- [ ] GET /networks/[network_id]/sm/devices\n- [ ] PUT /networks/[network_id]/sm/devices/tags\n- [ ] PUT /networks/[network_id]/sm/device/fields\n- [ ] PUT /networks/[network_id]/sm/devices/lock\n- [ ] PUT /networks/[network_id]/sm/device/wipe\n- [ ] PUT /networks/[network_id]/sm/devices/checkin\n- [ ] PUT /networks/[network_id]/sm/devices/move\n- [ ] GET /networks/[networkId]/ssids\n- [ ] GET /networks/[networkId]/ssids/[number]\n- [ ] PUT /networks/[networkId]/ssids/[number]\n- [x] GET /devices/[serial]/switchPorts\n- [ ] GET /devices/[serial]/switchPorts/[number]\n- [ ] PUT /devices/[serial]/switchPorts/[number]\n- [ ] GET /networks/[networkId]/staticRoutes\n- [ ] GET /networks/[networkId]/staticRoutes/[srId]\n- [ ] PUT /networks/[networkId]/staticRoutes/[srId]\n- [ ] POST /networks/[networkId]/staticRoutes\n- [ ] DELETE /networks/[networkId]/staticRoutes/[srId] \n- [x] GET /networks/[networkId]/vlans\n- [ ] GET /networks/[networkId]/vlans/[vlanId]\n- [ ] PUT /networks/[networkId]/vlans/[vlanId]\n- [ ] POST /networks/[networkId]/vlans\n- [ ] DELETE /networks/[networkId]/vlans/[id]\n\n## Mocking\n\nAs stated above, one of the main goals for providing a client library is \nmocking it when unit testing the calling code as shown in \n[`TestMerakiDashboardClientMocking.cs`](test/Meraki.Dashboard.Test/TestMerakiDashboardClientMocking.cs).\n\n## Exercise\n\nThe exercises found at http://developers.meraki.com/post/152434096196/dashboard-api-learning-lab can be found \nin the `Meraki.Dashboard.Console` project. At the time of writing, the Meraki organization and devices shown does\nnot match the documented exercises. However, this may still be helpful to those looking for more complex\nexamples.\n\n## Contributing\n\nPull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNTTLimitedRD%2FMeraki.Dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNTTLimitedRD%2FMeraki.Dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNTTLimitedRD%2FMeraki.Dashboard/lists"}