{"type":"api","title":"Create Device Live Tools Cable Test","meta":{"id":"/apps/pubhub/media/Meraki-Dashboard-API-v1-Documentation/4723762d29b3380de018ae8c0d8a59499a6523e0/5c63a5d4-9452-397a-85eb-8b6fec45147e","info":{"title":"Meraki Dashboard API","description":"A RESTful API to programmatically manage and monitor Cisco Meraki networks at scale.\n\n> Date: 03 July, 2024\n>\n> [Recent Updates](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n","contact":{"name":"Meraki Developer Community","url":"https://meraki.io/community"},"version":"1.48.0"},"security":[{"meraki_api_key":[]},{"bearerAuth":[]}],"tags":[{"name":"organizations"},{"name":"networks"},{"name":"devices"},{"name":"insight"},{"name":"wireless"},{"name":"camera"},{"name":"appliance"},{"name":"switch"},{"name":"cellularGateway"},{"name":"sm"},{"name":"sensor"},{"name":"administered"},{"name":"accessControlLists"},{"name":"accessPolicies"},{"name":"acls"},{"name":"actionBatches"},{"name":"adaptivePolicy"},{"name":"addresses"},{"name":"admins"},{"name":"airMarshal"},{"name":"alertTypes"},{"name":"alerts"},{"name":"alternateManagementInterface"},{"name":"analytics"},{"name":"apiRequests"},{"name":"apnsCert"},{"name":"appliances"},{"name":"applicationCategories"},{"name":"applicationUsage"},{"name":"applications"},{"name":"areas"},{"name":"arpInspection"},{"name":"arpTable"},{"name":"artifacts"},{"name":"assets"},{"name":"assignments"},{"name":"authenticationToken"},{"name":"availabilities"},{"name":"bandwidthUsageHistory"},{"name":"bgp"},{"name":"billing"},{"name":"bluetooth"},{"name":"bluetoothClients"},{"name":"bonjourForwarding"},{"name":"boundaries"},{"name":"brandingPolicies"},{"name":"bulk"},{"name":"bulkUpdate"},{"name":"byBoundary"},{"name":"byClient"},{"name":"byDevice"},{"name":"byEnergyUsage"},{"name":"byInterval"},{"name":"byMetric"},{"name":"byModel"},{"name":"byNetwork"},{"name":"byStatus"},{"name":"bySwitch"},{"name":"byType"},{"name":"byUsage"},{"name":"byUtilization"},{"name":"bypassActivationLockAttempts"},{"name":"cableTest"},{"name":"callbacks"},{"name":"categories"},{"name":"cellular"},{"name":"cellularFirewallRules"},{"name":"cellularUsageHistory"},{"name":"certs"},{"name":"changeHistory"},{"name":"channelUtilization"},{"name":"channelUtilizationHistory"},{"name":"claim"},{"name":"claimKey"},{"name":"clientCountHistory"},{"name":"clients"},{"name":"cloudMonitoring"},{"name":"commands"},{"name":"compliance"},{"name":"configTemplates"},{"name":"configurationChanges"},{"name":"configure"},{"name":"configuredDevices"},{"name":"connectionStats"},{"name":"connectivity"},{"name":"connectivityEvents"},{"name":"connectivityMonitoringDestinations"},{"name":"contentFiltering"},{"name":"coterm"},{"name":"current"},{"name":"customAnalytics"},{"name":"customPerformanceClasses"},{"name":"dataRateHistory"},{"name":"delegated"},{"name":"desktopLogs"},{"name":"details"},{"name":"detections"},{"name":"deviceCommandLogs"},{"name":"deviceProfiles"},{"name":"deviceTypeGroupPolicies"},{"name":"dhcp"},{"name":"dhcpServerPolicy"},{"name":"dscpTaggingOptions"},{"name":"dscpToCosMappings"},{"name":"eapOverride"},{"name":"earlyAccess"},{"name":"electronicShelfLabel"},{"name":"entitlements"},{"name":"ethernet"},{"name":"eventTypes"},{"name":"events"},{"name":"exportEvents"},{"name":"failedConnections"},{"name":"features"},{"name":"fields"},{"name":"firewall"},{"name":"firewalledServices"},{"name":"firmware"},{"name":"firmwareUpgrades"},{"name":"floorPlans"},{"name":"groupPolicies"},{"name":"groups"},{"name":"health"},{"name":"healthByTime"},{"name":"historical"},{"name":"history"},{"name":"hotspot20"},{"name":"httpServers"},{"name":"identities"},{"name":"identityPsks"},{"name":"idps"},{"name":"imports"},{"name":"inboundCellularFirewallRules"},{"name":"inboundFirewallRules"},{"name":"interfaces"},{"name":"internetPolicies"},{"name":"intrusion"},{"name":"inventory"},{"name":"ipv6"},{"name":"l3FirewallRules"},{"name":"l7FirewallRules"},{"name":"lan"},{"name":"latencyHistory"},{"name":"latencyStats"},{"name":"latest"},{"name":"licenses"},{"name":"licensing"},{"name":"lines"},{"name":"linkAggregations"},{"name":"linkLayer"},{"name":"live"},{"name":"liveTools"},{"name":"lldpCdp"},{"name":"loginSecurity"},{"name":"logs"},{"name":"lossAndLatencyHistory"},{"name":"malware"},{"name":"managementInterface"},{"name":"manufacturers"},{"name":"me"},{"name":"merakiAuthUsers"},{"name":"meshStatuses"},{"name":"models"},{"name":"monitor"},{"name":"monitoredMediaServers"},{"name":"mqttBrokers"},{"name":"mtu"},{"name":"multicast"},{"name":"netflow"},{"name":"networkAdapters"},{"name":"networkHealth"},{"name":"objectDetectionModels"},{"name":"onboarding"},{"name":"oneToManyNatRules"},{"name":"oneToOneNatRules"},{"name":"openapiSpec"},{"name":"optIns"},{"name":"order"},{"name":"ospf"},{"name":"overview"},{"name":"packetLoss"},{"name":"packets"},{"name":"payloadTemplates"},{"name":"performance"},{"name":"performanceHistory"},{"name":"permissions"},{"name":"pii"},{"name":"piiKeys"},{"name":"ping"},{"name":"pingDevice"},{"name":"policies"},{"name":"policy"},{"name":"policyObjects"},{"name":"portForwardingRules"},{"name":"portSchedules"},{"name":"ports"},{"name":"power"},{"name":"powerModules"},{"name":"prefixes"},{"name":"prepare"},{"name":"priorities"},{"name":"profiles"},{"name":"provisioning"},{"name":"qosRules"},{"name":"qualityAndRetention"},{"name":"qualityRetentionProfiles"},{"name":"radio"},{"name":"readings"},{"name":"recent"},{"name":"relationships"},{"name":"rendezvousPoints"},{"name":"requests"},{"name":"responseCodes"},{"name":"restrictions"},{"name":"rfProfiles"},{"name":"roles"},{"name":"rollbacks"},{"name":"routing"},{"name":"rules"},{"name":"saml"},{"name":"samlRoles"},{"name":"schedules"},{"name":"sdwan"},{"name":"search"},{"name":"security"},{"name":"securityCenters"},{"name":"seen"},{"name":"sense"},{"name":"sentry"},{"name":"servers"},{"name":"settings"},{"name":"signalQualityHistory"},{"name":"sims"},{"name":"singleLan"},{"name":"siteToSiteVpn"},{"name":"smDevicesForKey"},{"name":"smOwnersForKey"},{"name":"snmp"},{"name":"softwares"},{"name":"splash"},{"name":"splashAuthorizationStatus"},{"name":"splashLoginAttempts"},{"name":"ssids"},{"name":"stacks"},{"name":"staged"},{"name":"stages"},{"name":"staticRoutes"},{"name":"statics"},{"name":"stats"},{"name":"status"},{"name":"statuses"},{"name":"stormControl"},{"name":"stp"},{"name":"subnetPool"},{"name":"subnets"},{"name":"subscription"},{"name":"subscriptions"},{"name":"summary"},{"name":"swaps"},{"name":"switches"},{"name":"syslogServers"},{"name":"targetGroups"},{"name":"themes"},{"name":"thirdPartyVPNPeers"},{"name":"throughputTest"},{"name":"top"},{"name":"topology"},{"name":"traffic"},{"name":"trafficAnalysis"},{"name":"trafficHistory"},{"name":"trafficShaping"},{"name":"trustedAccessConfigs"},{"name":"trustedServers"},{"name":"upgrades"},{"name":"uplink"},{"name":"uplinkBandwidth"},{"name":"uplinkSelection"},{"name":"uplinks"},{"name":"uplinksLossAndLatency"},{"name":"usage"},{"name":"usageHistories"},{"name":"usageHistory"},{"name":"userAccessDevices"},{"name":"users"},{"name":"v4"},{"name":"video"},{"name":"videoLink"},{"name":"vlanAssignments"},{"name":"vlanProfiles"},{"name":"vlans"},{"name":"vmx"},{"name":"vpn"},{"name":"vpnExclusions"},{"name":"vpnFirewallRules"},{"name":"vppAccounts"},{"name":"wakeOnLan"},{"name":"warmSpare"},{"name":"warnings"},{"name":"webhookTests"},{"name":"webhooks"},{"name":"wirelessProfiles"},{"name":"wlanLists"},{"name":"zones"}],"x-parser-conf":{"overview":{"markdownPath":"docs/overview.md"},"theme":"meraki","serverConfig":true,"meta":{"useProxy":true},"httpBearer":{"bearerToken":"75dd5334bef4d2bc96f26138c163c0a3fa0b5ca6"},"labelConfig":{"endpoint":{"field":"operationId","format":"startCase"}},"groupBy":{"$remoteModule":"config/group_platform.js"},"sortBy":{"$remoteModule":"config/sort_by.js"},"exampleAsDefault":true,"expand":3,"sampleCode":{"python":{"folder":"meraki/sdk/python","name":"Meraki Python Library","highlight":"python"}},"variables":{"organizationId":"1215707","networkId":"N_784752235069315754","serial":"QBSB-VQ3J-XZ54"}},"openapi":"3.0.1","servers":[{"url":"https://api.meraki.com/{basePath}","variables":{"basePath":{"default":"api/v1"}}}],"securitySchemes":{"meraki_api_key":{"type":"apiKey","name":"X-Cisco-Meraki-API-Key","in":"header"},"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key"}}},"spec":{"callbacks":{"cableTest":{"{$request.body#/callback/url}":{"post":{"requestBody":{"required":true,"description":"Callback payload","content":{"application/json":{"schema":{"type":"object","properties":{"organization":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"network":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}}},"sentAt":{"type":"string"},"callbackId":{"type":"string"},"message":{"type":"object","properties":{"cableTestId":{"type":"string","description":"Id of the cable test request. Used to check the status of the request."},"url":{"type":"string","description":"GET this url to check the status of your cable test request."},"request":{"type":"object","properties":{"serial":{"type":"string","description":"Device serial number"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of ports for which to perform the cable test."}},"description":"Cable test request parameters"},"status":{"type":"string","enum":["complete","failed","new","ready","running","scheduled"],"description":"Status of the cable test request."},"results":{"type":"array","items":{"type":"object","properties":{"port":{"type":"string","description":"The port for which the test was performed."},"status":{"type":"string","enum":["down","error","in-progress","up"],"description":"The current status of the port. If the cable test is still being performed on the port, \"in-progress\" is used. If an error occurred during the cable test, \"error\" is used and the error property will be populated."},"speedMbps":{"type":"integer","description":"Speed in Mbps. A speed of 0 indicates the port is down or the port speed is automatic."},"error":{"type":"string","description":"If an error occurred during the cable test, the error message will be populated here."},"pairs":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","enum":[0,1,2,3],"description":"The index of the twisted pair tested."},"status":{"type":"string","enum":["abnormal","couplex","fail","forced","in-progress","invalid","not-supported","ok","open","open or short","short","short or abnormal","short or couplex","unknown"],"description":"The test result of the twisted pair tested."},"lengthMeters":{"type":"integer","description":"The detected length of the twisted pair."}}},"description":"Results for each twisted pair within the cable."}}},"description":"Results of the cable test request, one for each requested port."},"error":{"type":"string","description":"An error message for a failed execution"}}}}}}}},"responses":{"2XX":{"description":"Your server return this code if it accepts the callback"}}}}}},"description":"Enqueue a job to perform a cable test for the device on the specified ports. This endpoint has a sustained rate limit of one request every five seconds per device, with an allowed burst of five requests.","operationId":"createDeviceLiveToolsCableTest","parameters":[{"name":"serial","in":"path","description":"Serial","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ports":{"type":"array","items":{"type":"string"},"description":"A list of ports for which to perform the cable test."},"callback":{"type":"object","properties":{"url":{"type":"string","description":"The callback URL for the webhook target. If using this field, please also specify a sharedSecret."},"sharedSecret":{"type":"string","description":"A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."},"httpServer":{"type":"object","properties":{"id":{"type":"string","description":"The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."}},"description":"The webhook receiver used for the callback webhook."},"payloadTemplate":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."}},"description":"The payload template of the webhook used for the callback"}},"x-release-stage":"general_availability","description":"Details for the callback. Please include either an httpServerId OR url and sharedSecret"}},"example":{"ports":["2","8"],"callback":{"url":"https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031","sharedSecret":"secret","httpServer":{"id":"aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="},"payloadTemplate":{"id":"wpt_2100"}}},"required":["ports"]}}},"required":true},"responses":{"201":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"cableTestId":{"type":"string","description":"Id of the cable test request. Used to check the status of the request."},"url":{"type":"string","description":"GET this url to check the status of your cable test request."},"request":{"type":"object","properties":{"serial":{"type":"string","description":"Device serial number"},"ports":{"type":"array","items":{"type":"string"},"description":"A list of ports for which to perform the cable test."}},"description":"Cable test request parameters"},"status":{"type":"string","enum":["complete","failed","new","ready","running","scheduled"],"description":"Status of the cable test request."},"callback":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"},"url":{"type":"string","description":"The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"},"status":{"type":"string","description":"The status of the callback"}},"description":"Information for callback used to send back results","x-release-stage":"general_availability"}}},"example":{"cableTestId":"1284392014819","url":"/devices/Q234-ABCD-5678/liveTools/cableTest/1284392014819","request":{"serial":"Q234-ABCD-5678","ports":["2","8"]},"status":"complete","callback":{"id":"1284392014819","url":"https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031","status":"new"}}}}}},"summary":"Enqueue a job to perform a cable test for the device on the specified ports","tags":["devices","liveTools","cableTest"],"__originalOperationId":"createDeviceLiveToolsCableTest","security":[{"meraki_api_key":[]},{"bearerAuth":[]}],"method":"post","path":"/devices/{serial}/liveTools/cableTest","sampleCode":{"Meraki Python Library":{"code":"import meraki\n\n# Defining your API key as a variable in source code is discouraged.\n# This API key is for a read-only docs-specific environment.\n# In your own code, use an environment variable as shown under the Usage section\n# @ https://github.com/meraki/dashboard-api-python/\n\nAPI_KEY = '75dd5334bef4d2bc96f26138c163c0a3fa0b5ca6'\n\ndashboard = meraki.DashboardAPI(API_KEY)\n\nserial = 'Q2QN-9J8L-SLPD'\nports = ['2', '8']\n\nresponse = dashboard.devices.createDeviceLiveToolsCableTest(\n serial, ports, \n callback={'url': 'https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031', 'sharedSecret': 'secret', 'httpServer': {'id': 'aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M='}, 'payloadTemplate': {'id': 'wpt_2100'}}\n)\n\nprint(response)","highlight":"python"}}}}