From 979135fab857fa0ba6ece5a0fa36304593ca74fb Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 19 Mar 2025 21:57:16 +0000 Subject: [PATCH] Automatically regenerated library to version 1.56.0. --- meraki/__init__.py | 2 +- meraki/aio/api/appliance.py | 548 ++++++++++++++++- meraki/aio/api/camera.py | 4 +- meraki/aio/api/licensing.py | 4 +- meraki/aio/api/networks.py | 16 +- meraki/aio/api/organizations.py | 42 ++ meraki/aio/api/sensor.py | 12 +- meraki/aio/api/switch.py | 26 +- meraki/aio/api/wireless.py | 208 ++++++- meraki/api/appliance.py | 548 ++++++++++++++++- meraki/api/batch/appliance.py | 433 ++++++++++++- meraki/api/batch/camera.py | 4 +- meraki/api/batch/networks.py | 3 +- meraki/api/batch/sensor.py | 8 +- meraki/api/batch/switch.py | 8 +- meraki/api/batch/wireless.py | 107 +++- meraki/api/camera.py | 4 +- meraki/api/licensing.py | 4 +- meraki/api/networks.py | 16 +- meraki/api/organizations.py | 42 ++ meraki/api/sensor.py | 12 +- meraki/api/switch.py | 26 +- meraki/api/wireless.py | 208 ++++++- poetry.lock | 1004 +++++++++++++++++++++++++++++++ pyproject.toml | 2 +- 25 files changed, 3229 insertions(+), 62 deletions(-) create mode 100644 poetry.lock diff --git a/meraki/__init__.py b/meraki/__init__.py index 1e218ff0..1c0355dd 100644 --- a/meraki/__init__.py +++ b/meraki/__init__.py @@ -43,7 +43,7 @@ ) from meraki.rest_session import * -__version__ = '1.54.0' +__version__ = '1.56.0' class DashboardAPI(object): diff --git a/meraki/aio/api/appliance.py b/meraki/aio/api/appliance.py index 8ccf189c..e3e12909 100644 --- a/meraki/aio/api/appliance.py +++ b/meraki/aio/api/appliance.py @@ -667,6 +667,31 @@ def getNetworkApplianceFirewallL7FirewallRulesApplicationCategories(self, networ + def updateNetworkApplianceFirewallMulticastForwarding(self, networkId: str, rules: list): + """ + **Update static multicast forward rules for a network** + https://developer.cisco.com/meraki/api-v1/#!update-network-appliance-firewall-multicast-forwarding + + - networkId (string): Network ID + - rules (array): Static multicast forwarding rules. Pass an empty array to clear all rules. + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'firewall', 'multicastForwarding'], + 'operation': 'updateNetworkApplianceFirewallMulticastForwarding' + } + networkId = urllib.parse.quote(str(networkId), safe='') + resource = f'/networks/{networkId}/appliance/firewall/multicastForwarding' + + body_params = ['rules', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.put(metadata, resource, payload) + + + def getNetworkApplianceFirewallOneToManyNatRules(self, networkId: str): """ **Return the 1:Many NAT mapping rules for an MX network** @@ -2271,6 +2296,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw - mode (string): The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub' - hubs (array): The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required. - subnets (array): The list of subnets and their VPN presence. + - subnet (object): Configuration of subnet features """ kwargs.update(locals()) @@ -2286,7 +2312,7 @@ def updateNetworkApplianceVpnSiteToSiteVpn(self, networkId: str, mode: str, **kw networkId = urllib.parse.quote(str(networkId), safe='') resource = f'/networks/{networkId}/appliance/vpn/siteToSiteVpn' - body_params = ['mode', 'hubs', 'subnets', ] + body_params = ['mode', 'hubs', 'subnets', 'subnet', ] payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} return self._session.put(metadata, resource, payload) @@ -2360,6 +2386,526 @@ def swapNetworkApplianceWarmSpare(self, networkId: str): + def getOrganizationApplianceDnsLocalProfiles(self, organizationId: str, **kwargs): + """ + **Fetch the local DNS profiles used in the organization** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-dns-local-profiles + + - organizationId (string): Organization ID + - profileIds (array): Optional parameter to filter the results by profile IDs + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], + 'operation': 'getOrganizationApplianceDnsLocalProfiles' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles' + + query_params = ['profileIds', ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = ['profileIds', ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params.pop(k.strip()) + + return self._session.get(metadata, resource, params) + + + + def createOrganizationApplianceDnsLocalProfile(self, organizationId: str, name: str): + """ + **Create a new local DNS profile** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-local-profile + + - organizationId (string): Organization ID + - name (string): Name of profile + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], + 'operation': 'createOrganizationApplianceDnsLocalProfile' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles' + + body_params = ['name', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def getOrganizationApplianceDnsLocalProfilesAssignments(self, organizationId: str, **kwargs): + """ + **Fetch the local DNS profile assignments in the organization** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-dns-local-profiles-assignments + + - organizationId (string): Organization ID + - profileIds (array): Optional parameter to filter the results by profile IDs + - networkIds (array): Optional parameter to filter the results by network IDs + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles', 'assignments'], + 'operation': 'getOrganizationApplianceDnsLocalProfilesAssignments' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/assignments' + + query_params = ['profileIds', 'networkIds', ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = ['profileIds', 'networkIds', ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params.pop(k.strip()) + + return self._session.get(metadata, resource, params) + + + + def createOrganizationApplianceDnsLocalProfilesAssignmentsBulkCreate(self, organizationId: str, items: list): + """ + **Assign the local DNS profile to networks in the organization** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-local-profiles-assignments-bulk-create + + - organizationId (string): Organization ID + - items (array): List containing the network ID and Profile ID + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles', 'assignments', 'bulkCreate'], + 'operation': 'createOrganizationApplianceDnsLocalProfilesAssignmentsBulkCreate' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkCreate' + + body_params = ['items', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete(self, organizationId: str, items: list): + """ + **Unassign the local DNS profile to networks in the organization** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-local-profiles-assignments-bulk-delete + + - organizationId (string): Organization ID + - items (array): List containing the assignment ID + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles', 'assignments', 'bulkDelete'], + 'operation': 'createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkDelete' + + body_params = ['items', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def updateOrganizationApplianceDnsLocalProfile(self, organizationId: str, profileId: str, name: str): + """ + **Update a local DNS profile** + https://developer.cisco.com/meraki/api-v1/#!update-organization-appliance-dns-local-profile + + - organizationId (string): Organization ID + - profileId (string): Profile ID + - name (string): Name of profile + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], + 'operation': 'updateOrganizationApplianceDnsLocalProfile' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + profileId = urllib.parse.quote(str(profileId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}' + + body_params = ['name', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.put(metadata, resource, payload) + + + + def deleteOrganizationApplianceDnsLocalProfile(self, organizationId: str, profileId: str): + """ + **Deletes a local DNS profile** + https://developer.cisco.com/meraki/api-v1/#!delete-organization-appliance-dns-local-profile + + - organizationId (string): Organization ID + - profileId (string): Profile ID + """ + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'profiles'], + 'operation': 'deleteOrganizationApplianceDnsLocalProfile' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + profileId = urllib.parse.quote(str(profileId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}' + + return self._session.delete(metadata, resource) + + + + def getOrganizationApplianceDnsLocalRecords(self, organizationId: str, **kwargs): + """ + **Fetch the DNS records used in local DNS profiles** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-dns-local-records + + - organizationId (string): Organization ID + - profileIds (array): Optional parameter to filter the results by profile IDs + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], + 'operation': 'getOrganizationApplianceDnsLocalRecords' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/records' + + query_params = ['profileIds', ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = ['profileIds', ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params.pop(k.strip()) + + return self._session.get(metadata, resource, params) + + + + def createOrganizationApplianceDnsLocalRecord(self, organizationId: str, hostname: str, address: str, profile: dict): + """ + **Create a new local DNS record** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-local-record + + - organizationId (string): Organization ID + - hostname (string): Hostname for the DNS record + - address (string): IP for the DNS record + - profile (object): The profile the DNS record is associated with + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], + 'operation': 'createOrganizationApplianceDnsLocalRecord' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/records' + + body_params = ['hostname', 'address', 'profile', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def updateOrganizationApplianceDnsLocalRecord(self, organizationId: str, recordId: str, **kwargs): + """ + **Updates a local DNS record** + https://developer.cisco.com/meraki/api-v1/#!update-organization-appliance-dns-local-record + + - organizationId (string): Organization ID + - recordId (string): Record ID + - hostname (string): Hostname for the DNS record + - address (string): IP for the DNS record + - profile (object): The profile the DNS record is associated with + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], + 'operation': 'updateOrganizationApplianceDnsLocalRecord' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + recordId = urllib.parse.quote(str(recordId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/records/{recordId}' + + body_params = ['hostname', 'address', 'profile', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.put(metadata, resource, payload) + + + + def deleteOrganizationApplianceDnsLocalRecord(self, organizationId: str, recordId: str): + """ + **Deletes a local DNS record** + https://developer.cisco.com/meraki/api-v1/#!delete-organization-appliance-dns-local-record + + - organizationId (string): Organization ID + - recordId (string): Record ID + """ + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'local', 'records'], + 'operation': 'deleteOrganizationApplianceDnsLocalRecord' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + recordId = urllib.parse.quote(str(recordId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/local/records/{recordId}' + + return self._session.delete(metadata, resource) + + + + def getOrganizationApplianceDnsSplitProfiles(self, organizationId: str, **kwargs): + """ + **Fetch the split DNS profiles used in the organization** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-dns-split-profiles + + - organizationId (string): Organization ID + - profileIds (array): Optional parameter to filter the results by profile IDs + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], + 'operation': 'getOrganizationApplianceDnsSplitProfiles' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles' + + query_params = ['profileIds', ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = ['profileIds', ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params.pop(k.strip()) + + return self._session.get(metadata, resource, params) + + + + def createOrganizationApplianceDnsSplitProfile(self, organizationId: str, name: str, hostnames: list, nameservers: dict): + """ + **Create a new split DNS profile** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-split-profile + + - organizationId (string): Organization ID + - name (string): Name of profile + - hostnames (array): The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB. + - nameservers (object): Contains the nameserver information for redirection. + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], + 'operation': 'createOrganizationApplianceDnsSplitProfile' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles' + + body_params = ['name', 'hostnames', 'nameservers', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def getOrganizationApplianceDnsSplitProfilesAssignments(self, organizationId: str, **kwargs): + """ + **Fetch the split DNS profile assignments in the organization** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-dns-split-profiles-assignments + + - organizationId (string): Organization ID + - profileIds (array): Optional parameter to filter the results by profile IDs + - networkIds (array): Optional parameter to filter the results by network IDs + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles', 'assignments'], + 'operation': 'getOrganizationApplianceDnsSplitProfilesAssignments' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/assignments' + + query_params = ['profileIds', 'networkIds', ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = ['profileIds', 'networkIds', ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params.pop(k.strip()) + + return self._session.get(metadata, resource, params) + + + + def createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate(self, organizationId: str, items: list): + """ + **Assign the split DNS profile to networks in the organization** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-split-profiles-assignments-bulk-create + + - organizationId (string): Organization ID + - items (array): List containing the network ID and Profile ID + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles', 'assignments', 'bulkCreate'], + 'operation': 'createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkCreate' + + body_params = ['items', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete(self, organizationId: str, items: list): + """ + **Unassign the split DNS profile to networks in the organization** + https://developer.cisco.com/meraki/api-v1/#!create-organization-appliance-dns-split-profiles-assignments-bulk-delete + + - organizationId (string): Organization ID + - items (array): List containing the assignment ID + """ + + kwargs = locals() + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles', 'assignments', 'bulkDelete'], + 'operation': 'createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkDelete' + + body_params = ['items', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.post(metadata, resource, payload) + + + + def updateOrganizationApplianceDnsSplitProfile(self, organizationId: str, profileId: str, **kwargs): + """ + **Update a split DNS profile** + https://developer.cisco.com/meraki/api-v1/#!update-organization-appliance-dns-split-profile + + - organizationId (string): Organization ID + - profileId (string): Profile ID + - name (string): Name of profile + - hostnames (array): The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB. + - nameservers (object): Contains the nameserver information for redirection. + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], + 'operation': 'updateOrganizationApplianceDnsSplitProfile' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + profileId = urllib.parse.quote(str(profileId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}' + + body_params = ['name', 'hostnames', 'nameservers', ] + payload = {k.strip(): v for k, v in kwargs.items() if k.strip() in body_params} + + return self._session.put(metadata, resource, payload) + + + + def deleteOrganizationApplianceDnsSplitProfile(self, organizationId: str, profileId: str): + """ + **Deletes a split DNS profile** + https://developer.cisco.com/meraki/api-v1/#!delete-organization-appliance-dns-split-profile + + - organizationId (string): Organization ID + - profileId (string): Profile ID + """ + + metadata = { + 'tags': ['appliance', 'configure', 'dns', 'split', 'profiles'], + 'operation': 'deleteOrganizationApplianceDnsSplitProfile' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + profileId = urllib.parse.quote(str(profileId), safe='') + resource = f'/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}' + + return self._session.delete(metadata, resource) + + + + def getOrganizationApplianceFirewallMulticastForwardingByNetwork(self, organizationId: str, total_pages=1, direction='next', **kwargs): + """ + **List Static Multicasting forwarding settings for MX networks** + https://developer.cisco.com/meraki/api-v1/#!get-organization-appliance-firewall-multicast-forwarding-by-network + + - organizationId (string): Organization ID + - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages + - direction (string): direction to paginate, either "next" (default) or "prev" page + - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000. + - startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. + - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. + - networkIds (array): Optional parameter to filter the results by network IDs + """ + + kwargs.update(locals()) + + metadata = { + 'tags': ['appliance', 'configure', 'firewall', 'multicastForwarding', 'byNetwork'], + 'operation': 'getOrganizationApplianceFirewallMulticastForwardingByNetwork' + } + organizationId = urllib.parse.quote(str(organizationId), safe='') + resource = f'/organizations/{organizationId}/appliance/firewall/multicastForwarding/byNetwork' + + query_params = ['perPage', 'startingAfter', 'endingBefore', 'networkIds', ] + params = {k.strip(): v for k, v in kwargs.items() if k.strip() in query_params} + + array_params = ['networkIds', ] + for k, v in kwargs.items(): + if k.strip() in array_params: + params[f'{k.strip()}[]'] = kwargs[f'{k}'] + params.pop(k.strip()) + + return self._session.get_pages(metadata, resource, params, total_pages, direction) + + + def getOrganizationApplianceSecurityEvents(self, organizationId: str, total_pages=1, direction='next', **kwargs): """ **List the security events for an organization** diff --git a/meraki/aio/api/camera.py b/meraki/aio/api/camera.py index 67d956b9..b99563c9 100644 --- a/meraki/aio/api/camera.py +++ b/meraki/aio/api/camera.py @@ -243,7 +243,7 @@ def updateDeviceCameraQualityAndRetention(self, serial: str, **kwargs): - motionBasedRetentionEnabled (boolean): Boolean indicating if motion-based retention is enabled(true) or disabled(false) on the camera. - audioRecordingEnabled (boolean): Boolean indicating if audio recording is enabled(true) or disabled(false) on the camera - restrictedBandwidthModeEnabled (boolean): Boolean indicating if restricted bandwidth is enabled(true) or disabled(false) on the camera. This setting does not apply to MV2 cameras. - - quality (string): Quality of the camera. Can be one of 'Standard', 'High' or 'Enhanced'. Not all qualities are supported by every camera model. + - quality (string): Quality of the camera. Can be one of 'Standard', 'High', 'Enhanced' or 'Ultra'. Not all qualities are supported by every camera model. - resolution (string): Resolution of the camera. Can be one of '1280x720', '1920x1080', '1080x1080', '2112x2112', '2880x2880', '2688x1512' or '3840x2160'.Not all resolutions are supported by every camera model. - motionDetectorVersion (integer): The version of the motion detector that will be used by the camera. Only applies to Gen 2 cameras. Defaults to v2. """ @@ -251,7 +251,7 @@ def updateDeviceCameraQualityAndRetention(self, serial: str, **kwargs): kwargs.update(locals()) if 'quality' in kwargs: - options = ['Enhanced', 'High', 'Standard'] + options = ['Enhanced', 'High', 'Standard', 'Ultra'] assert kwargs['quality'] in options, f'''"quality" cannot be "{kwargs['quality']}", & must be set to one of: {options}''' if 'resolution' in kwargs: options = ['1080x1080', '1280x720', '1920x1080', '2112x2112', '2688x1512', '2880x2880', '3840x2160'] diff --git a/meraki/aio/api/licensing.py b/meraki/aio/api/licensing.py index 4e1d1c2f..dc253820 100644 --- a/meraki/aio/api/licensing.py +++ b/meraki/aio/api/licensing.py @@ -37,18 +37,18 @@ def getAdministeredLicensingSubscriptionEntitlements(self, **kwargs): - def getAdministeredLicensingSubscriptionSubscriptions(self, total_pages=1, direction='next', **kwargs): + def getAdministeredLicensingSubscriptionSubscriptions(self, organizationIds: list, total_pages=1, direction='next', **kwargs): """ **List available subscriptions** https://developer.cisco.com/meraki/api-v1/#!get-administered-licensing-subscription-subscriptions + - organizationIds (array): Organizations to get associated subscriptions for - total_pages (integer or string): use with perPage to get total results up to total_pages*perPage; -1 or "all" for all pages - direction (string): direction to paginate, either "next" (default) or "prev" page - perPage (integer): The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000. - startingAfter (string): A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. - endingBefore (string): A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it. - subscriptionIds (array): List of subscription ids to fetch - - organizationIds (array): Organizations to get associated subscriptions for - startDate (string): Filter subscriptions by start date, ISO 8601 format. To filter with a range of dates, use 'startDate[