{"type":"api","title":"Update Network Floor Plan","meta":{"id":"/apps/pubhub/media/Meraki-Dashboard-API-v1-Documentation/e92a64d0814b40091de22f4a93378df69809b95e/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\u003e Date: 06 November, 2024\n\u003e\n\u003e [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.52.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":"wirelessController"},{"name":"policy"},{"name":"accessControlLists"},{"name":"accessPolicies"},{"name":"accounts"},{"name":"acls"},{"name":"actionBatches"},{"name":"adaptivePolicy"},{"name":"addresses"},{"name":"admins"},{"name":"airMarshal"},{"name":"alertTypes"},{"name":"alerts"},{"name":"alternateManagementInterface"},{"name":"analytics"},{"name":"api"},{"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":"autoLocate"},{"name":"autoRf"},{"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":"channels"},{"name":"claim"},{"name":"claimKey"},{"name":"clientCountHistory"},{"name":"clients"},{"name":"cloudMonitoring"},{"name":"commands"},{"name":"communicationPlans"},{"name":"compliance"},{"name":"configTemplates"},{"name":"configurationChanges"},{"name":"configure"},{"name":"configuredDevices"},{"name":"connectionStats"},{"name":"connections"},{"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":"esims"},{"name":"ethernet"},{"name":"eventTypes"},{"name":"events"},{"name":"exportEvents"},{"name":"failedConnections"},{"name":"failover"},{"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":"jobs"},{"name":"keys"},{"name":"l2"},{"name":"l3"},{"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":"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":"ratePlans"},{"name":"readings"},{"name":"recent"},{"name":"redundancy"},{"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":"serviceProviders"},{"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":"swap"},{"name":"swaps"},{"name":"switches"},{"name":"syslogServers"},{"name":"system"},{"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":"utilization"},{"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":"wirelessControllers"},{"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":{"description":"Update a floor plan's geolocation and other meta data","operationId":"updateNetworkFloorPlan","parameters":[{"name":"networkId","in":"path","description":"Network ID","schema":{"type":"string"},"required":true},{"name":"floorPlanId","in":"path","description":"Floor plan ID","schema":{"type":"string"},"required":true}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The name of your floor plan."},"center":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the center of your floor plan. If you want to change the geolocation data of your floor plan, either the 'center' or two adjacent corners (e.g. 'topLeftCorner' and 'bottomLeftCorner') must be specified. If 'center' is specified, the floor plan is placed over that point with no rotation. If two adjacent corners are specified, the floor plan is rotated to line up with the two specified points. The aspect ratio of the floor plan's image is preserved regardless of which corners/center are specified. (This means if that more than two corners are specified, only two corners may be used to preserve the floor plan's aspect ratio.). No two points can have the same latitude, longitude pair."},"bottomLeftCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the bottom left corner of your floor plan."},"bottomRightCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the bottom right corner of your floor plan."},"topLeftCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the top left corner of your floor plan."},"topRightCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the top right corner of your floor plan."},"imageContents":{"type":"string","format":"byte","description":"The file contents (a base 64 encoded string) of your new image. Supported formats are PNG, GIF, and JPG. Note that all images are saved as PNG files, regardless of the format they are uploaded in. If you upload a new image, and you do NOT specify any new geolocation fields ('center, 'topLeftCorner', etc), the floor plan will be recentered with no rotation in order to maintain the aspect ratio of your new image."}},"example":{"name":"HQ Floor Plan","center":{"lat":37.770040510499996,"lng":-122.38714009525},"bottomLeftCorner":{"lat":37.770040510499996,"lng":-122.38714009525},"bottomRightCorner":{"lat":37.770040510499996,"lng":-122.38714009525},"topLeftCorner":{"lat":37.770040510499996,"lng":-122.38714009525},"topRightCorner":{"lat":37.770040510499996,"lng":-122.38714009525},"imageContents":"2a9edd3f4ffd80130c647d13eacb59f3"}}}},"required":false},"responses":{"200":{"description":"Successful operation","content":{"application/json":{"schema":{"type":"object","properties":{"floorPlanId":{"type":"string","description":"Floor plan ID"},"imageUrl":{"type":"string","description":"The url link for the floor plan image."},"imageUrlExpiresAt":{"type":"string","description":"The time the image url link will expire."},"imageExtension":{"type":"string","description":"The format type of the image."},"imageMd5":{"type":"string","format":"byte","description":"The file contents (a base 64 encoded string) of your new image. Supported formats are PNG, GIF, and JPG. Note that all images are saved as PNG files, regardless of the format they are uploaded in. If you upload a new image, and you do NOT specify any new geolocation fields ('center, 'topLeftCorner', etc), the floor plan will be recentered with no rotation in order to maintain the aspect ratio of your new image."},"name":{"type":"string","description":"The name of your floor plan."},"devices":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Name of the device"},"lat":{"type":"number","format":"float","description":"Latitude of the device"},"lng":{"type":"number","format":"float","description":"Longitude of the device"},"address":{"type":"string","description":"Physical address of the device"},"notes":{"type":"string","description":"Notes for the device, limited to 255 characters"},"tags":{"type":"array","items":{"type":"string"},"description":"List of tags assigned to the device"},"networkId":{"type":"string","description":"ID of the network the device belongs to"},"serial":{"type":"string","description":"Serial number of the device"},"model":{"type":"string","description":"Model of the device"},"imei":{"type":"string","description":"IMEI of the device, if applicable"},"mac":{"type":"string","description":"MAC address of the device"},"lanIp":{"type":"string","description":"LAN IP address of the device"},"firmware":{"type":"string","description":"Firmware version of the device"},"productType":{"type":"string","description":"Product type of the device"},"details":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Additional property name"},"value":{"type":"string","description":"Additional property value"}}},"description":"Additional device information"}}},"description":"List of devices for the floorplan"},"width":{"type":"number","format":"float","description":"The width of your floor plan."},"height":{"type":"number","format":"float","description":"The height of your floor plan."},"center":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the center of your floor plan. The 'center' or two adjacent corners (e.g. 'topLeftCorner' and 'bottomLeftCorner') must be specified. If 'center' is specified, the floor plan is placed over that point with no rotation. If two adjacent corners are specified, the floor plan is rotated to line up with the two specified points. The aspect ratio of the floor plan's image is preserved regardless of which corners/center are specified. (This means if that more than two corners are specified, only two corners may be used to preserve the floor plan's aspect ratio.). No two points can have the same latitude, longitude pair."},"bottomLeftCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the bottom left corner of your floor plan."},"bottomRightCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the bottom right corner of your floor plan."},"topLeftCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the top left corner of your floor plan."},"topRightCorner":{"type":"object","properties":{"lat":{"type":"number","format":"float","description":"Latitude"},"lng":{"type":"number","format":"float","description":"Longitude"}},"description":"The longitude and latitude of the top right corner of your floor plan."}}},"example":{"floorPlanId":"g_1234567","imageUrl":"https://meraki-na.s3.amazonaws.com/assets/...","imageUrlExpiresAt":"2019-06-11 16:04:54 +00:00","imageExtension":"png","imageMd5":"2a9edd3f4ffd80130c647d13eacb59f3","name":"HQ Floor Plan","devices":[{"name":"My AP","lat":37.4180951010362,"lng":-122.098531723022,"address":"1600 Pennsylvania Ave","notes":"My AP's note","tags":["recently-added"],"networkId":"N_24329156","serial":"Q234-ABCD-5678","model":"MR34","imei":"123456789000000","mac":"00:11:22:33:44:55","lanIp":"1.2.3.4","firmware":"wireless-25-14","productType":"wireless","details":[{"name":"Catalyst serial","value":"123ABC"}]}],"width":100,"height":150.1,"center":{"lat":37.770040510499996,"lng":-122.38714009525},"bottomLeftCorner":{"lat":37.7696461495,"lng":-122.3880815506},"bottomRightCorner":{"lat":37.771524649766654,"lng":-122.38795275055205},"topLeftCorner":{"lat":37.769700101836364,"lng":-122.3888684251381},"topRightCorner":{"lat":37.77157860210302,"lng":-122.38873962509012}}}}}},"summary":"Update a floor plan's geolocation and other meta data","tags":["networks","configure","floorPlans"],"__originalOperationId":"updateNetworkFloorPlan","security":[{"meraki_api_key":[]},{"bearerAuth":[]}],"method":"put","path":"/networks/{networkId}/floorPlans/{floorPlanId}","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\nnetwork_id = 'L_646829496481105433'\nfloor_plan_id = ''\n\nresponse = dashboard.networks.updateNetworkFloorPlan(\n network_id, floor_plan_id, \n name='HQ Floor Plan', \n center={'lat': 37.770040510499996, 'lng': -122.38714009525}, \n bottomLeftCorner={'lat': 37.770040510499996, 'lng': -122.38714009525}, \n bottomRightCorner={'lat': 37.770040510499996, 'lng': -122.38714009525}, \n topLeftCorner={'lat': 37.770040510499996, 'lng': -122.38714009525}, \n topRightCorner={'lat': 37.770040510499996, 'lng': -122.38714009525}, \n imageContents='2a9edd3f4ffd80130c647d13eacb59f3'\n)\n\nprint(response)","highlight":"python"}}}}