From 8250c604b7e6614f9fd053d4c754b355c1f9fb75 Mon Sep 17 00:00:00 2001 From: Thomas Munzer Date: Fri, 12 Jun 2026 08:50:53 -0700 Subject: [PATCH] 0.63.0 --- CHANGELOG.md | 46 + mist_openapi | 2 +- pyproject.toml | 2 +- scripts/generate_from_openapi.py | 1 + src/mistapi/__version.py | 2 +- src/mistapi/api/v1/const/ap_channels.py | 1 + src/mistapi/api/v1/const/countries.py | 1 + .../api/v1/const/default_gateway_config.py | 2 + src/mistapi/api/v1/const/states.py | 1 + .../api/v1/installer/orgs/deviceprofiles.py | 1 + src/mistapi/api/v1/installer/orgs/devices.py | 13 +- src/mistapi/api/v1/installer/orgs/sites.py | 5 +- src/mistapi/api/v1/login/oauth.py | 1 + src/mistapi/api/v1/msps/insights.py | 6 + src/mistapi/api/v1/msps/logs.py | 12 +- src/mistapi/api/v1/msps/orgs.py | 9 + src/mistapi/api/v1/msps/search.py | 8 +- src/mistapi/api/v1/msps/stats.py | 2 + src/mistapi/api/v1/msps/suggestion.py | 2 + src/mistapi/api/v1/msps/tickets.py | 5 + src/mistapi/api/v1/orgs/__init__.py | 4 + src/mistapi/api/v1/orgs/alarms.py | 84 +- src/mistapi/api/v1/orgs/alarmtemplates.py | 4 +- src/mistapi/api/v1/orgs/aptemplates.py | 2 + src/mistapi/api/v1/orgs/assetfilters.py | 2 + src/mistapi/api/v1/orgs/assets.py | 4 +- src/mistapi/api/v1/orgs/avprofiles.py | 2 + src/mistapi/api/v1/orgs/claim.py | 1 + src/mistapi/api/v1/orgs/claims.py | 115 +++ src/mistapi/api/v1/orgs/clients.py | 112 ++- src/mistapi/api/v1/orgs/deviceprofiles.py | 3 + src/mistapi/api/v1/orgs/devices.py | 242 ++++-- src/mistapi/api/v1/orgs/events.py | 18 + src/mistapi/api/v1/orgs/evpn_topologies.py | 4 +- src/mistapi/api/v1/orgs/gatewaytemplates.py | 2 + src/mistapi/api/v1/orgs/guests.py | 13 + src/mistapi/api/v1/orgs/idpprofiles.py | 2 + src/mistapi/api/v1/orgs/insights.py | 77 ++ src/mistapi/api/v1/orgs/inventory.py | 42 +- src/mistapi/api/v1/orgs/jsi.py | 82 +- src/mistapi/api/v1/orgs/logs.py | 19 +- src/mistapi/api/v1/orgs/maps.py | 5 +- src/mistapi/api/v1/orgs/marvisclients.py | 221 +++++ src/mistapi/api/v1/orgs/mxclusters.py | 2 + src/mistapi/api/v1/orgs/mxedges.py | 57 +- src/mistapi/api/v1/orgs/mxtunnels.py | 2 + src/mistapi/api/v1/orgs/nac_clients.py | 107 ++- src/mistapi/api/v1/orgs/nacportals.py | 11 +- src/mistapi/api/v1/orgs/nacrules.py | 2 + src/mistapi/api/v1/orgs/nactags.py | 11 +- src/mistapi/api/v1/orgs/networks.py | 2 + src/mistapi/api/v1/orgs/networktemplates.py | 2 + src/mistapi/api/v1/orgs/ocdevices.py | 1 + src/mistapi/api/v1/orgs/otherdevices.py | 25 + src/mistapi/api/v1/orgs/pcaps.py | 5 + src/mistapi/api/v1/orgs/pma.py | 2 + src/mistapi/api/v1/orgs/pskportals.py | 29 +- src/mistapi/api/v1/orgs/psks.py | 11 +- src/mistapi/api/v1/orgs/rftemplates.py | 2 + src/mistapi/api/v1/orgs/secintelprofiles.py | 2 + src/mistapi/api/v1/orgs/secpolicies.py | 2 + src/mistapi/api/v1/orgs/servicepolicies.py | 2 + src/mistapi/api/v1/orgs/services.py | 2 + src/mistapi/api/v1/orgs/setting.py | 37 +- src/mistapi/api/v1/orgs/sitegroups.py | 2 + src/mistapi/api/v1/orgs/sites.py | 34 +- src/mistapi/api/v1/orgs/sitetemplates.py | 2 + src/mistapi/api/v1/orgs/ssoroles.py | 2 + src/mistapi/api/v1/orgs/ssos.py | 7 + src/mistapi/api/v1/orgs/ssr.py | 4 +- src/mistapi/api/v1/orgs/stats.py | 428 +++++++++- src/mistapi/api/v1/orgs/templates.py | 2 + src/mistapi/api/v1/orgs/tickets.py | 14 +- src/mistapi/api/v1/orgs/troubleshoot.py | 6 +- src/mistapi/api/v1/orgs/usermacs.py | 9 +- src/mistapi/api/v1/orgs/vars.py | 6 + src/mistapi/api/v1/orgs/vpns.py | 2 + src/mistapi/api/v1/orgs/wan_client.py | 6 + src/mistapi/api/v1/orgs/wan_clients.py | 30 + src/mistapi/api/v1/orgs/webhooks.py | 25 +- src/mistapi/api/v1/orgs/wired_clients.py | 35 +- src/mistapi/api/v1/orgs/wlans.py | 5 +- src/mistapi/api/v1/orgs/wxrules.py | 2 + src/mistapi/api/v1/orgs/wxtags.py | 2 + src/mistapi/api/v1/orgs/wxtunnels.py | 2 + src/mistapi/api/v1/register/recaptcha.py | 1 + src/mistapi/api/v1/self/logs.py | 8 +- src/mistapi/api/v1/self/oauth.py | 1 + src/mistapi/api/v1/self/two_factor.py | 2 +- src/mistapi/api/v1/sites/__init__.py | 2 + src/mistapi/api/v1/sites/aamwprofiles.py | 2 + src/mistapi/api/v1/sites/alarms.py | 87 +- src/mistapi/api/v1/sites/anomaly.py | 3 + src/mistapi/api/v1/sites/aptemplates.py | 1 + src/mistapi/api/v1/sites/assetfilters.py | 2 + src/mistapi/api/v1/sites/assets.py | 7 +- src/mistapi/api/v1/sites/avprofiles.py | 2 + src/mistapi/api/v1/sites/beacons.py | 2 + src/mistapi/api/v1/sites/clients.py | 108 ++- src/mistapi/api/v1/sites/count.py | 11 +- src/mistapi/api/v1/sites/deviceprofiles.py | 1 + src/mistapi/api/v1/sites/devices.py | 257 ++++-- src/mistapi/api/v1/sites/events.py | 19 +- src/mistapi/api/v1/sites/evpn_topologies.py | 2 + src/mistapi/api/v1/sites/gatewaytemplates.py | 1 + src/mistapi/api/v1/sites/guests.py | 17 + src/mistapi/api/v1/sites/idpprofiles.py | 2 + src/mistapi/api/v1/sites/insights.py | 84 +- src/mistapi/api/v1/sites/iotendpoints.py | 8 + src/mistapi/api/v1/sites/location.py | 8 + src/mistapi/api/v1/sites/maps.py | 82 +- src/mistapi/api/v1/sites/mapstacks.py | 3 + src/mistapi/api/v1/sites/marvis_configs.py | 263 ++++++ src/mistapi/api/v1/sites/mxedges.py | 22 + src/mistapi/api/v1/sites/nac_clients.py | 104 ++- src/mistapi/api/v1/sites/networks.py | 1 + src/mistapi/api/v1/sites/networktemplates.py | 1 + src/mistapi/api/v1/sites/otherdevices.py | 23 + src/mistapi/api/v1/sites/pcaps.py | 6 + src/mistapi/api/v1/sites/psks.py | 10 +- src/mistapi/api/v1/sites/rfdiags.py | 5 + src/mistapi/api/v1/sites/rftemplates.py | 1 + src/mistapi/api/v1/sites/rogues.py | 23 + src/mistapi/api/v1/sites/rrm.py | 11 +- src/mistapi/api/v1/sites/rssizones.py | 2 + src/mistapi/api/v1/sites/secintelprofiles.py | 1 + src/mistapi/api/v1/sites/servicepolicies.py | 1 + src/mistapi/api/v1/sites/services.py | 40 +- src/mistapi/api/v1/sites/sitetemplates.py | 1 + src/mistapi/api/v1/sites/skyatp.py | 21 + src/mistapi/api/v1/sites/sle.py | 601 +++++++------ src/mistapi/api/v1/sites/stats.py | 239 +++++- src/mistapi/api/v1/sites/synthetic_test.py | 15 +- src/mistapi/api/v1/sites/vbeacons.py | 2 + src/mistapi/api/v1/sites/visits.py | 12 +- src/mistapi/api/v1/sites/vpns.py | 1 + src/mistapi/api/v1/sites/wan_client.py | 6 + src/mistapi/api/v1/sites/wan_clients.py | 29 + src/mistapi/api/v1/sites/wan_usages.py | 24 + src/mistapi/api/v1/sites/webhooks.py | 25 +- src/mistapi/api/v1/sites/wired_clients.py | 30 +- src/mistapi/api/v1/sites/wlans.py | 7 +- src/mistapi/api/v1/sites/wxrules.py | 2 + src/mistapi/api/v1/sites/wxtags.py | 2 + src/mistapi/api/v1/sites/wxtunnels.py | 2 + src/mistapi/api/v1/sites/zones.py | 2 + uv.lock | 808 +++++++++--------- 147 files changed, 4094 insertions(+), 1095 deletions(-) create mode 100644 src/mistapi/api/v1/orgs/claims.py create mode 100644 src/mistapi/api/v1/orgs/marvisclients.py create mode 100644 src/mistapi/api/v1/sites/marvis_configs.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 87ae570..16c6d74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,50 @@ # CHANGELOG +## Version 0.63.0 (June 2026) + +**Released**: June 12, 2026 + +This release updates generated API bindings from the latest OpenAPI spec, adding new async claim, Marvis client, Marvis configuration, and AP localization workflows while expanding parameter documentation across the SDK. + +--- + +### 1. NEW FEATURES + +#### **Org Async Claim APIs** +Added a new org claims module for asynchronous claim workflows: +- **`listOrgAsyncClaims()`** +- **`createOrgAsyncClaim()`** +- **`getOrgAsyncClaimStatus()`** + +#### **Org Marvis Client APIs** +Added org-level Marvis client insight, event, and statistics operations: +- **`getOrgMarvisClientInsights()`** +- **`countOrgMarvisClientEvents()`**, **`searchOrgMarvisClientEvents()`** +- **`countOrgMarvisClientsStats()`**, **`searchOrgMarvisClientsStats()`** + +#### **Site Marvis Configuration Actions** +Added a new site Marvis configuration module with action search, count, delete, and feedback operations: +- **`countSiteMarvisConfigActions()`** +- **`searchSiteMarvisConfigActions()`** +- **`deleteSiteMarvisConfigAction()`** +- **`submitSiteMarvisConfigFeedback()`** + +#### **AP Localization Data Acceptance** +Added a site maps operation for accepting AP localization data: +- **`acceptSiteApLocalizationData()`** + +--- + +### 2. IMPROVEMENTS + +#### **Expanded Query Parameter Coverage** +Added and refined filters across generated endpoints, including device, client, stats, SLE, alarm, event, VPN, tunnel, NAC, webhook, PSK, and inventory APIs. New coverage includes richer `distinct` count fields, device type and status filters, duration ranges, pagination cursors, sort parameters, and model, hostname, MAC, OS, LLDP, RF, and Mist Edge filters. + +#### **Improved Generated Parameter Documentation** +Updated the OpenAPI generator to preserve parameter descriptions, improving generated docstrings for wildcard matching, comma-separated values, enum meanings, pagination behavior, and conditional filters. + + +--- + ## Version 0.62.0 (May 2026) **Released**: May 1, 2026 diff --git a/mist_openapi b/mist_openapi index cf6e2bf..1135d90 160000 --- a/mist_openapi +++ b/mist_openapi @@ -1 +1 @@ -Subproject commit cf6e2bf51f492a8a9c45cf317fccda085a9e96c3 +Subproject commit 1135d9080ec37a98ac0a1dfc23bb9667e4a06de1 diff --git a/pyproject.toml b/pyproject.toml index a1a4656..bf21ec2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "mistapi" -version = "0.62.0" +version = "0.63.0" authors = [{ name = "Thomas Munzer", email = "tmunzer@juniper.net" }] description = "Python package to simplify the Mist System APIs usage" keywords = ["Mist", "Juniper", "API"] diff --git a/scripts/generate_from_openapi.py b/scripts/generate_from_openapi.py index 17ff839..9b15ad8 100755 --- a/scripts/generate_from_openapi.py +++ b/scripts/generate_from_openapi.py @@ -206,6 +206,7 @@ def gen_param(data: dict, openapi_schemas: dict) -> dict: # Handle inline parameter definition - extract directly from schema tmp = { "name": data["name"].replace(" ", "_").replace("-", "_"), + "description": data.get("description"), "required": data.get("required", False), "enum": data["schema"].get("enum", None), "type": data["schema"].get("type"), diff --git a/src/mistapi/__version.py b/src/mistapi/__version.py index 08385b5..3af91d9 100644 --- a/src/mistapi/__version.py +++ b/src/mistapi/__version.py @@ -1,2 +1,2 @@ -__version__ = "0.62.0" +__version__ = "0.63.0" __author__ = "Thomas Munzer " diff --git a/src/mistapi/api/v1/const/ap_channels.py b/src/mistapi/api/v1/const/ap_channels.py index 0a42f0b..b565d24 100644 --- a/src/mistapi/api/v1/const/ap_channels.py +++ b/src/mistapi/api/v1/const/ap_channels.py @@ -28,6 +28,7 @@ def listApChannels( QUERY PARAMS ------------ country_code : str + Country code, in two-character RETURN ----------- diff --git a/src/mistapi/api/v1/const/countries.py b/src/mistapi/api/v1/const/countries.py index 742d7b0..0a3eec8 100644 --- a/src/mistapi/api/v1/const/countries.py +++ b/src/mistapi/api/v1/const/countries.py @@ -28,6 +28,7 @@ def listCountryCodes( QUERY PARAMS ------------ extend : bool + Will include more country codes if true RETURN ----------- diff --git a/src/mistapi/api/v1/const/default_gateway_config.py b/src/mistapi/api/v1/const/default_gateway_config.py index d8300a3..fb0ae58 100644 --- a/src/mistapi/api/v1/const/default_gateway_config.py +++ b/src/mistapi/api/v1/const/default_gateway_config.py @@ -28,7 +28,9 @@ def getGatewayDefaultConfig( QUERY PARAMS ------------ model : str + Device model for which to generate the default gateway config. ha : str + Whether the config is intended for HA RETURN ----------- diff --git a/src/mistapi/api/v1/const/states.py b/src/mistapi/api/v1/const/states.py index 26333e2..482824e 100644 --- a/src/mistapi/api/v1/const/states.py +++ b/src/mistapi/api/v1/const/states.py @@ -26,6 +26,7 @@ def listStates(mist_session: _APISession, country_code: str) -> _APIResponse: QUERY PARAMS ------------ country_code : str + Country code, in [two-character](/#operations/listCountryCodes) RETURN ----------- diff --git a/src/mistapi/api/v1/installer/orgs/deviceprofiles.py b/src/mistapi/api/v1/installer/orgs/deviceprofiles.py index ef3effb..e4033f2 100644 --- a/src/mistapi/api/v1/installer/orgs/deviceprofiles.py +++ b/src/mistapi/api/v1/installer/orgs/deviceprofiles.py @@ -32,6 +32,7 @@ def listInstallerDeviceProfiles( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` RETURN ----------- diff --git a/src/mistapi/api/v1/installer/orgs/devices.py b/src/mistapi/api/v1/installer/orgs/devices.py index b718a03..9c8c860 100644 --- a/src/mistapi/api/v1/installer/orgs/devices.py +++ b/src/mistapi/api/v1/installer/orgs/devices.py @@ -38,10 +38,15 @@ def listInstallerListOfRecentlyClaimedDevices( QUERY PARAMS ------------ model : str + Filter results by device model site_name : str + Filter results by site name site_id : str + Filter results by site identifier limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -268,10 +273,11 @@ def addInstallerDeviceImageFile( auto_deviceprofile_assignment : bool Whether to auto assign device to deviceprofile by name csv : str - path to the file to upload. CSV file for ap name mapping, optional + path to the file to upload. Optional AP name-mapping CSV file file : str - path to the file to upload. Ekahau or ibwave file + path to the file to upload. Ekahau or iBwave floorplan file to import json : dict + Import options for the site map file RETURN ----------- @@ -305,6 +311,7 @@ def getInstallerDeviceVirtualChassis( ----------- org_id : str fpc0_mac : str + FPC0 MAC address RETURN ----------- @@ -333,6 +340,7 @@ def createInstallerVirtualChassis( ----------- org_id : str fpc0_mac : str + FPC0 MAC address BODY PARAMS ----------- @@ -365,6 +373,7 @@ def updateInstallerVirtualChassisMember( ----------- org_id : str fpc0_mac : str + FPC0 MAC address BODY PARAMS ----------- diff --git a/src/mistapi/api/v1/installer/orgs/sites.py b/src/mistapi/api/v1/installer/orgs/sites.py index 81d4671..e34ba8f 100644 --- a/src/mistapi/api/v1/installer/orgs/sites.py +++ b/src/mistapi/api/v1/installer/orgs/sites.py @@ -126,10 +126,11 @@ def importInstallerMapFile( auto_deviceprofile_assignment : bool Whether to auto assign device to deviceprofile by name csv : str - path to the file to upload. CSV file for ap name mapping, optional + path to the file to upload. Optional AP name-mapping CSV file file : str - path to the file to upload. Ekahau or ibwave file + path to the file to upload. Ekahau or iBwave floorplan file to import json : dict + Import options for the site map file RETURN ----------- diff --git a/src/mistapi/api/v1/login/oauth.py b/src/mistapi/api/v1/login/oauth.py index 42b974e..316f381 100644 --- a/src/mistapi/api/v1/login/oauth.py +++ b/src/mistapi/api/v1/login/oauth.py @@ -32,6 +32,7 @@ def getOauth2AuthorizationUrlForLogin( QUERY PARAMS ------------ forward : str + Callback URL used after completing the OAuth login flow RETURN ----------- diff --git a/src/mistapi/api/v1/msps/insights.py b/src/mistapi/api/v1/msps/insights.py index 4b967dd..96cb562 100644 --- a/src/mistapi/api/v1/msps/insights.py +++ b/src/mistapi/api/v1/msps/insights.py @@ -36,14 +36,20 @@ def getMspSle( ----------- msp_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics QUERY PARAMS ------------ sle : str + See [List Insight Metrics](/#operations/listInsightMetrics) for more details duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- diff --git a/src/mistapi/api/v1/msps/logs.py b/src/mistapi/api/v1/msps/logs.py index 1caca22..da2016a 100644 --- a/src/mistapi/api/v1/msps/logs.py +++ b/src/mistapi/api/v1/msps/logs.py @@ -42,15 +42,23 @@ def listMspAuditLogs( QUERY PARAMS ------------ site_id : str + Filter results by site identifier admin_name : str + Admin name or email message : str + Filter results by message text sort : str{'-timestamp', 'admin_id', 'site_id', 'timestamp'} - Sort order + Field used to sort results; a leading `-` indicates descending order. enum: `-timestamp`, `admin_id`, `site_id`, `timestamp` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -103,7 +111,9 @@ def countMspAuditLogs( QUERY PARAMS ------------ distinct : str{'admin_id', 'admin_name', 'message', 'org_id'}, default: admin_name + Field used to group this count response. enum: `admin_id`, `admin_name`, `message`, `org_id` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- diff --git a/src/mistapi/api/v1/msps/orgs.py b/src/mistapi/api/v1/msps/orgs.py index f1ee149..8691308 100644 --- a/src/mistapi/api/v1/msps/orgs.py +++ b/src/mistapi/api/v1/msps/orgs.py @@ -128,16 +128,25 @@ def searchMspOrgs( QUERY PARAMS ------------ name : str + Filter results by name org_id : str + Filter results by organization identifier sub_insufficient : bool + If this org has sufficient subscription trial_enabled : bool + If this org is under trial period usage_types : list List of types that enabled by usage limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/msps/search.py b/src/mistapi/api/v1/msps/search.py index 3dd7de0..28d1352 100644 --- a/src/mistapi/api/v1/msps/search.py +++ b/src/mistapi/api/v1/msps/search.py @@ -40,13 +40,19 @@ def searchMspOrgGroup( QUERY PARAMS ------------ type : str{'orgs'} - Orgs + MSP search result type to return. enum: `orgs` q : str + Filter results by search string limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order RETURN ----------- diff --git a/src/mistapi/api/v1/msps/stats.py b/src/mistapi/api/v1/msps/stats.py index 55c2c51..4672ed8 100644 --- a/src/mistapi/api/v1/msps/stats.py +++ b/src/mistapi/api/v1/msps/stats.py @@ -60,7 +60,9 @@ def listMspOrgStats( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/msps/suggestion.py b/src/mistapi/api/v1/msps/suggestion.py index a1e8276..7dc822c 100644 --- a/src/mistapi/api/v1/msps/suggestion.py +++ b/src/mistapi/api/v1/msps/suggestion.py @@ -35,7 +35,9 @@ def countMspsMarvisActions( QUERY PARAMS ------------ distinct : str{'org_id', 'status'}, default: org_id + Field used to group this count response. enum: `org_id`, `status` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- diff --git a/src/mistapi/api/v1/msps/tickets.py b/src/mistapi/api/v1/msps/tickets.py index 4467dd9..6bcfc6c 100644 --- a/src/mistapi/api/v1/msps/tickets.py +++ b/src/mistapi/api/v1/msps/tickets.py @@ -36,8 +36,11 @@ def listMspTickets( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -78,7 +81,9 @@ def countMspTickets( QUERY PARAMS ------------ distinct : str{'org_id', 'status', 'type'}, default: status + Field used to group this count response. enum: `org_id`, `status`, `type` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/__init__.py b/src/mistapi/api/v1/orgs/__init__.py index c6e76f4..312cd17 100644 --- a/src/mistapi/api/v1/orgs/__init__.py +++ b/src/mistapi/api/v1/orgs/__init__.py @@ -24,6 +24,7 @@ avprofiles, cert, claim, + claims, clients, clone, crl, @@ -42,6 +43,7 @@ licenses, logs, maps, + marvisclients, marvisinvites, mist_nac, mxclusters, @@ -108,6 +110,7 @@ "avprofiles", "cert", "claim", + "claims", "clients", "clone", "crl", @@ -126,6 +129,7 @@ "licenses", "logs", "maps", + "marvisclients", "marvisinvites", "mist_nac", "mxclusters", diff --git a/src/mistapi/api/v1/orgs/alarms.py b/src/mistapi/api/v1/orgs/alarms.py index 19b4599..5eca8df 100644 --- a/src/mistapi/api/v1/orgs/alarms.py +++ b/src/mistapi/api/v1/orgs/alarms.py @@ -100,10 +100,15 @@ def countOrgAlarms( QUERY PARAMS ------------ distinct : str + Field used to group this count response start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -144,43 +149,48 @@ def searchOrgAlarms( search_after: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/alarms/search-org-alarms - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - org_id : str - - QUERY PARAMS - ------------ - site_id : str - group : str{'infrastructure', 'marvis', 'security'} - Alarm group. enum: `infrastructure`, `marvis`, `security`. - The `marvis` group is used to retrieve AI-driven network issue detections. - Known Marvis alarm types include: `bad_cable`, `bad_wan_uplink`, `dns_failure`, - `arp_failure`, `auth_failure`, `dhcp_failure`, `missing_vlan`, - `negotiation_mismatch`, `port_flap`. Results include resolution status - (`status`, `resolved_time`) and affected entity details." - severity : str{'critical', 'info', 'warn'} - Severity of the alarm. enum: `critical`, `info`, `warn` - type : str - ack_admin_name : str - acked : bool - start : str - end : str - duration : str, default: 1d - limit : int, default: 100 - sort : str, default: timestamp - search_after : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/alarms/search-org-alarms + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + site_id : str + Filter results by site identifier. Accepts multiple comma-separated values. + group : str + Alarm group used to filter alarm results. enum: `certificate_expiry`, `infrastructure`, `marvis`, `security`. The `marvis` group is used to retrieve AI-driven network issue detections. Known Marvis alarm types include: `bad_cable`, `bad_wan_uplink`, `dns_failure`, `arp_failure`, `auth_failure`, `dhcp_failure`, `missing_vlan`, `negotiation_mismatch`, `port_flap`. Results include resolution status (`status`, `resolved_time`) and affected entity details. Accepts multiple comma-separated values. + severity : str + Alarm severity used to filter results. enum: `critical`, `info`, `warn`. Accepts multiple comma-separated values. + type : str + Filter alarms by alarm type. Accepts multiple values separated by comma. Use [List Alarm Definitions](/#operations/listAlarmDefinitions) to get the list of possible alarm types + ack_admin_name : str + Name of the admins who have acked the alarms; accepts multiple values separated by comma + acked : bool + Filter alarm results by whether the alarm has been acknowledged + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + limit : int, default: 100 + Maximum number of results to return per page + sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order + search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/orgs/{org_id}/alarms/search" diff --git a/src/mistapi/api/v1/orgs/alarmtemplates.py b/src/mistapi/api/v1/orgs/alarmtemplates.py index 8758077..19c908e 100644 --- a/src/mistapi/api/v1/orgs/alarmtemplates.py +++ b/src/mistapi/api/v1/orgs/alarmtemplates.py @@ -35,7 +35,9 @@ def listOrgAlarmTemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -102,7 +104,7 @@ def listOrgSuppressedAlarms( QUERY PARAMS ------------ scope : str{'org', 'site'}, default: site - Returns both scopes if not specified + Filter results by scope. enum: `org`, `site` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/aptemplates.py b/src/mistapi/api/v1/orgs/aptemplates.py index 47d3c09..797a977 100644 --- a/src/mistapi/api/v1/orgs/aptemplates.py +++ b/src/mistapi/api/v1/orgs/aptemplates.py @@ -35,7 +35,9 @@ def listOrgAptemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/assetfilters.py b/src/mistapi/api/v1/orgs/assetfilters.py index 6c07c3a..326992b 100644 --- a/src/mistapi/api/v1/orgs/assetfilters.py +++ b/src/mistapi/api/v1/orgs/assetfilters.py @@ -35,7 +35,9 @@ def listOrgAssetFilters( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/assets.py b/src/mistapi/api/v1/orgs/assets.py index 39d3903..c8e0afd 100644 --- a/src/mistapi/api/v1/orgs/assets.py +++ b/src/mistapi/api/v1/orgs/assets.py @@ -35,7 +35,9 @@ def listOrgAssets( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -102,7 +104,7 @@ def importOrgAssetsFile( BODY PARAMS ----------- file : str - path to the file to upload. CSV file + path to the file to upload. CSV file containing asset records to import RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/avprofiles.py b/src/mistapi/api/v1/orgs/avprofiles.py index a4bbb6d..cb93582 100644 --- a/src/mistapi/api/v1/orgs/avprofiles.py +++ b/src/mistapi/api/v1/orgs/avprofiles.py @@ -35,7 +35,9 @@ def listOrgAntivirusProfiles( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/claim.py b/src/mistapi/api/v1/orgs/claim.py index 92c6dbd..a2335e5 100644 --- a/src/mistapi/api/v1/orgs/claim.py +++ b/src/mistapi/api/v1/orgs/claim.py @@ -63,6 +63,7 @@ def GetOrgLicenseAsyncClaimStatus( QUERY PARAMS ------------ detail : bool + Whether to include license details in the claim status response RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/claims.py b/src/mistapi/api/v1/orgs/claims.py new file mode 100644 index 0000000..ab1eeb6 --- /dev/null +++ b/src/mistapi/api/v1/orgs/claims.py @@ -0,0 +1,115 @@ +""" +-------------------------------------------------------------------------------- +------------------------- Mist API Python CLI Session -------------------------- + + Written by: Thomas Munzer (tmunzer@juniper.net) + Github : https://github.com/tmunzer/mistapi_python + + This package is licensed under the MIT License. + +-------------------------------------------------------------------------------- +""" + +from mistapi import APISession as _APISession +from mistapi.__api_response import APIResponse as _APIResponse + + +def listOrgAsyncClaims( + mist_session: _APISession, org_id: str, detail: bool | None = None +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/licenses/list-org-async-claims + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + detail : bool + Whether to include per-device detail in each claim record + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/claims" + query_params: dict[str, str] = {} + if detail: + query_params["detail"] = str(detail) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + +def createOrgAsyncClaim( + mist_session: _APISession, org_id: str, body: dict | list +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/licenses/create-org-async-claim + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + BODY PARAMS + ----------- + body : dict + JSON object to send to Mist Cloud (see API doc above for more details) + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/claims" + resp = mist_session.mist_post(uri=uri, body=body) + return resp + + +def getOrgAsyncClaimStatus( + mist_session: _APISession, org_id: str, claim_id: str, detail: bool | None = None +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/licenses/get-org-async-claim-status + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + claim_id : str + Unique identifier of the async claim job + + QUERY PARAMS + ------------ + detail : bool + Whether to include per-device detail in the claim status response + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/claims/{claim_id}" + query_params: dict[str, str] = {} + if detail: + query_params["detail"] = str(detail) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp diff --git a/src/mistapi/api/v1/orgs/clients.py b/src/mistapi/api/v1/orgs/clients.py index 8654b5c..29acbc1 100644 --- a/src/mistapi/api/v1/orgs/clients.py +++ b/src/mistapi/api/v1/orgs/clients.py @@ -47,19 +47,33 @@ def countOrgWirelessClients( QUERY PARAMS ------------ distinct : str{'ap', 'device', 'hostname', 'ip', 'mac', 'model', 'os', 'ssid', 'vlan'}, default: device + Field used to group this count response. enum: `ap`, `device`, `hostname`, `ip`, `mac`, `model`, `os`, `ssid`, `vlan` mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported. Accepts multiple comma-separated values. hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported. Accepts multiple comma-separated values. device : str + Filter results by device type os : str + Filter results by operating system model : str + Filter results by device model ap : str + Filter results by AP MAC address vlan : str + Filter results by VLAN ID ssid : str + Filter results by SSID ip : str + Filter results by IPv4 address start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -133,20 +147,31 @@ def countOrgWirelessClientEvents( QUERY PARAMS ------------ distinct : str{'band', 'channel', 'proto', 'ssid', 'type', 'wlan_id'} + Field used to group this count response. enum: `band`, `channel`, `proto`, `ssid`, `type`, `wlan_id` type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions). Accepts multiple comma-separated values. reason_code : int + Reason code filter for association and disassociation events ssid : str + Filter results by SSID ap : str + Filter results by AP MAC address proto : str{'a', 'ac', 'ax', 'b', 'be', 'g', 'n'} - a / b / g / n / ac / ax + 802.11 protocol used to filter results. enum: `a`, `ac`, `ax`, `b`, `be`, `g`, `n` band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` wlan_id : str + Filter results by WLAN identifier site_id : str + Filter results by site identifier start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -190,7 +215,7 @@ def searchOrgWirelessClientEvents( mist_session: _APISession, org_id: str, type: str | None = None, - reason_code: int | None = None, + reason_code: str | None = None, ssid: str | None = None, ap: str | None = None, key_mgmt: str | None = None, @@ -220,23 +245,35 @@ def searchOrgWirelessClientEvents( QUERY PARAMS ------------ type : str - reason_code : int + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions). Accepts multiple comma-separated values. + reason_code : str + Reason code filter for association and disassociation events. Accepts multiple comma-separated integer values. ssid : str + Filter results by SSID. Accepts multiple comma-separated values. ap : str - key_mgmt : str{'WPA2-PSK', 'WPA2-PSK/CCMP', 'WPA2-PSK-FT', 'WPA2-PSK-SHA256', 'WPA3-EAP-SHA256', 'WPA3-EAP-SHA256/CCMP', 'WPA3-EAP-FT/GCMP256', 'WPA3-SAE-FT', 'WPA3-SAE-PSK'} - Key Management Protocol, e.g. WPA2-PSK, WPA3-SAE, WPA2-Enterprise - proto : str{'a', 'ac', 'ax', 'b', 'be', 'g', 'n'} - a / b / g / n / ac / ax - band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + Filter results by AP MAC address. Accepts multiple comma-separated values. + key_mgmt : str + Key management protocol used to filter client events. enum: `WPA2-PSK`, `WPA2-PSK/CCMP`, `WPA2-PSK-FT`, `WPA2-PSK-SHA256`, `WPA3-EAP-SHA256`, `WPA3-EAP-SHA256/CCMP`, `WPA3-EAP-FT/GCMP256`, `WPA3-SAE-FT`, `WPA3-SAE-PSK`. Accepts multiple comma-separated values. + proto : str + 802.11 protocol used to filter results. enum: `a`, `ac`, `ax`, `b`, `be`, `g`, `n`. Accepts multiple comma-separated values. + band : str + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable`. Accepts multiple comma-separated values. wlan_id : str + Filter results by WLAN identifier nacrule_id : str + Filter results by NAC rule identifier. Accepts multiple comma-separated values. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order limit : int, default: 100 + Maximum number of results to return per page search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -320,26 +357,47 @@ def searchOrgWirelessClients( QUERY PARAMS ------------ site_id : str + Filter results by site identifier ap : str + Filter results by AP MAC address band : str + Comma separated list of Radio band (e.g. `24,5`). enum: `24`, `5`, `6` device : str + Comma separated list of Device type (e.g. `Mac,iPhone`). Case sensitive hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported. Accepts multiple comma-separated values. ip : str + Partial / full Client IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported. Accepts multiple comma-separated values. mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported. Accepts multiple comma-separated values. model : str + Only available for clients running the Marvis Client app, model, e.g. "MBP 15 late 2013", 6, 6s, "8+ GSM" os : str + Only available for clients running the Marvis Client app, os, e.g. Sierra, Yosemite, Windows 10 psk_id : str + PSK identifier used to filter the results psk_name : str + Only available for clients using PPSK authentication, the Name of the PSK ssid : str + Filter results by SSID text : str + Partial / full MAC address, hostname, username, psk_name or ip. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported username : str + Partial / full username. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `johndoe*` and `*mycorp*` match `johndoe@mycorp.com`). Suffix-only wildcards (e.g. `*mycorp.com`) are not supported. Accepts multiple comma-separated values. vlan : str + Filter results by VLAN ID limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -427,19 +485,31 @@ def countOrgWirelessClientsSessions( QUERY PARAMS ------------ distinct : str{'ap', 'device', 'hostname', 'ip', 'model', 'os', 'ssid', 'vlan'}, default: device + Field used to group this count response. enum: `ap`, `device`, `hostname`, `ip`, `model`, `os`, `ssid`, `vlan` ap : str + Filter results by AP MAC address band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` client_family : str + E.g. "Mac", "iPhone", "Apple watch" client_manufacture : str + Filter results by client manufacturer, e.g. "Apple" client_model : str + Filter results by client model, e.g. "8+", "XS" client_os : str + E.g. "Mojave", "Windows 10", "Linux" ssid : str + Filter results by SSID wlan_id : str + Filter results by WLAN identifier start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -515,23 +585,39 @@ def searchOrgWirelessClientSessions( QUERY PARAMS ------------ ap : str - band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + Filter results by AP MAC address + band : str + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable`. Accepts multiple comma-separated values. client_family : str + E.g. "Mac", "iPhone", "Apple watch". Accepts multiple comma-separated values. client_manufacture : str + Filter results by client manufacturer, e.g. "Apple". Accepts multiple comma-separated values. client_model : str + Filter results by client model, e.g. "8+", "XS". Accepts multiple comma-separated values. client_username : str + Filter results by client username. Accepts multiple comma-separated values. client_os : str + E.g. "Mojave", "Windows 10", "Linux". Accepts multiple comma-separated values. ssid : str + Filter results by SSID. Accepts multiple comma-separated values. wlan_id : str + Filter results by WLAN identifier psk_id : str + PSK identifier used to filter the results psk_name : str + Filter results by PSK name. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/deviceprofiles.py b/src/mistapi/api/v1/orgs/deviceprofiles.py index 20cc583..b603220 100644 --- a/src/mistapi/api/v1/orgs/deviceprofiles.py +++ b/src/mistapi/api/v1/orgs/deviceprofiles.py @@ -36,8 +36,11 @@ def listOrgDeviceProfiles( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by one device profile type. Use a single value; comma-separated values are not supported. enum: `ap`, `gateway`, `switch` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/devices.py b/src/mistapi/api/v1/orgs/devices.py index bc97744..3eb3b03 100644 --- a/src/mistapi/api/v1/orgs/devices.py +++ b/src/mistapi/api/v1/orgs/devices.py @@ -77,25 +77,43 @@ def countOrgDevices( QUERY PARAMS ------------ distinct : str{'hostname', 'ip', 'lldp_mgmt_addr', 'lldp_port_id', 'lldp_system_desc', 'lldp_system_name', 'mac', 'model', 'mxedge_id', 'mxtunnel_status', 'site_id', 'version'}, default: model + Field used to group this count response. enum: `hostname`, `ip`, `lldp_mgmt_addr`, `lldp_port_id`, `lldp_system_desc`, `lldp_system_name`, `mac`, `model`, `mxedge_id`, `mxtunnel_status`, `site_id`, `version` hostname : str + Partial / full hostname site_id : str + Filter results by site identifier model : str + Filter results by device model. Accepts multiple comma-separated values. managed : str + for switches and gateways, to filter on managed/unmanaged devices. Deprecated in favour of mist_configured. enum: `true`, `false` mac : str + Filter results by MAC address version : str + Filter results by software version ip : str + Filter results by IPv4 address mxtunnel_status : str{'down', 'up'} MxTunnel status, enum: `up`, `down` mxedge_id : str + Mist Edge id, if AP is connecting to a Mist Edge lldp_system_name : str + Filter results by LLDP system name lldp_system_desc : str + Filter results by LLDP system description lldp_port_id : str + Filter results by LLDP port identifier lldp_mgmt_addr : str + LLDP management IP address type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -156,7 +174,6 @@ def countOrgDeviceEvents( apfw: str | None = None, model: str | None = None, text: str | None = None, - timestamp: str | None = None, type: str | None = None, start: str | None = None, end: str | None = None, @@ -178,17 +195,27 @@ def countOrgDeviceEvents( QUERY PARAMS ------------ distinct : str{'ap', 'apfw', 'model', 'org_id', 'site_id', 'text', 'timestamp', 'type'}, default: model + Field used to group this count response. enum: `ap`, `apfw`, `model`, `org_id`, `site_id`, `text`, `timestamp`, `type` site_id : str + Filter results by site identifier ap : str + Filter results by AP MAC address apfw : str + Filter results by AP firmware version model : str + Filter results by device model text : str - timestamp : str + Filter results by event message text type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -210,8 +237,6 @@ def countOrgDeviceEvents( query_params["model"] = str(model) if text: query_params["text"] = str(text) - if timestamp: - query_params["timestamp"] = str(timestamp) if type: query_params["type"] = str(type) if start: @@ -233,7 +258,6 @@ def searchOrgDeviceEvents( model: str | None = None, device_type: str | None = None, text: str | None = None, - timestamp: str | None = None, type: str | None = None, last_by: str | None = None, includes: str | None = None, @@ -259,19 +283,31 @@ def searchOrgDeviceEvents( QUERY PARAMS ------------ mac : str + Filter results by MAC address. Accepts multiple comma-separated values. model : str + Filter results by device model. Accepts multiple comma-separated values. device_type : str, default: ap + Filter results by device type. Accepts multiple comma-separated values. text : str - timestamp : str + Filter results by event message text type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions). Accepts multiple comma-separated values. last_by : str + Return last/recent event for passed in field includes : str + Keyword to include events from additional indices (e.g. ext_tunnel for prisma events) limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -289,8 +325,6 @@ def searchOrgDeviceEvents( query_params["device_type"] = str(device_type) if text: query_params["text"] = str(text) - if timestamp: - query_params["timestamp"] = str(timestamp) if type: query_params["type"] = str(type) if last_by: @@ -338,11 +372,17 @@ def countOrgDeviceLastConfigs( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` distinct : str{'mac', 'name', 'site_id', 'version'} + Field used to group this count response. enum: `mac`, `name`, `site_id`, `version` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -398,16 +438,27 @@ def searchOrgDeviceLastConfigs( QUERY PARAMS ------------ device_type : str{'ap', 'gateway', 'switch', 'mxedge'}, default: ap + Filter results by device type. enum: `ap`, `gateway`, `switch`, `mxedge` mac : str + Filter results by MAC address. Accepts multiple comma-separated values. name : str + Filter results by name. Accepts multiple comma-separated values. version : str + Filter results by software version. Accepts multiple comma-separated values. cert_expiry_duration : str + Duration for expiring cert queries (format: 2d/3h/172800 seconds) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -464,7 +515,9 @@ def listOrgApsMacs( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -529,69 +582,114 @@ def searchOrgDevices( search_after: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/devices/search-org-devices - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - org_id : str - - QUERY PARAMS - ------------ - band_24_channel : int - band_5_channel : int - band_6_channel : int - band_24_bandwidth : int - band_5_bandwidth : int - band_6_bandwidth : int - band_24_power : int - band_5_power : int - band_6_power : int - clustered : bool - eth0_port_speed : int - evpntopo_id : str - ext_ip : str - hostname : str - ip : str - last_config_status : str - last_hostname : str - lldp_mgmt_addr : str - lldp_port_id : str - lldp_system_desc : str - lldp_system_name : str - mac : str - model : str - mxedge_id : str - mxedge_ids : str - mxtunnel_status : str{'down', 'up'} - When `type`==`ap`, MxTunnel status, up / down. - node : str{'node0', 'node1'} - When `type`==`gateway`. enum: `node0`, `node1` - node0_mac : str - node1_mac : str - power_constrained : bool - radius_stats : str - site_id : str - stats : bool - t128agent_version : str - type : str{'ap', 'gateway', 'switch'}, default: ap - Type of device. enum: `ap`, `gateway`, `switch` - version : str - limit : int, default: 100 - start : str - end : str - duration : str, default: 1d - sort : str, default: timestamp - search_after : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/devices/search-org-devices + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + band_24_channel : int + When `type`==`ap`, Channel of band_24. Accepts multiple comma-separated integer values. + band_5_channel : int + When `type`==`ap`, Channel of band_5. Accepts multiple comma-separated integer values. + band_6_channel : int + When `type`==`ap`, Channel of band_6. Accepts multiple comma-separated integer values. + band_24_bandwidth : int + When `type`==`ap`, Bandwidth of band_24. Accepts multiple comma-separated integer values. + band_5_bandwidth : int + When `type`==`ap`, Bandwidth of band_5. Accepts multiple comma-separated integer values. + band_6_bandwidth : int + When `type`==`ap`, Bandwidth of band_6. Accepts multiple comma-separated integer values. + band_24_power : int + When `type`==`ap`, Power of band_24. Accepts multiple comma-separated integer values. + band_5_power : int + When `type`==`ap`, Power of band_5. Accepts multiple comma-separated integer values. + band_6_power : int + When `type`==`ap`, Power of band_6. Accepts multiple comma-separated integer values. + clustered : bool + When `type`==`gateway`, true / false + eth0_port_speed : int + When `type`==`ap`, Port speed of eth0. Accepts multiple comma-separated integer values. + evpntopo_id : str + When `type`==`switch`, EVPN topology id + ext_ip : str + Partial / full Device external ip. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `1.2.3.*` and `*.2.3.*` match `1.2.3.4`). Suffix-only wildcards (e.g. `*.2.3.4`) are not supported. Accepts multiple comma-separated values. + hostname : str + Partial / full Device hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-london*` and `*london*` match `my-london-1`). Suffix-only wildcards (e.g. `*london-1`) are not supported. Accepts multiple comma-separated values. + ip : str + Partial / full Device IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported. Accepts multiple comma-separated values. + last_config_status : str + When `type`==`switch` or `type`==`gateway`, last configuration status + last_hostname : str + Last hostname of the device. Accepts multiple comma-separated values. + lldp_mgmt_addr : str + When `type`==`ap`, LLDP management IP address. Accepts multiple comma-separated values. + lldp_port_id : str + When `type`==`ap`, LLDP port id. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `ge-0/0/*` and `*-0/0/*` match `ge-0/0/30`). Suffix-only wildcards (e.g. `*switch-01`) are not supported. Accepts multiple comma-separated values. + lldp_system_desc : str + When `type`==`ap`, LLDP system description. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Juniper Networks*` and `*Networks*` match `Juniper Networks, Inc.`). Suffix-only wildcards (e.g. `*switch-01`) are not supported + lldp_system_name : str + When `type`==`ap`, LLDP system name. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-switch*` and `*switch*` match `my-switch-01`). Suffix-only wildcards (e.g. `*switch-01`) are not supported. Accepts multiple comma-separated values. + mac : str + Partial / full Device MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `001122*` and `*1122*` match `001122334455`). Suffix-only wildcards (e.g. `*4455`) are not supported. Accepts multiple comma-separated values. + model : str + Partial / full Device model. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `AP4*` and `*P4*` match `AP43`). Suffix-only wildcards (e.g. `*43`) are not supported. Accepts multiple comma-separated values. + mxedge_id : str + When `type`==`ap`, Mist Edge id, if AP is connecting to a Mist Edge. Accepts multiple comma-separated values. + mxedge_ids : str + When `type`==`ap`, Comma separated list of Mist Edge id, if AP is connecting to a Mist Edge + mxtunnel_status : str{'down', 'up'} + When `type`==`ap`, Mist Tunnel status used to filter results. enum: `down`, `up` + node : str{'node0', 'node1'} + When `type`==`gateway`. enum: `node0`, `node1` + node0_mac : str + When `type`==`gateway`, node0 MAC address + node1_mac : str + When `type`==`gateway`, node1 MAC address + power_constrained : bool + When `type`==`ap`, whether the AP is power constrained. + radius_stats : str + When `type`==`switch` or `type`==`gateway`, Key-value pairs where the key + is the RADIUS server address and the value contains authentication statistics: + * (string): IP address of the RADIUS server as the key + * `auth_accepts` (long): Number of accepted authentication requests + * `auth_rejects` (long): Number of rejected authentication requests + * `auth_timeouts` (long): Number of authentication timeouts + * `auth_server_status` (string): Status of the server. Possible values: `up`, `down`, `unreachable` + site_id : str + Filter results by site identifier + stats : bool + Whether to return device stats + t128agent_version : str + When `type`==`gateway` (SSR only), version of 128T agent + type : str{'ap', 'gateway', 'switch'}, default: ap + Device type used to filter results. enum: `ap`, `gateway`, `switch` + version : str + Filter results by software version. Accepts multiple comma-separated values. + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order + search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/orgs/{org_id}/devices/search" @@ -841,7 +939,9 @@ def listOrgAvailableDeviceVersions( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` model : str + Fetch version for device model, use/combine with `type` as needed (for switch and gateway devices). Accepts multiple comma-separated values. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/events.py b/src/mistapi/api/v1/orgs/events.py index 91b220d..88410bc 100644 --- a/src/mistapi/api/v1/orgs/events.py +++ b/src/mistapi/api/v1/orgs/events.py @@ -40,12 +40,19 @@ def searchOrgEvents( QUERY PARAMS ------------ type : str + Filter results by type. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -97,10 +104,15 @@ def countOrgSystemEvents( QUERY PARAMS ------------ distinct : str + Field used to group this count response limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -149,11 +161,17 @@ def searchOrgSystemEvents( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/evpn_topologies.py b/src/mistapi/api/v1/orgs/evpn_topologies.py index 15de4e0..1463fb0 100644 --- a/src/mistapi/api/v1/orgs/evpn_topologies.py +++ b/src/mistapi/api/v1/orgs/evpn_topologies.py @@ -36,9 +36,11 @@ def listOrgEvpnTopologies( QUERY PARAMS ------------ for_site : str{'any', 'false', 'true'}, default: any - Filter for org/site level EVPN Toplogies + Filter for org/site level EVPN topologies. enum: `any`, `false`, `true` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/gatewaytemplates.py b/src/mistapi/api/v1/orgs/gatewaytemplates.py index 29814c2..6b82963 100644 --- a/src/mistapi/api/v1/orgs/gatewaytemplates.py +++ b/src/mistapi/api/v1/orgs/gatewaytemplates.py @@ -35,7 +35,9 @@ def listOrgGatewayTemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/guests.py b/src/mistapi/api/v1/orgs/guests.py index abd254d..398490d 100644 --- a/src/mistapi/api/v1/orgs/guests.py +++ b/src/mistapi/api/v1/orgs/guests.py @@ -63,10 +63,15 @@ def countOrgGuestAuthorizations( QUERY PARAMS ------------ distinct : str{'auth_method', 'company', 'ssid'}, default: auth_method + Field used to group this count response. enum: `auth_method`, `company`, `ssid` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -117,13 +122,21 @@ def searchOrgGuestAuthorization( QUERY PARAMS ------------ wlan_id : str + Filter results by WLAN identifier auth_method : str + Filter results by authentication method ssid : str + Filter results by SSID limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/idpprofiles.py b/src/mistapi/api/v1/orgs/idpprofiles.py index b645032..41b14bc 100644 --- a/src/mistapi/api/v1/orgs/idpprofiles.py +++ b/src/mistapi/api/v1/orgs/idpprofiles.py @@ -35,7 +35,9 @@ def listOrgIdpProfiles( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/insights.py b/src/mistapi/api/v1/orgs/insights.py index 788d95b..90b0082 100644 --- a/src/mistapi/api/v1/orgs/insights.py +++ b/src/mistapi/api/v1/orgs/insights.py @@ -14,6 +14,70 @@ from mistapi.__api_response import APIResponse as _APIResponse +def getOrgMarvisClientInsights( + mist_session: _APISession, + org_id: str, + marvisclient_id: str, + duration: str | None = None, + interval: str | None = None, + start: str | None = None, + end: str | None = None, + limit: int | None = None, + page: int | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/clients/marvis/get-org-marvis-client-insights + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + marvisclient_id : str + Marvis Client device UUID + + QUERY PARAMS + ------------ + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + limit : int, default: 100 + Maximum number of results to return per page + page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/insights/marvisclient/{marvisclient_id}/marvisclient-metrics" + query_params: dict[str, str] = {} + if duration: + query_params["duration"] = str(duration) + if interval: + query_params["interval"] = str(interval) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if limit: + query_params["limit"] = str(limit) + if page: + query_params["page"] = str(page) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + def getOrgSitesSle( mist_session: _APISession, org_id: str, @@ -40,12 +104,19 @@ def getOrgSitesSle( QUERY PARAMS ------------ sle : str{'wan', 'wifi', 'wired'} + Filter insights by SLE name. enum: `wan`, `wifi`, `wired` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -95,14 +166,20 @@ def getOrgSle( ----------- org_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics QUERY PARAMS ------------ sle : str + See [List Insight Metrics](/#operations/listInsightMetrics) for more details duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/inventory.py b/src/mistapi/api/v1/orgs/inventory.py index f5fd203..0751349 100644 --- a/src/mistapi/api/v1/orgs/inventory.py +++ b/src/mistapi/api/v1/orgs/inventory.py @@ -26,6 +26,7 @@ def getOrgInventory( vc: bool | None = None, unassigned: bool | None = None, modified_after: int | None = None, + disconnected_before: int | None = None, limit: int | None = None, page: int | None = None, ) -> _APIResponse: @@ -44,16 +45,29 @@ def getOrgInventory( QUERY PARAMS ------------ serial : str + Filter results by device serial number. Accepts multiple comma-separated values. model : str - type : str{'ap', 'gateway', 'switch'} + Filter results by device model. Accepts multiple comma-separated values. + type : str + Filter results by type. enum: `ap`, `gateway`, `switch`. Accepts multiple comma-separated values. mac : str + Filter results by MAC address. Accepts multiple comma-separated values. site_id : str + Filter results by one site identifier. Use a single value; comma-separated values are not supported vc_mac : str + Virtual Chassis MAC address. Accepts multiple comma-separated values. vc : bool + To display Virtual Chassis members unassigned : bool, default: True + To display Unassigned devices modified_after : int + Filter on inventory last modified time, in epoch + disconnected_before : int + Filter results to devices that were last disconnected before this time, in epoch seconds limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -81,6 +95,8 @@ def getOrgInventory( query_params["unassigned"] = str(unassigned) if modified_after: query_params["modified_after"] = str(modified_after) + if disconnected_before: + query_params["disconnected_before"] = str(disconnected_before) if limit: query_params["limit"] = str(limit) if page: @@ -177,12 +193,19 @@ def countOrgInventory( QUERY PARAMS ------------ distinct : str{'model', 'status', 'site_id', 'sku', 'version'}, default: model + Field used to group this count response. enum: `model`, `status`, `site_id`, `sku`, `version` type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` site_id : str + Filter results by site identifier model : str + Filter results by device model. Accepts multiple comma-separated values. version : str + Filter results by software version status : str{'connected', 'disconnected'} + Filter results by status. enum: `connected`, `disconnected` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -360,20 +383,33 @@ def searchOrgInventory( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` mac : str + Filter by MAC address. Partial matches may use `*` wildcards (e.g. `*5b35*` matches `5c5b350e0001` and `5c5b35000301`). Accepts multiple comma-separated values. model : str + Partial / full Device model. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `AP4*` and `*P4*` match `AP43`). Suffix-only wildcards (e.g. `*43`) are not supported. Accepts multiple comma-separated values. name : str + Device name. Always a partial match (e.g. `london` will match `london-1`, `london-2`, `my-london-device`...). Accepts multiple comma-separated values. site_id : str + Filter inventory results by site identifier. Accepts multiple comma-separated values. serial : str + Device serial number. Partial match allowed with wildcard * (e.g. `*123*` will match `AB123CD`, `12345`, `XY123`). Accepts multiple comma-separated values. master : str + Filter inventory results by whether the device is the Virtual Chassis master sku : str + Device SKU. Partial match allowed with wildcard * (e.g. `*2300*` will match `EX2300-F-12P`). Accepts multiple comma-separated values. version : str - status : str{'connected', 'disconnected'} - Device status. enum: `connected`, `disconnected` + Device version. Partial match allowed with wildcard * (e.g. `2R3` will match `21.2R3-S3.5`). Accepts multiple comma-separated values. + status : str + Device status. enum: `connected`, `disconnected`. Accepts multiple comma-separated values. text : str + Wildcards for name, mac, serial limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/jsi.py b/src/mistapi/api/v1/orgs/jsi.py index e3df9d5..f0a8e9a 100644 --- a/src/mistapi/api/v1/orgs/jsi.py +++ b/src/mistapi/api/v1/orgs/jsi.py @@ -38,10 +38,15 @@ def listOrgJsiDevices( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` model : str + Filter results by device model serial : str + Filter results by device serial number mac : str + Filter results by MAC address RETURN ----------- @@ -172,9 +177,13 @@ def listOrgJsiPastPurchases( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` model : str + Filter results by one or more device models. Supports comma-separated values serial : str + Filter results by device serial number RETURN ----------- @@ -216,9 +225,10 @@ def countOrgJsiAssetsAndContracts( QUERY PARAMS ------------ - distinct : str{'account_id', 'claimed', 'has_support', 'eol_time', 'eos_time', 'version_time', 'model', 'sku', 'status', 'type', 'version', 'warranty_type'} - Distinct attributes to count + distinct : str{'account_id', 'claimed', 'has_support', 'end_of_sale_time', 'eos_time', 'version_time', 'model', 'sku', 'status', 'type', 'version', 'warranty_type'} + Field used to group this count response. enum: `account_id`, `claimed`, `has_support`, `end_of_sale_time`, `eos_time`, `version_time`, `model`, `sku`, `status`, `type`, `version`, `warranty_type` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -245,8 +255,8 @@ def searchOrgJsiAssetsAndContracts( sku: str | None = None, status: str | None = None, warranty_type: str | None = None, - eol_after: str | None = None, - eol_before: str | None = None, + end_of_sale_after: str | None = None, + end_of_sale_before: str | None = None, eos_after: str | None = None, eos_before: str | None = None, version_eos_after: str | None = None, @@ -274,26 +284,43 @@ def searchOrgJsiAssetsAndContracts( QUERY PARAMS ------------ claimed : bool + Device claim status, `true` for claimed devices, `false` for all devices. Accepts multiple comma-separated boolean values. model : str + Filter results by device model. Accepts multiple comma-separated values. serial : str + Filter results by device serial number. Accepts multiple comma-separated values. sku : str + Filter results by SKU. Accepts multiple comma-separated values. status : str{'all', 'connected', 'disconnected'}, default: all - Device status + Device status. enum: `all`, `connected`, `disconnected` warranty_type : str{'Standard Hardware Warranty', 'Enhanced Hardware Warranty', 'Dead On Arrival Warranty', 'Limited Lifetime Warranty', 'Software Warranty', 'Limited Lifetime Warranty for WLA', 'Warranty-JCPO EOL (DOA Not Included)', 'MIST Enhanced Hardware Warranty', 'MIST Standard Warranty', 'Determine Lifetime warranty'} - Device warranty type - eol_after : str - eol_before : str + Device warranty type used to filter Juniper Support Insight inventory. enum: `Standard Hardware Warranty`, `Enhanced Hardware Warranty`, `Dead On Arrival Warranty`, `Limited Lifetime Warranty`, `Software Warranty`, `Limited Lifetime Warranty for WLA`, `Warranty-JCPO EOL (DOA Not Included)`, `MIST Enhanced Hardware Warranty`, `MIST Standard Warranty`, `Determine Lifetime warranty` + end_of_sale_after : str + Filter devices with End Of Sale date after this date + end_of_sale_before : str + Filter devices with End Of Sale date before this date eos_after : str + Filter devices with End Of Support date after this date eos_before : str + Filter devices with End Of Support date before this date version_eos_after : str + Filter devices with OS Version End Of Support date after this date version_eos_before : str + Filter devices with OS Version End Of Support date before this date has_support : bool + Indicates if the device is covered under active support contract. Accepts multiple comma-separated boolean values. sirt_id : str + To get the onboarded devices that are affected by the SIRT ID pbn_id : str + To get the onboarded devices that are affected by the PBN ID text : str + Wildcards for `serial`, `model`, `account_id` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -315,10 +342,10 @@ def searchOrgJsiAssetsAndContracts( query_params["status"] = str(status) if warranty_type: query_params["warranty_type"] = str(warranty_type) - if eol_after: - query_params["eol_after"] = str(eol_after) - if eol_before: - query_params["eol_before"] = str(eol_before) + if end_of_sale_after: + query_params["end_of_sale_after"] = str(end_of_sale_after) + if end_of_sale_before: + query_params["end_of_sale_before"] = str(end_of_sale_before) if eos_after: query_params["eos_after"] = str(eos_after) if eos_before: @@ -370,8 +397,11 @@ def countOrgJsiPbn( distinct : str{'versions', 'models', 'customer_risk', 'bug_type'} Field to group by enum: `versions`, `models`, `customer_risk`, `bug_type` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -422,15 +452,25 @@ def searchOrgJsiPbn( QUERY PARAMS ------------ versions : str + OS versions to search for models : str + Device models to search for customer_risk : str + Customer risk level to filter by id : str + PBN ID to search for bug_type : str + Bug type to filter by limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -489,8 +529,11 @@ def countOrgJsiSirt( distinct : str{'versions', 'models', 'severity', 'jsa_updated_date'} Field to group by. enum: `jsa_updated_date`, `models`, `severity`, `versions` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -546,20 +589,35 @@ def searchOrgJsiSirt( QUERY PARAMS ------------ severity : str + Filter results by severity id : str + Filter results by identifier updated_after : str + JSA Updated date to be filtered after this date updated_before : str + JSA Updated date to be filtered before this date published_after : str + JSA Published date to be filtered after this date published_before : str + JSA Published date to be filtered before this date models : str + Filter results by models versions : str + Software version affected by the SIRT text : str + Wildcards search on os_version_affected, affected_models, severity, jsa_id limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/logs.py b/src/mistapi/api/v1/orgs/logs.py index f4764ad..049f0f9 100644 --- a/src/mistapi/api/v1/orgs/logs.py +++ b/src/mistapi/api/v1/orgs/logs.py @@ -42,14 +42,23 @@ def countOrgAuditLogs( QUERY PARAMS ------------ distinct : str{'admin_id', 'admin_name', 'message', 'site_id'}, default: admin_name + Field used to group this count response. enum: `admin_id`, `admin_name`, `message`, `site_id` admin_id : str + Filter audit log results by administrator identifier admin_name : str + Filter audit log results by one or more administrator names. Supports comma-separated values site_id : str + Filter results by site identifier message : str + Filter log results by message text start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -109,15 +118,23 @@ def listOrgAuditLogs( QUERY PARAMS ------------ site_id : str + Filter results by site identifier. Accepts multiple comma-separated values. admin_name : str + Filter results by one or more administrator names or email addresses. Supports comma-separated values message : str + Filter results by one or more message text values. Supports comma-separated values sort : str{'-timestamp', 'admin_id', 'site_id', 'timestamp'} - Sort order + Field used to sort results; a leading `-` indicates descending order. enum: `-timestamp`, `admin_id`, `site_id`, `timestamp` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/maps.py b/src/mistapi/api/v1/orgs/maps.py index 1c2c770..065118e 100644 --- a/src/mistapi/api/v1/orgs/maps.py +++ b/src/mistapi/api/v1/orgs/maps.py @@ -39,10 +39,11 @@ def importOrgMapsFile( auto_deviceprofile_assignment : bool Whether to auto assign device to deviceprofile by name csv : str - path to the file to upload. CSV file for ap name mapping, optional + path to the file to upload. Optional AP name-mapping CSV file file : str - path to the file to upload. Ekahau or ibwave file + path to the file to upload. Ekahau or iBwave floorplan file to import json : dict + Import options for the organization map file RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/marvisclients.py b/src/mistapi/api/v1/orgs/marvisclients.py new file mode 100644 index 0000000..da26ca1 --- /dev/null +++ b/src/mistapi/api/v1/orgs/marvisclients.py @@ -0,0 +1,221 @@ +""" +-------------------------------------------------------------------------------- +------------------------- Mist API Python CLI Session -------------------------- + + Written by: Thomas Munzer (tmunzer@juniper.net) + Github : https://github.com/tmunzer/mistapi_python + + This package is licensed under the MIT License. + +-------------------------------------------------------------------------------- +""" + +from mistapi import APISession as _APISession +from mistapi.__api_response import APIResponse as _APIResponse + + +def countOrgMarvisClientEvents( + mist_session: _APISession, + org_id: str, + distinct: str | None = None, + type: str | None = None, + device_id: str | None = None, + wifi_mac: str | None = None, + wifi_ip: str | None = None, + hostname: str | None = None, + ssid: str | None = None, + bssid: str | None = None, + channel: str | None = None, + pre_bssid: str | None = None, + pre_channel: str | None = None, + limit: int | None = None, + start: str | None = None, + end: str | None = None, + duration: str | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/clients/marvis/count-org-marvis-client-events + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + distinct : str, default: type + Field to count by. enum: `type`, `device_id`, `wifi_mac`, `wifi_ip`, `hostname`, `ssid`, `bssid`, `channel`, `pre_bssid`, `pre_channel` + type : str + Filter by event type + device_id : str + Filter by Marvis Client installation device UUID + wifi_mac : str + Filter by device Wi-Fi MAC address + wifi_ip : str + Filter by device Wi-Fi IP address + hostname : str + Filter by device hostname + ssid : str + Filter by SSID involved in roam events + bssid : str + Filter by BSSID the client roamed to + channel : str + Filter by channel the client roamed to + pre_bssid : str + Filter by BSSID the client roamed from + pre_channel : str + Filter by channel the client roamed from + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/marvisclients/events/count" + query_params: dict[str, str] = {} + if distinct: + query_params["distinct"] = str(distinct) + if type: + query_params["type"] = str(type) + if device_id: + query_params["device_id"] = str(device_id) + if wifi_mac: + query_params["wifi_mac"] = str(wifi_mac) + if wifi_ip: + query_params["wifi_ip"] = str(wifi_ip) + if hostname: + query_params["hostname"] = str(hostname) + if ssid: + query_params["ssid"] = str(ssid) + if bssid: + query_params["bssid"] = str(bssid) + if channel: + query_params["channel"] = str(channel) + if pre_bssid: + query_params["pre_bssid"] = str(pre_bssid) + if pre_channel: + query_params["pre_channel"] = str(pre_channel) + if limit: + query_params["limit"] = str(limit) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if duration: + query_params["duration"] = str(duration) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + +def searchOrgMarvisClientEvents( + mist_session: _APISession, + org_id: str, + type: str | None = None, + device_id: str | None = None, + wifi_mac: str | None = None, + wifi_ip: str | None = None, + hostname: str | None = None, + ssid: str | None = None, + bssid: str | None = None, + channel: str | None = None, + pre_bssid: str | None = None, + pre_channel: str | None = None, + limit: int | None = None, + start: str | None = None, + end: str | None = None, + duration: str | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/clients/marvis/search-org-marvis-client-events + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + type : str + Filter by event type + device_id : str + Filter by Marvis Client installation device UUID + wifi_mac : str + Filter by device Wi-Fi MAC address + wifi_ip : str + Filter by device Wi-Fi IP address + hostname : str + Filter by device hostname + ssid : str + Filter by SSID involved in roam events + bssid : str + Filter by BSSID the client roamed to + channel : str + Filter by channel the client roamed to + pre_bssid : str + Filter by BSSID the client roamed from + pre_channel : str + Filter by channel the client roamed from + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/marvisclients/events/search" + query_params: dict[str, str] = {} + if type: + query_params["type"] = str(type) + if device_id: + query_params["device_id"] = str(device_id) + if wifi_mac: + query_params["wifi_mac"] = str(wifi_mac) + if wifi_ip: + query_params["wifi_ip"] = str(wifi_ip) + if hostname: + query_params["hostname"] = str(hostname) + if ssid: + query_params["ssid"] = str(ssid) + if bssid: + query_params["bssid"] = str(bssid) + if channel: + query_params["channel"] = str(channel) + if pre_bssid: + query_params["pre_bssid"] = str(pre_bssid) + if pre_channel: + query_params["pre_channel"] = str(pre_channel) + if limit: + query_params["limit"] = str(limit) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if duration: + query_params["duration"] = str(duration) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp diff --git a/src/mistapi/api/v1/orgs/mxclusters.py b/src/mistapi/api/v1/orgs/mxclusters.py index 7d288cc..75b9a26 100644 --- a/src/mistapi/api/v1/orgs/mxclusters.py +++ b/src/mistapi/api/v1/orgs/mxclusters.py @@ -35,7 +35,9 @@ def listOrgMxEdgeClusters( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/mxedges.py b/src/mistapi/api/v1/orgs/mxedges.py index 27b16d4..549f5a6 100644 --- a/src/mistapi/api/v1/orgs/mxedges.py +++ b/src/mistapi/api/v1/orgs/mxedges.py @@ -36,9 +36,11 @@ def listOrgMxEdges( QUERY PARAMS ------------ for_site : str{'any', 'false', 'true'}, default: any - Filter for org/site level mist edges + Filter for org/site level Mist Edges. enum: `any`, `false`, `true` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -183,18 +185,31 @@ def countOrgMxEdges( QUERY PARAMS ------------ distinct : str{'distro', 'model', 'mxcluster_id', 'site_id', 'tunterm_version'}, default: model + Field used to group this count response. enum: `distro`, `model`, `mxcluster_id`, `site_id`, `tunterm_version` mxedge_id : str + Filter results by Mist Edge identifier site_id : str + Mist edge site id mxcluster_id : str + Mist edge cluster id model : str + Filter results by device model distro : str + Debian code name (buster, bullseye) tunterm_version : str + Filter results by tunnel termination version sort : str + Field used to sort results stats : bool + Whether to return device stats, default is false start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -262,14 +277,23 @@ def countOrgSiteMxEdgeEvents( QUERY PARAMS ------------ distinct : str{'mxcluster_id', 'mxedge_id', 'package', 'type'}, default: mxedge_id + Field used to group this count response. enum: `mxcluster_id`, `mxedge_id`, `package`, `type` mxedge_id : str + Filter results by Mist Edge identifier mxcluster_id : str + Mist edge cluster id type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) service : str + Filter results by service name start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -331,16 +355,27 @@ def searchOrgMistEdgeEvents( QUERY PARAMS ------------ mxedge_id : str + Filter results by Mist Edge identifier mxcluster_id : str + Mist edge cluster id type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) service : str + Filter results by service name component : str + Filter results by component name limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -409,19 +444,33 @@ def searchOrgMxEdges( QUERY PARAMS ------------ hostname : str + Partial / full Device hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-london*` and `*london*` match `my-london-1`). Suffix-only wildcards (e.g. `*london-1`) are not supported. Accepts multiple comma-separated values. mxedge_id : str + Filter results by Mist Edge identifier. Accepts multiple comma-separated values. mxcluster_id : str + Mist edge cluster id. Accepts multiple comma-separated values. model : str + Partial / full Device model. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `AP4*` and `*P4*` match `AP43`). Suffix-only wildcards (e.g. `*43`) are not supported. Accepts multiple comma-separated values. distro : str + Debian code name (buster, bullseye) tunterm_version : str + Filter results by tunnel termination version site_id : str + Mist edge site id stats : bool + Whether to return device stats, default is false limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -658,8 +707,9 @@ def getOrgMxEdgeUpgradeInfo( QUERY PARAMS ------------ channel : str{'alpha', 'beta', 'stable'}, default: stable - Upgrade channel to follow, stable (default) / beta / alpha + Upgrade channel used to filter available versions. enum: `alpha`, `beta`, `stable` distro : str + Filter results by distro RETURN ----------- @@ -819,8 +869,9 @@ def addOrgMxEdgeImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image file content uploaded as multipart form data json : str + Optional JSON metadata submitted with the image upload RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/mxtunnels.py b/src/mistapi/api/v1/orgs/mxtunnels.py index 4373a3d..cbe9c35 100644 --- a/src/mistapi/api/v1/orgs/mxtunnels.py +++ b/src/mistapi/api/v1/orgs/mxtunnels.py @@ -35,7 +35,9 @@ def listOrgMxTunnels( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/nac_clients.py b/src/mistapi/api/v1/orgs/nac_clients.py index 3a065a6..ed20685 100644 --- a/src/mistapi/api/v1/orgs/nac_clients.py +++ b/src/mistapi/api/v1/orgs/nac_clients.py @@ -26,7 +26,6 @@ def countOrgNacClients( idp_id: str | None = None, last_ssid: str | None = None, last_username: str | None = None, - timestamp: float | None = None, site_id: str | None = None, last_ap: str | None = None, mac: str | None = None, @@ -54,27 +53,45 @@ def countOrgNacClients( QUERY PARAMS ------------ distinct : str{'ap', 'auth_type', 'device_mac', 'edr_managed', 'edr_provider', 'edr_status', 'family', 'hostname', 'idp_id', 'mfg', 'mdm_compliance', 'mdm_managed', 'mdm_provider', 'model', 'mxedge_id', 'nacrule_matched', 'nacrule_name', 'nacrule_id', 'nas_ip', 'nas_vendor', 'os', 'site_id', 'ssid', 'status', 'type', 'usermac_label', 'username', 'vlan'}, default: type - NAC Policy Rule ID, if matched + Field used to group this count response. enum: `ap`, `auth_type`, `device_mac`, `edr_managed`, `edr_provider`, `edr_status`, `family`, `hostname`, `idp_id`, `mfg`, `mdm_compliance`, `mdm_managed`, `mdm_provider`, `model`, `mxedge_id`, `nacrule_matched`, `nacrule_name`, `nacrule_id`, `nas_ip`, `nas_vendor`, `os`, `site_id`, `ssid`, `status`, `type`, `usermac_label`, `username`, `vlan` last_nacrule_id : str + NAC Policy Rule ID, if matched nacrule_matched : bool + NAC Policy Rule Matched auth_type : str + Authentication type, e.g. "eap-tls", "eap-peap", "eap-ttls", "eap-teap", "mab", "psk", "device-auth" last_vlan_id : str + Filter results by last VLAN ID last_nas_vendor : str + Vendor of NAS device idp_id : str + SSO ID, if present and used last_ssid : str + Filter results by last SSID last_username : str - timestamp : float + Username presented by the client site_id : str + Filter results by site identifier last_ap : str + AP MAC connected to by client mac : str + Filter results by MAC address last_status : str + Connection status of client i.e "permitted", "denied, "session_ended" type : str + Client type i.e. "wireless", "wired" etc. Accepts multiple comma-separated values. mdm_compliance_status : str + MDM compliance of client i.e "compliant", "not compliant" mdm_provider : str + MDM provider of client’s organization eg "intune", "jamf" start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -102,8 +119,6 @@ def countOrgNacClients( query_params["last_ssid"] = str(last_ssid) if last_username: query_params["last_username"] = str(last_username) - if timestamp: - query_params["timestamp"] = str(timestamp) if site_id: query_params["site_id"] = str(site_id) if last_ap: @@ -155,11 +170,17 @@ def countOrgNacClientEvents( QUERY PARAMS ------------ distinct : str{'ap', 'auth_type', 'dryrun_nacrule_id', 'mac', 'nacrule_id', 'nas_vendor', 'ssid', 'type', 'username', 'vlan'} + Field used to group this count response. enum: `ap`, `auth_type`, `dryrun_nacrule_id`, `mac`, `nacrule_id`, `nas_vendor`, `ssid`, `type`, `username`, `vlan` type : str + See [List Device Events Definitions](/#operations/listNacEventsDefinitions). Accepts multiple comma-separated values. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -207,7 +228,6 @@ def searchOrgNacClientEvents( ap: str | None = None, random_mac: bool | None = None, mac: str | None = None, - timestamp: float | None = None, usermac_label: str | None = None, text: str | None = None, nas_ip: str | None = None, @@ -234,36 +254,63 @@ def searchOrgNacClientEvents( QUERY PARAMS ------------ type : str + See [List Device Events Definitions](/#operations/listNacEventsDefinitions). Accepts multiple comma-separated values. nacrule_id : str + NAC Policy Rule ID, if matched. Accepts multiple comma-separated values. nacrule_matched : bool + NAC Policy Rule Matched dryrun_nacrule_id : str + NAC Policy Dry Run Rule ID, if present and matched dryrun_nacrule_matched : bool + True - if dryrun rule present and matched with priority, False - if not matched or not present auth_type : str + Authentication type, e.g. "eap-tls", "eap-peap", "eap-ttls", "eap-teap", "mab", "psk", "device-auth". Accepts multiple comma-separated values. vlan : int + Filter results by VLAN ID. Accepts multiple comma-separated integer values. nas_vendor : str + Vendor of NAS device bssid : str + Filter results by BSSID idp_id : str + SSO ID, if present and used idp_role : str + IDP returned roles/groups for the user idp_username : str + Username presented to the Identity Provider resp_attrs : list - Radius attributes returned by NAC to NAS derive + RADIUS attributes returned by NAC to NAS derive ssid : str + Filter results by SSID username : str + Filter results by username. Accepts multiple comma-separated values. site_id : str + Filter results by one site identifier. Use a single value; comma-separated values are not supported ap : str + Filter results by AP MAC address random_mac : bool + Filter results by whether the client is using a randomized MAC address. Accepts multiple comma-separated boolean values. mac : str - timestamp : float + Filter results by one MAC address. Use a single value; comma-separated values are not supported usermac_label : str + Labels derived from usermac entry text : str + Partial / full MAC address, username, device_mac or ap nas_ip : str + IP address of NAS device. Accepts multiple comma-separated values. ingress_vlan : str + Vendor specific VLAN ID in RADIUS requests limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: wxid + On which field the list should be sorted, -prefix represents DESC order. search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -311,8 +358,6 @@ def searchOrgNacClientEvents( query_params["random_mac"] = str(random_mac) if mac: query_params["mac"] = str(mac) - if timestamp: - query_params["timestamp"] = str(timestamp) if usermac_label: query_params["usermac_label"] = str(usermac_label) if text: @@ -365,7 +410,6 @@ def searchOrgNacClients( ssid: str | None = None, status: str | None = None, text: str | None = None, - timestamp: float | None = None, type: str | None = None, usermac_label: list | None = None, username: str | None = None, @@ -393,46 +437,77 @@ def searchOrgNacClients( QUERY PARAMS ------------ ap : str + MAC address of the AP the client is/was connected to auth_type : str + Authentication type, e.g. "eap-tls", "eap-peap", "eap-ttls", "eap-teap", "mab", "psk", "device-auth". Accepts multiple comma-separated values. cert_expiry_duration : str + Filter by certificate expiry within a specific duration from now (e.g., "7d" for 7 days, "1m" for 1 month). Accepts multiple comma-separated values. edr_managed : bool + Filters NAC clients that are integrated with EDR providers edr_provider : str{'crowdstrike', 'sentinelone'} - EDR provider of client's organization + EDR provider used to filter NAC clients. enum: `crowdstrike`, `sentinelone` edr_status : str{'sentinelone_healthy', 'sentinelone_infected', 'crowdstrike_low', 'crowdstrike_medium', 'crowdstrike_high', 'crowdstrike_critical', 'crowdstrike_informational'} - EDR Status of the NAC client + EDR status used to filter NAC clients. enum: `sentinelone_healthy`, `sentinelone_infected`, `crowdstrike_low`, `crowdstrike_medium`, `crowdstrike_high`, `crowdstrike_critical`, `crowdstrike_informational` family : str + Partial / full Client family (e.g. "Phone/Tablet/Wearable", "Access Point"). Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Surveillance*` and `*urveillance*` match `Surveillance Camera`). Suffix-only wildcards (e.g. `*Camera`) are not supported. Accepts multiple comma-separated values. hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported. Accepts multiple comma-separated values. idp_id : str + SSO ID, if present and used mac : str + Partial / full Client MAC address. Use a single value; comma-separated values are not supported. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported mdm_compliance : str + MDM compliance of client i.e "compliant", "not compliant" mdm_provider : str + MDM provider of client’s organization eg "intune", "jamf" mdm_managed : bool + Filters NAC clients that are managed by MDM providers mfg : str + Partial / full Client manufacturer (e.g. "apple", "cisco", "juniper"). Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Raspberry Pi*` and `*Pi*` match `Raspberry Pi Trading Ltd`). Suffix-only wildcards (e.g. `*Ltd`) are not supported. Accepts multiple comma-separated values. model : str + Client model, e.g. "iPhone 12", "MX100" nacrule_name : str + NAC Policy Rule Name matched nacrule_id : str + NAC Policy Rule ID, if matched nacrule_matched : bool + NAC Policy Rule Matched nas_vendor : str + Vendor of NAS device nas_ip : str + IP address of NAS device. Accepts multiple comma-separated values. ingress_vlan : str + Vendor specific VLAN ID in RADIUS requests os : str + Client OS, e.g. "iOS 18.1", "Android", "Windows", "Linux" ssid : str + Filter results by SSID status : str{'permitted', 'session_started', 'session_stopped', 'denied'} - Connection status of client i.e "permitted", "denied, "session_started", "session_stopped" + Client connection status used to filter results. enum: `permitted`, `session_started`, `session_stopped`, `denied` text : str - timestamp : float + partial / full MAC address, last_username, device_mac, nas_ip or last_ap type : str + Client type i.e. "wireless", "wired" etc. Accepts multiple comma-separated values. usermac_label : list Labels derived from usermac entry username : str + Filter results by username vlan : str + Filter results by VLAN ID site_id : str + Filter results by one site identifier. Use a single value; comma-separated values are not supported limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: wxid + On which field the list should be sorted, -prefix represents DESC order. search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -492,8 +567,6 @@ def searchOrgNacClients( query_params["status"] = str(status) if text: query_params["text"] = str(text) - if timestamp: - query_params["timestamp"] = str(timestamp) if type: query_params["type"] = str(type) if usermac_label: diff --git a/src/mistapi/api/v1/orgs/nacportals.py b/src/mistapi/api/v1/orgs/nacportals.py index c27457f..8834730 100644 --- a/src/mistapi/api/v1/orgs/nacportals.py +++ b/src/mistapi/api/v1/orgs/nacportals.py @@ -35,7 +35,9 @@ def listOrgNacPortals( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -198,10 +200,15 @@ def listOrgNacPortalSsoLatestFailures( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -276,9 +283,9 @@ def uploadOrgNacPortalImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image binary payload to upload for the PSK portal json : str - JSON string describing the upload + Metadata JSON string describing the PSK portal image upload RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/nacrules.py b/src/mistapi/api/v1/orgs/nacrules.py index 4b26868..27f189b 100644 --- a/src/mistapi/api/v1/orgs/nacrules.py +++ b/src/mistapi/api/v1/orgs/nacrules.py @@ -35,7 +35,9 @@ def listOrgNacRules( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/nactags.py b/src/mistapi/api/v1/orgs/nactags.py index 013a709..55f45c9 100644 --- a/src/mistapi/api/v1/orgs/nactags.py +++ b/src/mistapi/api/v1/orgs/nactags.py @@ -37,13 +37,16 @@ def listOrgNacTags( QUERY PARAMS ------------ - type : str{'egress_vlan_names', 'gbp_tag', 'match', 'radius_attrs', 'radius_group', 'radius_vendor_attrs', 'redirect_nacportal_id', 'session_timeout', 'username_attr', 'vlan'} - Type of NAC Tag. enum: `egress_vlan_names`, `gbp_tag`, `match`, `radius_attrs`, `radius_group`, `radius_vendor_attrs`, `session_timeout`, `username_attr`, `vlan` + type : str + Filter results by type. enum: `egress_vlan_names`, `gbp_tag`, `match`, `radius_attrs`, `radius_group`, `radius_vendor_attrs`, `redirect_nacportal_id`, `session_timeout`, `username_attr`, `vlan`. Accepts multiple comma-separated values. name : str - match : str{'cert_cn', 'cert_eku', 'cert_issuer', 'cert_san', 'cert_serial', 'cert_sub', 'cert_template', 'client_mac', 'edr_status', 'gbp_tag', 'hostname', 'idp_role', 'ingress_vlan', 'mdm_status', 'nas_ip', 'radius_group', 'realm', 'ssid', 'user_name', 'usermac_label'} - if `type`==`match`, Type of NAC Tag. enum: `cert_cn`, `cert_eku`, `cert_issuer`, `cert_san`, `cert_serial`, `cert_sub`, `cert_template`, `client_mac`, `edr_status`, `gbp_tag`, `hostname`, `idp_role`, `ingress_vlan`, `mdm_status`, `nas_ip`, `radius_group`, `realm`, `ssid`, `user_name`, `usermac_label` + Filter results by name. Accepts multiple comma-separated values. + match : str + if `type`==`match`, Type of NAC Tag. enum: `cert_cn`, `cert_eku`, `cert_issuer`, `cert_san`, `cert_serial`, `cert_sub`, `cert_template`, `client_mac`, `edr_status`, `gbp_tag`, `hostname`, `idp_role`, `ingress_vlan`, `mdm_status`, `nas_ip`, `radius_group`, `realm`, `ssid`, `user_name`, `usermac_label`. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/networks.py b/src/mistapi/api/v1/orgs/networks.py index bc87ef8..13c142d 100644 --- a/src/mistapi/api/v1/orgs/networks.py +++ b/src/mistapi/api/v1/orgs/networks.py @@ -35,7 +35,9 @@ def listOrgNetworks( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/networktemplates.py b/src/mistapi/api/v1/orgs/networktemplates.py index 1880751..2a384e0 100644 --- a/src/mistapi/api/v1/orgs/networktemplates.py +++ b/src/mistapi/api/v1/orgs/networktemplates.py @@ -35,7 +35,9 @@ def listOrgNetworkTemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/ocdevices.py b/src/mistapi/api/v1/orgs/ocdevices.py index 77b7b99..3fb3d32 100644 --- a/src/mistapi/api/v1/orgs/ocdevices.py +++ b/src/mistapi/api/v1/orgs/ocdevices.py @@ -32,6 +32,7 @@ def getOrgJuniperDevicesCommand( QUERY PARAMS ------------ site_id : str + Filter results by site identifier RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/otherdevices.py b/src/mistapi/api/v1/orgs/otherdevices.py index a9d539b..b6adf55 100644 --- a/src/mistapi/api/v1/orgs/otherdevices.py +++ b/src/mistapi/api/v1/orgs/otherdevices.py @@ -40,12 +40,19 @@ def listOrgOtherDevices( QUERY PARAMS ------------ vendor : str + Filter results by vendor mac : str + Filter results by MAC address serial : str + Filter results by device serial number model : str + Filter results by device model name : str + Filter results by name limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -129,11 +136,17 @@ def countOrgOtherDeviceEvents( QUERY PARAMS ------------ distinct : str{'mac', 'site_id', 'type', 'vendor'}, default: mac + Field used to group this count response. enum: `mac`, `site_id`, `type`, `vendor` type : str + See [List Device Events Definitions](/#operations/listOtherDeviceEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -190,17 +203,29 @@ def searchOrgOtherDeviceEvents( QUERY PARAMS ------------ site_id : str + Filter results by site identifier mac : str + Filter results by MAC address device_mac : str + MAC of attached device model : str + Filter results by device model vendor : str + Filter results by vendor type : str + See [List Device Events Definitions](/#operations/listOtherDeviceEventsDefinitions) limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/pcaps.py b/src/mistapi/api/v1/orgs/pcaps.py index 1578221..599330b 100644 --- a/src/mistapi/api/v1/orgs/pcaps.py +++ b/src/mistapi/api/v1/orgs/pcaps.py @@ -38,10 +38,15 @@ def listOrgPacketCaptures( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/pma.py b/src/mistapi/api/v1/orgs/pma.py index 323e019..ea7ddca 100644 --- a/src/mistapi/api/v1/orgs/pma.py +++ b/src/mistapi/api/v1/orgs/pma.py @@ -35,7 +35,9 @@ def listOrgPmaDashboards( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/pskportals.py b/src/mistapi/api/v1/orgs/pskportals.py index 6f2a023..f0cff92 100644 --- a/src/mistapi/api/v1/orgs/pskportals.py +++ b/src/mistapi/api/v1/orgs/pskportals.py @@ -35,7 +35,9 @@ def listOrgPskPortals( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -108,10 +110,15 @@ def listOrgPskPortalLogs( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -159,10 +166,15 @@ def countOrgPskPortalLogs( QUERY PARAMS ------------ distinct : str{'admin_id', 'admin_name', 'psk_id', 'psk_name', 'pskportal_id', 'user_id'}, default: pskportal_id + Field used to group this count response. enum: `admin_id`, `admin_name`, `psk_id`, `psk_name`, `pskportal_id`, `user_id` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -218,18 +230,31 @@ def searchOrgPskPortalLogs( QUERY PARAMS ------------ psk_name : str + Filter PSK portal log results by PSK name psk_id : str + Filter PSK portal log results by PSK identifier pskportal_id : str + Filter PSK portal log results by PSK portal identifier id : str + Filter results by identifier admin_name : str + Filter audit log results by administrator name admin_id : str + Filter audit log results by administrator identifier name_id : str + Filter results by name id limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -408,9 +433,9 @@ def uploadOrgPskPortalImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image binary payload to upload for the PSK portal json : str - JSON string describing the upload + Metadata JSON string describing the PSK portal image upload RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/psks.py b/src/mistapi/api/v1/orgs/psks.py index 536f6cd..586c66e 100644 --- a/src/mistapi/api/v1/orgs/psks.py +++ b/src/mistapi/api/v1/orgs/psks.py @@ -38,10 +38,15 @@ def listOrgPsks( QUERY PARAMS ------------ name : str + Filter results by name. Accepts multiple comma-separated values. ssid : str + Filter results by SSID. Accepts multiple comma-separated values. role : str + Filter PSK results by role. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -176,7 +181,7 @@ def importOrgPsksFile( BODY PARAMS ----------- file : str - path to the file to upload. + path to the file to upload. Uploaded CSV or binary file containing PSKs to import RETURN ----------- @@ -236,6 +241,7 @@ def getOrgPsk(mist_session: _APISession, org_id: str, psk_id: str) -> _APIRespon ----------- org_id : str psk_id : str + PSK ID RETURN ----------- @@ -262,6 +268,7 @@ def deleteOrgPsk(mist_session: _APISession, org_id: str, psk_id: str) -> _APIRes ----------- org_id : str psk_id : str + PSK ID RETURN ----------- @@ -290,6 +297,7 @@ def updateOrgPsk( ----------- org_id : str psk_id : str + PSK ID BODY PARAMS ----------- @@ -322,6 +330,7 @@ def deleteOrgPskOldPassphrase( ----------- org_id : str psk_id : str + PSK ID RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/rftemplates.py b/src/mistapi/api/v1/orgs/rftemplates.py index ea02173..24366b9 100644 --- a/src/mistapi/api/v1/orgs/rftemplates.py +++ b/src/mistapi/api/v1/orgs/rftemplates.py @@ -35,7 +35,9 @@ def listOrgRfTemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/secintelprofiles.py b/src/mistapi/api/v1/orgs/secintelprofiles.py index ea3197e..4c0fbd0 100644 --- a/src/mistapi/api/v1/orgs/secintelprofiles.py +++ b/src/mistapi/api/v1/orgs/secintelprofiles.py @@ -35,7 +35,9 @@ def listOrgSecIntelProfiles( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/secpolicies.py b/src/mistapi/api/v1/orgs/secpolicies.py index 001f49e..e010edc 100644 --- a/src/mistapi/api/v1/orgs/secpolicies.py +++ b/src/mistapi/api/v1/orgs/secpolicies.py @@ -35,7 +35,9 @@ def listOrgSecPolicies( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/servicepolicies.py b/src/mistapi/api/v1/orgs/servicepolicies.py index e4f2d76..b1c6ab1 100644 --- a/src/mistapi/api/v1/orgs/servicepolicies.py +++ b/src/mistapi/api/v1/orgs/servicepolicies.py @@ -35,7 +35,9 @@ def listOrgServicePolicies( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/services.py b/src/mistapi/api/v1/orgs/services.py index 59a93b2..20e034e 100644 --- a/src/mistapi/api/v1/orgs/services.py +++ b/src/mistapi/api/v1/orgs/services.py @@ -35,7 +35,9 @@ def listOrgServices( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/setting.py b/src/mistapi/api/v1/orgs/setting.py index 4bf4fa9..d9dd5a9 100644 --- a/src/mistapi/api/v1/orgs/setting.py +++ b/src/mistapi/api/v1/orgs/setting.py @@ -609,9 +609,14 @@ def updateOrgMistScep( def listOrgIssuedClientCertificates( mist_session: _APISession, org_id: str, - sso_name_id: str | None = None, + common_name: str | None = None, + cert_provider: str | None = None, serial_number: str | None = None, device_id: str | None = None, + expire_time: int | None = None, + created_time: int | None = None, + limit: int | None = None, + page: int | None = None, ) -> _APIResponse: """ API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/scep/list-org-issued-client-certificates @@ -627,9 +632,22 @@ def listOrgIssuedClientCertificates( QUERY PARAMS ------------ - sso_name_id : str + common_name : str + Filter by certificate common name (e.g. user UPN or device identifier) + cert_provider : str + Filter by MDM or certificate provider that issued the certificate. Accepts multiple comma-separated values. serial_number : str + Filter by certificate serial number. Accepts multiple comma-separated values. device_id : str + Filter by device identifier associated with the certificate. Accepts multiple comma-separated values. + expire_time : int + Filter by certificate expiry time, in epoch seconds + created_time : int + Filter by certificate issuance time, in epoch seconds + limit : int, default: 100 + Maximum number of results to return per page + page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -639,12 +657,22 @@ def listOrgIssuedClientCertificates( uri = f"/api/v1/orgs/{org_id}/setting/mist_scep/client_certs" query_params: dict[str, str] = {} - if sso_name_id: - query_params["sso_name_id"] = str(sso_name_id) + if common_name: + query_params["common_name"] = str(common_name) + if cert_provider: + query_params["cert_provider"] = str(cert_provider) if serial_number: query_params["serial_number"] = str(serial_number) if device_id: query_params["device_id"] = str(device_id) + if expire_time: + query_params["expire_time"] = str(expire_time) + if created_time: + query_params["created_time"] = str(created_time) + if limit: + query_params["limit"] = str(limit) + if page: + query_params["page"] = str(page) resp = mist_session.mist_get(uri=uri, query=query_params) return resp @@ -1017,6 +1045,7 @@ def getOrgOauthAppLinkedStatus( QUERY PARAMS ------------ forward : str + Mist portal url to which backend needs to redirect after successful OAuth authorization. **Required** to get the `authorization_url` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/sitegroups.py b/src/mistapi/api/v1/orgs/sitegroups.py index fe0532e..50ac751 100644 --- a/src/mistapi/api/v1/orgs/sitegroups.py +++ b/src/mistapi/api/v1/orgs/sitegroups.py @@ -35,7 +35,9 @@ def listOrgSiteGroups( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/sites.py b/src/mistapi/api/v1/orgs/sites.py index 1a55e0e..b33331f 100644 --- a/src/mistapi/api/v1/orgs/sites.py +++ b/src/mistapi/api/v1/orgs/sites.py @@ -35,7 +35,9 @@ def listOrgSites( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -108,10 +110,15 @@ def countOrgSites( QUERY PARAMS ------------ distinct : str{'analytic_enabled', 'app_waking', 'asset_enabled', 'auto_upgrade_enabled', 'auto_upgrade_version', 'country_code', 'honeypot_enabled', 'id', 'locate_unconnected', 'mesh_enabled', 'name', 'remote_syslog_enabled', 'rogue_enabled', 'rtsa_enabled', 'vna_enabled', 'wifi_enabled'}, default: id + Field used to group this count response. enum: `analytic_enabled`, `app_waking`, `asset_enabled`, `auto_upgrade_enabled`, `auto_upgrade_version`, `country_code`, `honeypot_enabled`, `id`, `locate_unconnected`, `mesh_enabled`, `name`, `remote_syslog_enabled`, `rogue_enabled`, `rtsa_enabled`, `vna_enabled`, `wifi_enabled` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -176,27 +183,49 @@ def searchOrgSites( QUERY PARAMS ------------ analytic_enabled : bool + If Advanced Analytic feature is enabled. Accepts multiple comma-separated boolean values. app_waking : bool + If App Waking feature is enabled asset_enabled : bool + If Asset Tracking is enabled. Accepts multiple comma-separated boolean values. auto_upgrade_enabled : bool + Filter results by whether automatic upgrades are enabled auto_upgrade_version : str + Filter results by automatic upgrade version. Accepts multiple comma-separated values. country_code : str + Filter results by country code. Accepts multiple comma-separated values. honeypot_enabled : bool + If Honeypot detection is enabled. Accepts multiple comma-separated boolean values. id : str + Filter results by identifier. Accepts multiple comma-separated values. locate_unconnected : bool + If unconnected client are located. Accepts multiple comma-separated boolean values. mesh_enabled : bool + If Mesh feature is enabled. Accepts multiple comma-separated boolean values. name : str + Partial / full Site name. Case insensitive. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-site*` and `*site*` match `my-site-01`). Suffix-only wildcards (e.g. `*site-01`) are not supported. Accepts multiple comma-separated values. rogue_enabled : bool + If Rogue detection is enabled. Accepts multiple comma-separated boolean values. remote_syslog_enabled : bool + If Remote Syslog is enabled rtsa_enabled : bool + If managed mobility feature is enabled. Accepts multiple comma-separated boolean values. vna_enabled : bool + If Virtual Network Assistant is enabled. Accepts multiple comma-separated boolean values. wifi_enabled : bool + If Wi-Fi feature is enabled limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -281,10 +310,11 @@ def importOrgMapToSiteFile( auto_deviceprofile_assignment : bool Whether to auto assign device to deviceprofile by name csv : str - path to the file to upload. CSV file for ap name mapping, optional + path to the file to upload. Optional AP name-mapping CSV file file : str - path to the file to upload. Ekahau or ibwave file + path to the file to upload. Ekahau or iBwave floorplan file to import json : dict + Import options for the site map file RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/sitetemplates.py b/src/mistapi/api/v1/orgs/sitetemplates.py index 4f849e9..c0297f6 100644 --- a/src/mistapi/api/v1/orgs/sitetemplates.py +++ b/src/mistapi/api/v1/orgs/sitetemplates.py @@ -35,7 +35,9 @@ def listOrgSiteTemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/ssoroles.py b/src/mistapi/api/v1/orgs/ssoroles.py index 336d5c3..c835b82 100644 --- a/src/mistapi/api/v1/orgs/ssoroles.py +++ b/src/mistapi/api/v1/orgs/ssoroles.py @@ -35,7 +35,9 @@ def listOrgSsoRoles( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/ssos.py b/src/mistapi/api/v1/orgs/ssos.py index d3a8dea..55413a1 100644 --- a/src/mistapi/api/v1/orgs/ssos.py +++ b/src/mistapi/api/v1/orgs/ssos.py @@ -35,7 +35,9 @@ def listOrgSsos( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -226,10 +228,15 @@ def listOrgSsoLatestFailures( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/ssr.py b/src/mistapi/api/v1/orgs/ssr.py index f08d951..aaddfbb 100644 --- a/src/mistapi/api/v1/orgs/ssr.py +++ b/src/mistapi/api/v1/orgs/ssr.py @@ -66,6 +66,7 @@ def getOrgSsrRegistrationCommands( QUERY PARAMS ------------ ttl : int + Token validity duration in seconds. Defaults to 1 year (31536000 seconds) asset_ids : list When specified restricts registration to listed assets only. Prefer HTTP body over headers for this parameter, especially with long lists to avoid header size limits. @@ -217,8 +218,9 @@ def listOrgAvailableSsrVersions( QUERY PARAMS ------------ channel : str{'alpha', 'beta', 'stable'}, default: stable - SSR version channel + SSR release channel used to filter available versions. enum: `alpha`, `beta`, `stable` mac : str + Optional. MAC address, or comma separated MAC address list. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/stats.py b/src/mistapi/api/v1/orgs/stats.py index 1a1df64..247e452 100644 --- a/src/mistapi/api/v1/orgs/stats.py +++ b/src/mistapi/api/v1/orgs/stats.py @@ -63,10 +63,15 @@ def listOrgAssetsStats( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -111,7 +116,9 @@ def countOrgAssetsByDistanceField( QUERY PARAMS ------------ distinct : str{'ibeacon_major', 'ibeacon_minor', 'ibeacon_uuid', 'mac', 'map_id', 'site_id'} + Field used to group this count response. enum: `ibeacon_major`, `ibeacon_minor`, `ibeacon_uuid`, `mac`, `map_id`, `site_id` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -168,25 +175,45 @@ def searchOrgAssets( QUERY PARAMS ------------ site_id : str + Filter results by site identifier mac : str + Filter results by MAC address. Accepts multiple comma-separated values. device_name : str + Filter asset results by reporting device name name : str + Filter results by name. Accepts multiple comma-separated values. map_id : str + Filter results by map identifier ibeacon_uuid : str + Filter asset results by iBeacon UUID. Accepts multiple comma-separated values. ibeacon_major : str + Filter asset results by iBeacon major value. Accepts multiple comma-separated values. ibeacon_minor : str + Filter asset results by iBeacon minor value. Accepts multiple comma-separated values. eddystone_uid_namespace : str + Filter asset results by Eddystone UID namespace eddystone_uid_instance : str + Filter asset results by Eddystone UID instance eddystone_url : str + Filter asset results by Eddystone URL ap_mac : str + Filter asset results by reporting AP MAC address. Accepts multiple comma-separated values. beam : int + Filter asset results by beam value. Accepts multiple comma-separated integer values. rssi : int + Filter asset results by RSSI value. Accepts multiple comma-separated integer values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -262,8 +289,11 @@ def countOrgBgpStats( QUERY PARAMS ------------ state : str + Filter peer results by state distinct : str + Field used to group this count response limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -312,15 +342,25 @@ def searchOrgBgpStats( QUERY PARAMS ------------ mac : str + Filter results by MAC address. Accepts multiple comma-separated values. neighbor_mac : str + Filter peer results by neighbor MAC address site_id : str + Filter results by site identifier vrf_name : str + Filter peer results by VRF name. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -384,18 +424,30 @@ def listOrgDevicesStats( QUERY PARAMS ------------ - type : str, default: ap - status : str{'all', 'connected', 'disconnected'}, default: all + type : str{'all', 'ap', 'switch', 'gateway'}, default: ap + Filter results by one device type. Use a single value; comma-separated values are not supported. enum: `all`, `ap`, `gateway`, `switch` + status : str + Filter results by status. enum: `all`, `connected`, `disconnected`. Accepts multiple comma-separated values. site_id : str + Filter results by site identifier. Accepts multiple comma-separated values. mac : str + Filter results by MAC address. Accepts multiple comma-separated values. evpntopo_id : str + Filter results by evpntopo id evpn_unused : str + If `evpn_unused`==`true`, find EVPN eligible switches which don’t belong to any EVPN Topology yet fields : str + List of additional fields requests, comma separated, or `fields=*` for all of them start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -458,6 +510,203 @@ def deleteOrgMarvisClient(mist_session: _APISession, org_id: str) -> _APIRespons return resp +def countOrgMarvisClientsStats( + mist_session: _APISession, + org_id: str, + distinct: str | None = None, + device_id: str | None = None, + wifi_mac: str | None = None, + wifi_ip: str | None = None, + hostname: str | None = None, + model: str | None = None, + mfg: str | None = None, + serial: str | None = None, + os_type: str | None = None, + os_version: str | None = None, + limit: int | None = None, + start: str | None = None, + end: str | None = None, + duration: str | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/stats/marvis-clients/count-org-marvis-clients-stats + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + distinct : str, default: os_type + Field to count by. enum: `device_id`, `wifi_mac`, `wifi_ip`, `hostname`, `model`, `mfg`, `serial`, `os_type`, `os_version` + device_id : str + Filter by Marvis Client installation device UUID + wifi_mac : str + Filter by device Wi-Fi MAC address + wifi_ip : str + Filter by device Wi-Fi IP address + hostname : str + Filter by device hostname + model : str + Filter by device model + mfg : str + Filter by device manufacturer + serial : str + Filter by device serial number + os_type : str + Filter by device OS type or platform + os_version : str + Filter by device OS version + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/stats/marvisclients/count" + query_params: dict[str, str] = {} + if distinct: + query_params["distinct"] = str(distinct) + if device_id: + query_params["device_id"] = str(device_id) + if wifi_mac: + query_params["wifi_mac"] = str(wifi_mac) + if wifi_ip: + query_params["wifi_ip"] = str(wifi_ip) + if hostname: + query_params["hostname"] = str(hostname) + if model: + query_params["model"] = str(model) + if mfg: + query_params["mfg"] = str(mfg) + if serial: + query_params["serial"] = str(serial) + if os_type: + query_params["os_type"] = str(os_type) + if os_version: + query_params["os_version"] = str(os_version) + if limit: + query_params["limit"] = str(limit) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if duration: + query_params["duration"] = str(duration) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + +def searchOrgMarvisClientsStats( + mist_session: _APISession, + org_id: str, + device_id: str | None = None, + wifi_mac: str | None = None, + wifi_ip: str | None = None, + hostname: str | None = None, + model: str | None = None, + mfg: str | None = None, + serial: str | None = None, + os_type: str | None = None, + os_version: str | None = None, + limit: int | None = None, + start: str | None = None, + end: str | None = None, + duration: str | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/stats/marvis-clients/search-org-marvis-clients-stats + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + device_id : str + Filter by Marvis Client installation device UUID + wifi_mac : str + Filter by device Wi-Fi MAC address + wifi_ip : str + Filter by device Wi-Fi IP address + hostname : str + Filter by device hostname + model : str + Filter by device model + mfg : str + Filter by device manufacturer + serial : str + Filter by device serial number + os_type : str + Filter by device OS type or platform + os_version : str + Filter by device OS version + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/orgs/{org_id}/stats/marvisclients/search" + query_params: dict[str, str] = {} + if device_id: + query_params["device_id"] = str(device_id) + if wifi_mac: + query_params["wifi_mac"] = str(wifi_mac) + if wifi_ip: + query_params["wifi_ip"] = str(wifi_ip) + if hostname: + query_params["hostname"] = str(hostname) + if model: + query_params["model"] = str(model) + if mfg: + query_params["mfg"] = str(mfg) + if serial: + query_params["serial"] = str(serial) + if os_type: + query_params["os_type"] = str(os_type) + if os_version: + query_params["os_version"] = str(os_version) + if limit: + query_params["limit"] = str(limit) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if duration: + query_params["duration"] = str(duration) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + def listOrgMxEdgesStats( mist_session: _APISession, org_id: str, @@ -483,12 +732,17 @@ def listOrgMxEdgesStats( QUERY PARAMS ------------ for_site : str{'any', 'true', 'false'} - Filter for site level mist edges + Filter for site level Mist Edges. enum: `any`, `true`, `false` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -533,6 +787,7 @@ def getOrgMxEdgeStats( QUERY PARAMS ------------ for_site : bool + Filter results by whether the object is scoped to a site RETURN ----------- @@ -573,11 +828,17 @@ def countOrgOspfStats( QUERY PARAMS ------------ distinct : str{'site_id', 'org_id', 'mac', 'peer_ip', 'port_id', 'state', 'vrf_name'} + Field used to group this count response. enum: `site_id`, `org_id`, `mac`, `peer_ip`, `port_id`, `state`, `vrf_name` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -631,14 +892,23 @@ def searchOrgOspfStats( QUERY PARAMS ------------ site_id : str + Filter results by site identifier mac : str + Filter results by MAC address vrf_name : str + Filter peer results by VRF name peer_ip : str + Filter peer results by peer IP address start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -748,39 +1018,67 @@ def countOrgSwOrGwPorts( QUERY PARAMS ------------ distinct : str{'full_duplex', 'mac', 'neighbor_mac', 'neighbor_port_desc', 'neighbor_system_name', 'poe_disabled', 'poe_mode', 'poe_on', 'port_id', 'port_mac', 'speed', 'up'}, default: mac + Field used to group this count response. enum: `full_duplex`, `mac`, `neighbor_mac`, `neighbor_port_desc`, `neighbor_system_name`, `poe_disabled`, `poe_mode`, `poe_on`, `port_id`, `port_mac`, `speed`, `up` full_duplex : bool + Indicates full or half duplex mac : str + Filter results by MAC address. Accepts multiple comma-separated values. neighbor_mac : str + Chassis identifier of the chassis type listed neighbor_port_desc : str + Description supplied by the system on the interface E.g. "GigabitEthernet2/0/39" neighbor_system_name : str + Name supplied by the system on the interface E.g. neighbor system name E.g. "Kumar-Acc-SW.mist.local" poe_disabled : bool + Is the POE configured not be disabled. poe_mode : str + POE mode depending on class E.g. "802.3at" poe_on : bool + Is the device attached to POE port_id : str + Filter results by port identifier port_mac : str + Filter results by port MAC address power_draw : float + Amount of power being used by the interface at the time the command is executed. Unit in watts. tx_pkts : int + Filter results by transmitted packet count rx_pkts : int + Filter results by received packet count rx_bytes : int + Filter results by received byte count tx_bps : int + Filter results by transmit rate rx_bps : int + Filter results by receive rate tx_mcast_pkts : int + Filter results by transmitted multicast packet count tx_bcast_pkts : int + Filter results by transmitted broadcast packet count rx_mcast_pkts : int + Filter results by received multicast packet count rx_bcast_pkts : int + Filter results by received broadcast packet count speed : int + Filter results by port speed stp_state : str{'', 'blocking', 'disabled', 'forwarding', 'learning', 'listening'} - If `up`==`true` + STP state used to filter port results when `up`==`true`. enum: `""`, `blocking`, `disabled`, `forwarding`, `learning`, `listening` stp_role : str{'', 'alternate', 'backup', 'designated', 'disabled', 'root', 'root-prevented'} - If `up`==`true` + STP role used to filter port results when `up`==`true`. enum: `""`, `alternate`, `backup`, `designated`, `disabled`, `root`, `root-prevented` auth_state : str{'', 'authenticated', 'authenticating', 'held', 'init'} - If `up`==`true` && has Authenticator role + Authentication state used to filter port results when `up`==`true` and the port has an authenticator role. enum: `""`, `authenticated`, `authenticating`, `held`, `init` up : bool + Indicates if interface is up site_id : str + Filter results by site identifier start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -898,35 +1196,54 @@ def searchOrgSwOrGwPorts( QUERY PARAMS ------------ - device_type : str{'switch', 'gateway', 'all'}, default: all - Type of device. enum: `switch`, `gateway`, `all` + device_type : str + Type of device. enum: `switch`, `gateway`, `all`. Accepts multiple comma-separated values. auth_state : str{'', 'authenticated', 'authenticating', 'held', 'init'} - If `up`==`true` && has Authenticator role + Authentication state used to filter port results when `up`==`true` and the port has an authenticator role. enum: `""`, `authenticated`, `authenticating`, `held`, `init` full_duplex : bool + Indicates full or half duplex lte_imsi : str + LTE IMSI value, Check for null/empty lte_iccid : str + LTE ICCID value, Check for null/empty lte_imei : str + LTE IMEI value, Check for null/empty mac : str + Filter results by MAC address. Accepts multiple comma-separated values. neighbor_mac : str + Chassis identifier of the chassis type listed. Accepts multiple comma-separated values. neighbor_port_desc : str + Description supplied by the system on the interface E.g. "GigabitEthernet2/0/39". Accepts multiple comma-separated values. neighbor_system_name : str + Name supplied by the system on the interface E.g. neighbor system name E.g. "Kumar-Acc-SW.mist.local". Accepts multiple comma-separated values. poe_disabled : bool + Is the POE configured not be disabled. poe_mode : str + POE mode depending on class E.g. "802.3at" poe_on : bool + Is the device attached to POE poe_priority : str{'low', 'high'} - PoE priority. + PoE priority used to filter switch port results. enum: `low`, `high` port_id : str + Filter results by port identifier. Accepts multiple comma-separated values. port_mac : str + Filter results by port MAC address. Accepts multiple comma-separated values. speed : int + Filter results by port speed stp_state : str{'', 'blocking', 'disabled', 'forwarding', 'learning', 'listening'} - If `up`==`true` + STP state used to filter port results when `up`==`true`. enum: `""`, `blocking`, `disabled`, `forwarding`, `learning`, `listening` stp_role : str{'', 'alternate', 'backup', 'designated', 'disabled', 'root', 'root-prevented'} - If `up`==`true` + STP role used to filter port results when `up`==`true`. enum: `""`, `alternate`, `backup`, `designated`, `disabled`, `root`, `root-prevented` up : bool + Indicates if interface is up xcvr_part_number : str + Optic Slot Partnumber, Check for null/empty limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -1009,7 +1326,9 @@ def listOrgSiteStats( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -1035,29 +1354,30 @@ def countOrgTunnelsStats( limit: int | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/stats/tunnels/count-org-tunnels-stats - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - org_id : str - - QUERY PARAMS - ------------ - distinct : str{'ap', 'auth_algo', 'encrypt_algo', 'ike_version', 'ip', 'last_event', 'mac', 'mxcluster_id', 'mxedge_id', 'node', 'peer_host', 'peer_ip', 'peer_mxedge_id', 'protocol', 'remote_ip', 'remote_port', 'site_id', 'state', 'tunnel_name', 'up', 'wxtunnel_id'}, default: wxtunnel_id - - If `type`==`wxtunnel`: wxtunnel_id / ap / remote_ip / remote_port / state / mxedge_id / mxcluster_id / site_id / peer_mxedge_id; default is wxtunnel_id - - If `type`==`wan`: mac / site_id / node / peer_ip / peer_host/ ip / tunnel_name / protocol / auth_algo / encrypt_algo / ike_version / last_event / up - type : str{'wan', 'wxtunnel'}, default: wxtunnel - limit : int, default: 100 - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/orgs/stats/tunnels/count-org-tunnels-stats + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + org_id : str + + QUERY PARAMS + ------------ + distinct : str{'ap', 'auth_algo', 'encrypt_algo', 'ike_version', 'ip', 'last_event', 'mac', 'mxcluster_id', 'mxedge_id', 'node', 'peer_host', 'peer_ip', 'peer_mxedge_id', 'protocol', 'remote_ip', 'remote_port', 'site_id', 'state', 'tunnel_name', 'up', 'wxtunnel_id'}, default: wxtunnel_id + Field used to group tunnel statistics count results. enum: `ap`, `auth_algo`, `encrypt_algo`, `ike_version`, `ip`, `last_event`, `mac`, `mxcluster_id`, `mxedge_id`, `node`, `peer_host`, `peer_ip`, `peer_mxedge_id`, `protocol`, `remote_ip`, `remote_port`, `site_id`, `state`, `tunnel_name`, `up`, `wxtunnel_id` + type : str{'wan', 'wxtunnel'}, default: wxtunnel + Filter results by type. enum: `wan`, `wxtunnel` + limit : int, default: 100 + Maximum number of results to return per page + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/orgs/{org_id}/stats/tunnels/count" @@ -1113,27 +1433,49 @@ def searchOrgTunnelsStats( QUERY PARAMS ------------ mxcluster_id : str + Filter results by mxcluster id when `type`==`wxtunnel` site_id : str + Filter results by site identifier wxtunnel_id : str + Filter results by wxtunnel id when `type`==`wxtunnel` ap : str + Filter results by AP MAC address when `type`==`wxtunnel` mac : str + Filter results by MAC address when `type`==`wan` node : str + Filter results by node when `type`==`wan` peer_ip : str + Filter results by peer ip when `type`==`wan` peer_host : str + Filter results by peer host when `type`==`wan` ip : str + Filter results by IP address when `type`==`wan` tunnel_name : str + Filter results by tunnel name when `type`==`wan` protocol : str + Filter results by protocol when `type`==`wan` auth_algo : str + Filter results by auth algo when `type`==`wan` encrypt_algo : str + Filter results by encrypt algo when `type`==`wan` ike_version : str + Filter results by ike version when `type`==`wan` up : str + Filter results by up when `type`==`wan` type : str{'wan', 'wxtunnel'}, default: wxtunnel + Filter results by type. enum: `wan`, `wxtunnel` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 5m + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -1215,10 +1557,15 @@ def countOrgPeerPathStats( QUERY PARAMS ------------ distinct : str + Field used to group this count response start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -1270,14 +1617,23 @@ def searchOrgPeerPathStats( QUERY PARAMS ------------ mac : str + Filter results by MAC address. Accepts multiple comma-separated values. site_id : str - type : str{'ipsec', 'svr'} + Filter results by site identifier + type : str + VPN implementation type used to filter the results. enum: `ipsec`, `svr`. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/templates.py b/src/mistapi/api/v1/orgs/templates.py index 60f3677..89bce4d 100644 --- a/src/mistapi/api/v1/orgs/templates.py +++ b/src/mistapi/api/v1/orgs/templates.py @@ -35,7 +35,9 @@ def listOrgTemplates( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/tickets.py b/src/mistapi/api/v1/orgs/tickets.py index ea9adee..6a7295f 100644 --- a/src/mistapi/api/v1/orgs/tickets.py +++ b/src/mistapi/api/v1/orgs/tickets.py @@ -36,8 +36,11 @@ def listOrgTickets( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -109,7 +112,9 @@ def countOrgTickets( QUERY PARAMS ------------ distinct : str{'status', 'type'}, default: status + Field used to group this count response. enum: `status`, `type` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -151,8 +156,11 @@ def getOrgTicket( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -265,8 +273,11 @@ def GetOrgTicketAttachment( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -309,8 +320,9 @@ def addOrgTicketCommentFile( BODY PARAMS ----------- comment : str + Text body for the ticket comment submitted with the uploaded file file : str - path to the file to upload. + path to the file to upload. Binary file payload to attach to the ticket comment RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/troubleshoot.py b/src/mistapi/api/v1/orgs/troubleshoot.py index fca5052..faa2242 100644 --- a/src/mistapi/api/v1/orgs/troubleshoot.py +++ b/src/mistapi/api/v1/orgs/troubleshoot.py @@ -38,11 +38,15 @@ def troubleshootOrg( QUERY PARAMS ------------ mac : str + **required** when troubleshooting device or a client site_id : str + **required** when troubleshooting site start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` type : str{'wan', 'wired', 'wireless'} - When troubleshooting site, type of network to troubleshoot + When troubleshooting site, type of network to troubleshoot. enum: `wan`, `wired`, `wireless` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/usermacs.py b/src/mistapi/api/v1/orgs/usermacs.py index 381bf57..902fb2a 100644 --- a/src/mistapi/api/v1/orgs/usermacs.py +++ b/src/mistapi/api/v1/orgs/usermacs.py @@ -101,8 +101,11 @@ def countOrgUserMacs( distinct : str{'mac', 'name', 'labels', 'org_id'} Attribute to count by. enum: `mac`, `name`, `labels`, `org_id` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -173,7 +176,7 @@ def importOrgUserMacsFile( BODY PARAMS ----------- file : str - path to the file to upload. File to upload + path to the file to upload. CSV file containing user MAC entries to import RETURN ----------- @@ -244,11 +247,15 @@ def searchOrgUserMacs( QUERY PARAMS ------------ mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported labels : list Optional, array of strings of labels limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/vars.py b/src/mistapi/api/v1/orgs/vars.py index fe2500b..19c111b 100644 --- a/src/mistapi/api/v1/orgs/vars.py +++ b/src/mistapi/api/v1/orgs/vars.py @@ -39,11 +39,17 @@ def searchOrgVars( QUERY PARAMS ------------ site_id : str + Filter results by site identifier. Accepts multiple comma-separated values. var : str + Filter variable results by variable name. Accepts multiple comma-separated values. src : str{'deviceprofile', 'site'} + Filter results by source. enum: `deviceprofile`, `site` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/vpns.py b/src/mistapi/api/v1/orgs/vpns.py index 5202996..fb72b5d 100644 --- a/src/mistapi/api/v1/orgs/vpns.py +++ b/src/mistapi/api/v1/orgs/vpns.py @@ -35,7 +35,9 @@ def listOrgVpns( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wan_client.py b/src/mistapi/api/v1/orgs/wan_client.py index 2a2774d..9efce46 100644 --- a/src/mistapi/api/v1/orgs/wan_client.py +++ b/src/mistapi/api/v1/orgs/wan_client.py @@ -39,11 +39,17 @@ def countOrgWanClientEvents( QUERY PARAMS ------------ distinct : str{'hostname', 'ip', 'mac', 'mfg', 'type'}, default: type + Field used to group this count response. enum: `hostname`, `ip`, `mac`, `mfg`, `type` type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wan_clients.py b/src/mistapi/api/v1/orgs/wan_clients.py index c191c8b..a4cd2d3 100644 --- a/src/mistapi/api/v1/orgs/wan_clients.py +++ b/src/mistapi/api/v1/orgs/wan_clients.py @@ -38,10 +38,15 @@ def countOrgWanClients( QUERY PARAMS ------------ distinct : str{'hostname', 'ip', 'mac', 'mfg', 'network'}, default: mac + Field used to group this count response. enum: `hostname`, `ip`, `mac`, `mfg`, `network` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -96,17 +101,29 @@ def searchOrgWanClientEvents( QUERY PARAMS ------------ type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported ip : str + Partial / full Client IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported mfg : str + Partial / full Client manufacturer (e.g. "apple", "cisco", "juniper"). Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Raspberry Pi*` and `*Pi*` match `Raspberry Pi Trading Ltd`). Suffix-only wildcards (e.g. `*Ltd`) are not supported nacrule_id : str + Filter results by NAC rule identifier limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -176,18 +193,31 @@ def searchOrgWanClients( QUERY PARAMS ------------ site_id : str + Filter results by site identifier hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported. Accepts multiple comma-separated values. ip : str + Partial / full Client IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported. Accepts multiple comma-separated values. ip_src : str + Filter results by source IP address mac : str + Filter results by MAC address. Accepts multiple comma-separated values. mfg : str + Filter results by manufacturer. Accepts multiple comma-separated values. network : str + Partial / full Name of the network the client is/was connected to. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-corp*` and `*corp*` match `my-corp-network`). Suffix-only wildcards (e.g. `*corp`) are not supported. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/webhooks.py b/src/mistapi/api/v1/orgs/webhooks.py index a66434b..c31e781 100644 --- a/src/mistapi/api/v1/orgs/webhooks.py +++ b/src/mistapi/api/v1/orgs/webhooks.py @@ -35,7 +35,9 @@ def listOrgWebhooks( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -202,16 +204,23 @@ def countOrgWebhooksDeliveries( QUERY PARAMS ------------ error : str + Filter webhook delivery results by error message status_code : int + Filter webhook delivery results by HTTP status code status : str{'failure', 'success'} - Webhook delivery status + Webhook delivery status used to filter results. enum: `failure`, `success` topic : str{'alarms', 'audits', 'device-updowns', 'occupancy-alerts', 'ping'} - Webhook topic + Webhook topic used to filter results. enum: `alarms`, `audits`, `device-updowns`, `occupancy-alerts`, `ping` distinct : str{'status', 'status_code', 'topic', 'webhook_id'} + Field used to group this count response. enum: `status`, `status_code`, `topic`, `webhook_id` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -274,17 +283,25 @@ def searchOrgWebhooksDeliveries( QUERY PARAMS ------------ error : str + Filter webhook delivery results by error message status_code : int + Filter webhook delivery results by HTTP status code status : str{'failure', 'success'} - Webhook delivery status + Webhook delivery status used to filter results. enum: `failure`, `success` topic : str{'alarms', 'audits', 'device-updowns', 'occupancy-alerts', 'ping'} - Webhook topic + Webhook topic used to filter results. enum: `alarms`, `audits`, `device-updowns`, `occupancy-alerts`, `ping` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wired_clients.py b/src/mistapi/api/v1/orgs/wired_clients.py index c8cdfff..81c3dd7 100644 --- a/src/mistapi/api/v1/orgs/wired_clients.py +++ b/src/mistapi/api/v1/orgs/wired_clients.py @@ -38,10 +38,15 @@ def countOrgWiredClients( QUERY PARAMS ------------ distinct : str{'device_mac', 'mac', 'port_id', 'site_id', 'type', 'vlan'}, default: mac + Field used to group this count response. enum: `device_mac`, `mac`, `port_id`, `site_id`, `type`, `vlan` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -75,7 +80,7 @@ def searchOrgWiredClients( device_mac: str | None = None, mac: str | None = None, port_id: str | None = None, - vlan: int | None = None, + vlan: str | None = None, ip: str | None = None, manufacture: str | None = None, text: str | None = None, @@ -107,29 +112,51 @@ def searchOrgWiredClients( QUERY PARAMS ------------ auth_state : str + Filter results by auth state auth_method : str - source : str{'lldp', 'mac'} - source from where the client was learned (lldp, mac) + Filter results by authentication method. Accepts multiple comma-separated values. + source : str + Filter results by client learning source. enum: `lldp`, `mac`. Accepts multiple comma-separated values. site_id : str + Filter results by site identifier device_mac : str + Filter results by one or more gateway or switch MAC addresses where the client has connected. Supports comma-separated values mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported. Accepts multiple comma-separated values. port_id : str - vlan : int + Filter results by one or more port identifiers where the client has connected. Supports comma-separated values + vlan : str + Filter results by one or more VLAN IDs. Supports comma-separated values ip : str + Filter results by one or more IPv4 addresses. Supports comma-separated values manufacture : str + Filter results by manufacturer. Accepts multiple comma-separated values. text : str + Partial / full Client MAC address, hostname or username. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*ddeeff`) are not supported nacrule_id : str + Filter results by NAC rule identifier dhcp_hostname : str + Filter results by DHCP hostname. Accepts multiple comma-separated values. dhcp_fqdn : str + Filter results by DHCP FQDN dhcp_client_identifier : str + Filter results by DHCP client identifier. Accepts multiple comma-separated values. dhcp_vendor_class_identifier : str + DHCP Vendor Class Identifier. Accepts multiple comma-separated values. dhcp_request_params : str + Filter results by DHCP request parameters. Accepts multiple comma-separated values. limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wlans.py b/src/mistapi/api/v1/orgs/wlans.py index c4aa5bb..a48dee0 100644 --- a/src/mistapi/api/v1/orgs/wlans.py +++ b/src/mistapi/api/v1/orgs/wlans.py @@ -35,7 +35,9 @@ def listOrgWlans( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -219,8 +221,9 @@ def uploadOrgWlanPortalImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image file content uploaded as multipart form data json : str + Optional JSON metadata submitted with the image upload RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wxrules.py b/src/mistapi/api/v1/orgs/wxrules.py index 99b38ef..9b3db27 100644 --- a/src/mistapi/api/v1/orgs/wxrules.py +++ b/src/mistapi/api/v1/orgs/wxrules.py @@ -35,7 +35,9 @@ def listOrgWxRules( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wxtags.py b/src/mistapi/api/v1/orgs/wxtags.py index 8de95bd..d8ff5e8 100644 --- a/src/mistapi/api/v1/orgs/wxtags.py +++ b/src/mistapi/api/v1/orgs/wxtags.py @@ -35,7 +35,9 @@ def listOrgWxTags( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/orgs/wxtunnels.py b/src/mistapi/api/v1/orgs/wxtunnels.py index 4e8aa9c..d1f7fa3 100644 --- a/src/mistapi/api/v1/orgs/wxtunnels.py +++ b/src/mistapi/api/v1/orgs/wxtunnels.py @@ -35,7 +35,9 @@ def listOrgWxTunnels( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/register/recaptcha.py b/src/mistapi/api/v1/register/recaptcha.py index 373594c..06060de 100644 --- a/src/mistapi/api/v1/register/recaptcha.py +++ b/src/mistapi/api/v1/register/recaptcha.py @@ -28,6 +28,7 @@ def getAdminRegistrationInfo( QUERY PARAMS ------------ recaptcha_flavor : str{'google', 'hcaptcha'}, default: google + Filter login settings by reCAPTCHA flavor. enum: `google`, `hcaptcha` RETURN ----------- diff --git a/src/mistapi/api/v1/self/logs.py b/src/mistapi/api/v1/self/logs.py index 8093517..c878e3f 100644 --- a/src/mistapi/api/v1/self/logs.py +++ b/src/mistapi/api/v1/self/logs.py @@ -35,13 +35,19 @@ def listSelfAuditLogs( QUERY PARAMS ------------ message : str + Filter results by message text sort : str{'-timestamp', 'admin_id', 'site_id', 'timestamp'} - Sort order + Field used to sort results; a leading `-` indicates descending order. enum: `-timestamp`, `admin_id`, `site_id`, `timestamp` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/self/oauth.py b/src/mistapi/api/v1/self/oauth.py index da4390e..803ccb1 100644 --- a/src/mistapi/api/v1/self/oauth.py +++ b/src/mistapi/api/v1/self/oauth.py @@ -32,6 +32,7 @@ def getOauth2UrlForLinking( QUERY PARAMS ------------ forward : str + Callback URL to forward to after the OAuth login flow RETURN ----------- diff --git a/src/mistapi/api/v1/self/two_factor.py b/src/mistapi/api/v1/self/two_factor.py index 22c3913..1f611e9 100644 --- a/src/mistapi/api/v1/self/two_factor.py +++ b/src/mistapi/api/v1/self/two_factor.py @@ -28,7 +28,7 @@ def generateSecretFor2faVerification( QUERY PARAMS ------------ by : str{'qrcode'}, default: qrcode - If `by`==`qrcode`, returns the secret as a qrcode image + Secret response format. If `by`==`qrcode`, returns the secret as a QR code image. enum: `qrcode` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/__init__.py b/src/mistapi/api/v1/sites/__init__.py index 71cd926..e1344ab 100644 --- a/src/mistapi/api/v1/sites/__init__.py +++ b/src/mistapi/api/v1/sites/__init__.py @@ -39,6 +39,7 @@ location, maps, mapstacks, + marvis_configs, mxedges, mxtunnels, nac_clients, @@ -109,6 +110,7 @@ "location", "maps", "mapstacks", + "marvis_configs", "mxedges", "mxtunnels", "nac_clients", diff --git a/src/mistapi/api/v1/sites/aamwprofiles.py b/src/mistapi/api/v1/sites/aamwprofiles.py index 905d02f..f85ff4b 100644 --- a/src/mistapi/api/v1/sites/aamwprofiles.py +++ b/src/mistapi/api/v1/sites/aamwprofiles.py @@ -35,7 +35,9 @@ def listSiteAAMWProfilesDerived( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/alarms.py b/src/mistapi/api/v1/sites/alarms.py index dcc0ab9..0e280e6 100644 --- a/src/mistapi/api/v1/sites/alarms.py +++ b/src/mistapi/api/v1/sites/alarms.py @@ -105,16 +105,25 @@ def countSiteAlarms( QUERY PARAMS ------------ distinct : str{'acked', 'group', 'severity', 'type'}, default: type - Group by and count the alarms by some distinct field + Field used to group this count response. enum: `acked`, `group`, `severity`, `type` ack_admin_name : str + Name of the admins who have acked the alarms; accepts multiple values separated by comma acked : bool + Filter alarm results by whether the alarm has been acknowledged type : str + Key-name of the alarms; accepts multiple values separated by comma severity : str + Alarm severity; accepts multiple values separated by comma group : str + Alarm group name; accepts multiple values separated by comma start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -164,42 +173,46 @@ def searchSiteAlarms( search_after: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/alarms/search-site-alarms - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - - QUERY PARAMS - ------------ - group : str{'infrastructure', 'marvis', 'security'} - Alarm group. enum: `infrastructure`, `marvis`, `security`. - The `marvis` group is used to retrieve AI-driven network issue detections. - Known Marvis alarm types include: `bad_cable`, `bad_wan_uplink`, `dns_failure`, - `arp_failure`, `auth_failure`, `dhcp_failure`, `missing_vlan`, - `negotiation_mismatch`, `port_flap`. Results include resolution status - (`status`, `resolved_time`) and affected entity details." - severity : str{'critical', 'info', 'warn'} - Severity of the alarm. enum: `critical`, `info`, `warn` - type : str - ack_admin_name : str - acked : bool - limit : int, default: 100 - start : str - end : str - duration : str, default: 1d - sort : str, default: timestamp - search_after : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/alarms/search-site-alarms + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + + QUERY PARAMS + ------------ + group : str{'certificate_expiry', 'infrastructure', 'marvis', 'security'} + Alarm group used to filter alarm results. enum: `certificate_expiry`, `infrastructure`, `marvis`, `security`. The `marvis` group is used to retrieve AI-driven network issue detections. Known Marvis alarm types include: `bad_cable`, `bad_wan_uplink`, `dns_failure`, `arp_failure`, `auth_failure`, `dhcp_failure`, `missing_vlan`, `negotiation_mismatch`, `port_flap`. Results include resolution status (`status`, `resolved_time`) and affected entity details. + severity : str{'critical', 'info', 'warn'} + Alarm severity used to filter results. enum: `critical`, `info`, `warn` + type : str + Filter alarms by alarm type. Accepts multiple values separated by comma. Use [List Alarm Definitions](/#operations/listAlarmDefinitions) to get the list of possible alarm types + ack_admin_name : str + Name of the admins who have acked the alarms; accepts multiple values separated by comma + acked : bool + Filter alarm results by whether the alarm has been acknowledged + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order + search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/alarms/search" diff --git a/src/mistapi/api/v1/sites/anomaly.py b/src/mistapi/api/v1/sites/anomaly.py index c9dd1b7..3f952f8 100644 --- a/src/mistapi/api/v1/sites/anomaly.py +++ b/src/mistapi/api/v1/sites/anomaly.py @@ -30,6 +30,7 @@ def getSiteAnomalyEventsForClient( site_id : str client_mac : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics RETURN ----------- @@ -58,6 +59,7 @@ def getSiteAnomalyEventsForDevice( ----------- site_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics device_mac : str RETURN @@ -87,6 +89,7 @@ def listSiteAnomalyEvents( ----------- site_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics RETURN ----------- diff --git a/src/mistapi/api/v1/sites/aptemplates.py b/src/mistapi/api/v1/sites/aptemplates.py index 3a30a7d..e854e59 100644 --- a/src/mistapi/api/v1/sites/aptemplates.py +++ b/src/mistapi/api/v1/sites/aptemplates.py @@ -32,6 +32,7 @@ def listSiteApTemplatesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/assetfilters.py b/src/mistapi/api/v1/sites/assetfilters.py index 99d96df..de9d412 100644 --- a/src/mistapi/api/v1/sites/assetfilters.py +++ b/src/mistapi/api/v1/sites/assetfilters.py @@ -35,7 +35,9 @@ def listSiteAssetFilters( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/assets.py b/src/mistapi/api/v1/sites/assets.py index cc8e538..4815441 100644 --- a/src/mistapi/api/v1/sites/assets.py +++ b/src/mistapi/api/v1/sites/assets.py @@ -35,7 +35,9 @@ def listSiteAssets( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -102,7 +104,7 @@ def importSiteAssetsFile( BODY PARAMS ----------- file : str - path to the file to upload. CSV file + path to the file to upload. CSV file containing asset records to import RETURN ----------- @@ -288,8 +290,9 @@ def attachSiteAssetImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image file content uploaded as multipart form data json : str + Optional JSON metadata submitted with the image upload RETURN ----------- diff --git a/src/mistapi/api/v1/sites/avprofiles.py b/src/mistapi/api/v1/sites/avprofiles.py index 036a65f..9e3ff6b 100644 --- a/src/mistapi/api/v1/sites/avprofiles.py +++ b/src/mistapi/api/v1/sites/avprofiles.py @@ -35,7 +35,9 @@ def listSiteAntivirusProfilesDerived( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/beacons.py b/src/mistapi/api/v1/sites/beacons.py index d069e97..9711033 100644 --- a/src/mistapi/api/v1/sites/beacons.py +++ b/src/mistapi/api/v1/sites/beacons.py @@ -35,7 +35,9 @@ def listSiteBeacons( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/clients.py b/src/mistapi/api/v1/sites/clients.py index 194993c..7f07a0f 100644 --- a/src/mistapi/api/v1/sites/clients.py +++ b/src/mistapi/api/v1/sites/clients.py @@ -46,18 +46,31 @@ def countSiteWirelessClients( QUERY PARAMS ------------ distinct : str{'ap', 'device', 'hostname', 'ip', 'model', 'os', 'ssid', 'vlan'}, default: device + Field used to group this count response. enum: `ap`, `device`, `hostname`, `ip`, `model`, `os`, `ssid`, `vlan` ssid : str + Filter results by SSID ap : str + Filter results by AP MAC address ip : str + Filter results by IPv4 address vlan : str + Filter client results by VLAN ID hostname : str + Filter results by hostname os : str + Filter client results by operating system model : str + Filter results by device model device : str + Filter client results by device type start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -159,19 +172,29 @@ def countSiteWirelessClientEvents( QUERY PARAMS ------------ distinct : str{'band', 'channel', 'proto', 'ssid', 'type', 'wlan_id'} + Field used to group this count response. enum: `band`, `channel`, `proto`, `ssid`, `type`, `wlan_id` type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) reason_code : int + Reason code filter for association and disassociation events ssid : str + Filter results by SSID ap : str + Filter results by AP MAC address proto : str{'a', 'ac', 'ax', 'b', 'be', 'g', 'n'} - a / b / g / n / ac / ax + 802.11 protocol used to filter results. enum: `a`, `ac`, `ax`, `b`, `be`, `g`, `n` band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` wlan_id : str + Filter results by WLAN identifier start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -242,21 +265,33 @@ def searchSiteWirelessClientEvents( QUERY PARAMS ------------ type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) reason_code : int + Reason code filter for association and disassociation events ssid : str + Filter results by SSID ap : str + Filter results by AP MAC address proto : str{'a', 'ac', 'ax', 'b', 'be', 'g', 'n'} - a / b / g / n / ac / ax + 802.11 protocol used to filter results. enum: `a`, `ac`, `ax`, `b`, `be`, `g`, `n` band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` wlan_id : str + Filter results by WLAN identifier nacrule_id : str + Filter results by NAC rule identifier limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -337,25 +372,45 @@ def searchSiteWirelessClients( QUERY PARAMS ------------ ap : str + Filter results by AP MAC address band : str + Comma separated list of Radio band (e.g. `24,5`). enum: `24`, `5`, `6` device : str + Comma separated list of Device type (e.g. `Mac,iPhone`). Case sensitive hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported ip : str + Partial / full Client IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported model : str + Only available for clients running the Marvis Client app, model, e.g. "MBP 15 late 2013", 6, 6s, "8+ GSM" os : str + Only available for clients running the Marvis Client app, os, e.g. Sierra, Yosemite, Windows 10 psk_id : str + PSK identifier used to filter the results psk_name : str + Only available for clients using PPSK authentication, the Name of the PSK ssid : str + Filter results by SSID text : str + Partial / full MAC address, hostname, username, psk_name or ip. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*client`) are not supported username : str + Partial / full username. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `johndoe*` and `*mycorp*` match `johndoe@mycorp.com`). Suffix-only wildcards (e.g. `*mycorp.com`) are not supported vlan : str + Filter results by VLAN ID limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -441,19 +496,31 @@ def countSiteWirelessClientSessions( QUERY PARAMS ------------ distinct : str{'ap', 'client_family', 'client_manufacture', 'client_model', 'client_os', 'mac', 'ssid', 'wlan_id'}, default: mac + Field used to group this count response. enum: `ap`, `client_family`, `client_manufacture`, `client_model`, `client_os`, `mac`, `ssid`, `wlan_id` ap : str + Filter results by AP MAC address band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` client_family : str + E.g. "Mac", "iPhone", "Apple watch" client_manufacture : str + Filter results by client manufacturer, e.g. "Apple" client_model : str + Filter results by client model, e.g. "8+", "XS" client_os : str + E.g. "Mojave", "Windows 10", "Linux" ssid : str + Filter results by SSID wlan_id : str + Filter results by WLAN identifier start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -529,23 +596,39 @@ def searchSiteWirelessClientSessions( QUERY PARAMS ------------ ap : str + Filter results by AP MAC address band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` client_family : str + E.g. "Mac", "iPhone", "Apple watch" client_manufacture : str + Filter results by client manufacturer, e.g. "Apple" client_model : str + Filter results by client model, e.g. "8+", "XS" client_username : str + Filter results by client username client_os : str + E.g. "Mojave", "Windows 10", "Linux" ssid : str + Filter results by SSID wlan_id : str + Filter results by WLAN identifier psk_id : str + PSK identifier used to filter the results psk_name : str + Filter results by PSK name limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -710,18 +793,27 @@ def getSiteEventsForClient( QUERY PARAMS ------------ type : str + Filter results by type, e.g. MARVIS_EVENT_CLIENT_DHCP_STUCK proto : str{'a', 'ac', 'ax', 'b', 'be', 'g', 'n'} - a / b / g / n / ac / ax + 802.11 protocol used to filter results. enum: `a`, `ac`, `ax`, `b`, `be`, `g`, `n` band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` channel : str + Filter available versions by release channel wlan_id : str + Filter results by WLAN identifier ssid : str + Filter results by SSID start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/count.py b/src/mistapi/api/v1/sites/count.py index 55122b6..1dd874c 100644 --- a/src/mistapi/api/v1/sites/count.py +++ b/src/mistapi/api/v1/sites/count.py @@ -44,16 +44,23 @@ def countSiteZoneSessions( QUERY PARAMS ------------ distinct : str{'scope', 'scope_id', 'user', 'user_type'}, default: scope_id + Field used to group this count response. enum: `scope`, `scope_id`, `user`, `user_type` user_type : str{'asset', 'client', 'sdkclient'} - User type + Filter results by user type. enum: `asset`, `client`, `sdkclient` user : str + Client MAC / Asset MAC / SDK UUID scope_id : str + If `scope`==`map`/`zone`/`rssizone`, the scope id scope : str{'map', 'rssizone', 'site', 'zone'}, default: site - Scope + Filter results by scope. enum: `map`, `rssizone`, `site`, `zone` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- diff --git a/src/mistapi/api/v1/sites/deviceprofiles.py b/src/mistapi/api/v1/sites/deviceprofiles.py index 0dfefc0..541de26 100644 --- a/src/mistapi/api/v1/sites/deviceprofiles.py +++ b/src/mistapi/api/v1/sites/deviceprofiles.py @@ -32,6 +32,7 @@ def listSiteDeviceProfilesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/devices.py b/src/mistapi/api/v1/sites/devices.py index 5fa1af2..c41f3df 100644 --- a/src/mistapi/api/v1/sites/devices.py +++ b/src/mistapi/api/v1/sites/devices.py @@ -37,9 +37,13 @@ def listSiteDevices( QUERY PARAMS ------------ type : str, default: ap + Filter results by type name : str + Filter results by name limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -79,6 +83,7 @@ def listSiteDeviceRadioChannels( QUERY PARAMS ------------ country_code : str + Country code for the site (for AP config generation), in [two-character](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) RETURN ----------- @@ -150,11 +155,17 @@ def countSiteDeviceConfigHistory( QUERY PARAMS ------------ distinct : str + Field used to group this count response mac : str + Filter results by MAC address start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -207,13 +218,21 @@ def searchSiteDeviceConfigHistory( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` mac : str + Filter results by MAC address limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -278,21 +297,37 @@ def countSiteDevices( QUERY PARAMS ------------ distinct : str{'hostname', 'lldp_mgmt_addr', 'lldp_port_id', 'lldp_system_desc', 'lldp_system_name', 'map_id', 'model', 'mxedge_id', 'mxtunnel_status', 'version'}, default: model + Field used to group this count response. enum: `hostname`, `lldp_mgmt_addr`, `lldp_port_id`, `lldp_system_desc`, `lldp_system_name`, `map_id`, `model`, `mxedge_id`, `mxtunnel_status`, `version` hostname : str + Filter results by hostname model : str + Filter results by device model mac : str + Filter results by MAC address version : str + Filter results by software version mxtunnel_status : str + Filter AP results by Mist Tunnel status mxedge_id : str + Filter results by Mist Edge identifier lldp_system_name : str + Filter AP results by LLDP system name lldp_system_desc : str + Filter AP results by LLDP system description lldp_port_id : str + Filter AP results by LLDP port identifier lldp_mgmt_addr : str + Filter AP results by LLDP management IP address map_id : str + Filter results by map identifier start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -365,13 +400,21 @@ def countSiteDeviceEvents( QUERY PARAMS ------------ distinct : str{'mac', 'model', 'type', 'type_code'}, default: model + Field used to group this count response. enum: `mac`, `model`, `type`, `type_code` model : str + Filter results by device model type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) type_code : str + Filter results by event type code start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -407,7 +450,6 @@ def searchSiteDeviceEvents( mac: str | None = None, model: str | None = None, text: str | None = None, - timestamp: str | None = None, type: str | None = None, last_by: str | None = None, includes: str | None = None, @@ -433,18 +475,29 @@ def searchSiteDeviceEvents( QUERY PARAMS ------------ mac : str + Filter results by MAC address model : str + Filter results by device model text : str - timestamp : str + Filter results by event message text type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) last_by : str + Return last/recent event for passed in field includes : str + Keyword to include events from additional indices (e.g. ext_tunnel for prisma events) limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -460,8 +513,6 @@ def searchSiteDeviceEvents( query_params["model"] = str(model) if text: query_params["text"] = str(text) - if timestamp: - query_params["timestamp"] = str(timestamp) if type: query_params["type"] = str(type) if last_by: @@ -558,7 +609,7 @@ def importSiteDevicesFile( BODY PARAMS ----------- file : str - path to the file to upload. File to upload + path to the file to upload. Binary file payload to upload with this request RETURN ----------- @@ -629,10 +680,15 @@ def countSiteDeviceLastConfig( QUERY PARAMS ------------ distinct : str{'mac', 'name', 'site_id', 'version'}, default: mac + Field used to group this count response. enum: `mac`, `name`, `site_id`, `version` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -686,16 +742,27 @@ def searchSiteDeviceLastConfigs( QUERY PARAMS ------------ cert_expiry_duration : str + Duration for expiring cert queries (format: 2d/3h/172800 seconds) device_type : str{'ap', 'gateway', 'switch', 'mxedge'}, default: ap + Filter results by device type. enum: `ap`, `gateway`, `switch`, `mxedge` mac : str + Filter results by MAC address version : str + Filter results by software version name : str + Filter results by name limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -895,71 +962,114 @@ def searchSiteDevices( search_after: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/devices/search-site-devices - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - - QUERY PARAMS - ------------ - band_24_channel : int - band_5_channel : int - band_6_channel : int - band_24_bandwidth : int - band_5_bandwidth : int - band_6_bandwidth : int - band_24_power : int - band_5_power : int - band_6_power : int - clustered : bool - eth0_port_speed : int - evpntopo_id : str - ext_ip : str - hostname : str - ip : str - last_config_status : str - last_hostname : str - lldp_mgmt_addr : str - lldp_port_id : str - lldp_system_desc : str - lldp_system_name : str - mac : str - model : str - mxedge_id : str - mxedge_ids : str - mxtunnel_status : str{'down', 'up'} - When `type`==`ap`, MxTunnel status, up / down. - node : str{'node0', 'node1'} - When `type`==`gateway`. enum: `node0`, `node1` - node0_mac : str - node1_mac : str - power_constrained : bool - radius_stats : str - stats : bool - t128agent_version : str - type : str{'ap', 'gateway', 'switch'}, default: ap - Type of device. enum: `ap`, `gateway`, `switch` - version : str - limit : int, default: 100 - start : str - end : str - duration : str, default: 1d - sort : str{'mac', 'model', 'sku', 'timestamp'}, default: timestamp - Sort options - desc_sort : str{'mac', 'model', 'sku', 'timestamp'} - Sort options in reverse order - search_after : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/devices/search-site-devices + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + + QUERY PARAMS + ------------ + band_24_channel : int + When `type`==`ap`, Channel of band_24 + band_5_channel : int + When `type`==`ap`, Channel of band_5 + band_6_channel : int + When `type`==`ap`, Channel of band_6 + band_24_bandwidth : int + When `type`==`ap`, Bandwidth of band_24 + band_5_bandwidth : int + When `type`==`ap`, Bandwidth of band_5 + band_6_bandwidth : int + When `type`==`ap`, Bandwidth of band_6 + band_24_power : int + When `type`==`ap`, Power of band_24 + band_5_power : int + When `type`==`ap`, Power of band_5 + band_6_power : int + When `type`==`ap`, Power of band_6 + clustered : bool + When `type`==`gateway`, true / false + eth0_port_speed : int + When `type`==`ap`, Port speed of eth0 + evpntopo_id : str + When `type`==`switch`, EVPN topology id + ext_ip : str + Partial / full Device external ip. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `1.2.3.*` and `*.2.3.*` match `1.2.3.4`). Suffix-only wildcards (e.g. `*.2.3.4`) are not supported + hostname : str + Partial / full Device hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-london*` and `*london*` match `my-london-1`). Suffix-only wildcards (e.g. `*london-1`) are not supported + ip : str + Partial / full Device IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported + last_config_status : str + When `type`==`switch` or `type`==`gateway`, last configuration status + last_hostname : str + Last hostname of the device. + lldp_mgmt_addr : str + When `type`==`ap`, LLDP management IP address + lldp_port_id : str + When `type`==`ap`, LLDP port id. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `ge-0/0/*` and `*-0/0/*` match `ge-0/0/30`). Suffix-only wildcards (e.g. `*switch-01`) are not supported + lldp_system_desc : str + When `type`==`ap`, LLDP system description. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Juniper Networks*` and `*Networks*` match `Juniper Networks, Inc.`). Suffix-only wildcards (e.g. `*switch-01`) are not supported + lldp_system_name : str + When `type`==`ap`, LLDP system name. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-switch*` and `*switch*` match `my-switch-01`). Suffix-only wildcards (e.g. `*switch-01`) are not supported + mac : str + Partial / full Device MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `001122*` and `*1122*` match `001122334455`). Suffix-only wildcards (e.g. `*4455`) are not supported + model : str + Partial / full Device model. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `AP4*` and `*P4*` match `AP43`). Suffix-only wildcards (e.g. `*43`) are not supported + mxedge_id : str + When `type`==`ap`, Mist Edge id, if AP is connecting to a Mist Edge + mxedge_ids : str + When `type`==`ap`, Comma separated list of Mist Edge id, if AP is connecting to a Mist Edge + mxtunnel_status : str{'down', 'up'} + When `type`==`ap`, Mist Tunnel status used to filter results. enum: `down`, `up` + node : str{'node0', 'node1'} + When `type`==`gateway`. enum: `node0`, `node1` + node0_mac : str + When `type`==`gateway`, node0 MAC address + node1_mac : str + When `type`==`gateway`, node1 MAC address + power_constrained : bool + When `type`==`ap`, whether the AP is power constrained + radius_stats : str + When `type`==`switch` or `type`==`gateway`, Key-value pairs where the key + is the RADIUS server address and the value contains authentication statistics: + * (string): IP address of the RADIUS server as the key + * `auth_accepts` (long): Number of accepted authentication requests + * `auth_rejects` (long): Number of rejected authentication requests + * `auth_timeouts` (long): Number of authentication timeouts + * `auth_server_status` (string): Status of the server. Possible values: `up`, `down`, `unreachable` + stats : bool + Whether to return device stats + t128agent_version : str + When `type`==`gateway` (SSR only), version of 128T agent + type : str{'ap', 'gateway', 'switch'}, default: ap + Device type used to filter results. enum: `ap`, `gateway`, `switch` + version : str + Filter results by software version + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + sort : str{'mac', 'model', 'sku', 'timestamp'}, default: timestamp + Field used to sort results; a leading `-` indicates descending order. enum: `mac`, `model`, `sku`, `timestamp` + desc_sort : str{'mac', 'model', 'sku', 'timestamp'} + Field used to sort results in descending order. enum: `mac`, `model`, `sku`, `timestamp` + search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/devices/search" @@ -1101,6 +1211,7 @@ def listSiteDeviceUpgrades( QUERY PARAMS ------------ status : str{'cancelled', 'completed', 'created', 'downloaded', 'downloading', 'failed', 'queued', 'upgrading'} + Filter results by status. enum: `cancelled`, `completed`, `created`, `downloaded`, `downloading`, `failed`, `queued`, `upgrading` RETURN ----------- @@ -1285,7 +1396,9 @@ def listSiteAvailableDeviceVersions( QUERY PARAMS ------------ type : str{'ap', 'gateway', 'switch'}, default: ap + Filter results by type. enum: `ap`, `gateway`, `switch` model : str + Fetch version for device model, use/combine with `type` as needed (for switch and gateway devices) RETURN ----------- @@ -1824,6 +1937,7 @@ def getSiteDeviceConfigCmd( QUERY PARAMS ------------ sort : bool + Make output cmds sorted (for better readability) or not. RETURN ----------- @@ -1981,8 +2095,9 @@ def addSiteDeviceImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image file content uploaded as multipart form data json : str + Optional JSON metadata submitted with the image upload RETURN ----------- diff --git a/src/mistapi/api/v1/sites/events.py b/src/mistapi/api/v1/sites/events.py index 6f23a26..e42d12f 100644 --- a/src/mistapi/api/v1/sites/events.py +++ b/src/mistapi/api/v1/sites/events.py @@ -38,11 +38,15 @@ def listSiteRoamingEvents( QUERY PARAMS ------------ type : str{'fail', 'none', 'success'} - Event type + Event type used to filter results. enum: `fail`, `none`, `success` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -91,11 +95,17 @@ def countSiteSystemEvents( QUERY PARAMS ------------ distinct : str{'type'}, default: type + Field used to group this count response. enum: `type` type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -147,12 +157,19 @@ def searchSiteSystemEvents( QUERY PARAMS ------------ type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/evpn_topologies.py b/src/mistapi/api/v1/sites/evpn_topologies.py index 6ca329b..2df2255 100644 --- a/src/mistapi/api/v1/sites/evpn_topologies.py +++ b/src/mistapi/api/v1/sites/evpn_topologies.py @@ -35,7 +35,9 @@ def listSiteEvpnTopologies( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/gatewaytemplates.py b/src/mistapi/api/v1/sites/gatewaytemplates.py index bdee8c4..5e555e3 100644 --- a/src/mistapi/api/v1/sites/gatewaytemplates.py +++ b/src/mistapi/api/v1/sites/gatewaytemplates.py @@ -32,6 +32,7 @@ def listSiteGatewayTemplatesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/guests.py b/src/mistapi/api/v1/sites/guests.py index cca45d8..708f633 100644 --- a/src/mistapi/api/v1/sites/guests.py +++ b/src/mistapi/api/v1/sites/guests.py @@ -32,6 +32,7 @@ def listSiteAllGuestAuthorizations( QUERY PARAMS ------------ wlan_id : str + UUID of single or multiple (Comma separated) WLAN under Site `site_id` (to filter by WLAN) RETURN ----------- @@ -71,10 +72,15 @@ def countSiteGuestAuthorizations( QUERY PARAMS ------------ distinct : str{'auth_method', 'company', 'ssid'}, default: auth_method + Field used to group this count response. enum: `auth_method`, `company`, `ssid` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -119,7 +125,9 @@ def listSiteAllGuestAuthorizationsDerived( QUERY PARAMS ------------ wlan_id : str + UUID of single or multiple (Comma separated) WLAN under Site `site_id` (to filter by WLAN) cross_site : bool + Whether to get org level guests, default is false i.e get site level guests RETURN ----------- @@ -165,14 +173,23 @@ def searchSiteGuestAuthorization( QUERY PARAMS ------------ wlan_id : str + Filter results by WLAN identifier auth_method : str + Filter guest results by authentication method ssid : str + Filter results by SSID limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/idpprofiles.py b/src/mistapi/api/v1/sites/idpprofiles.py index 44122e6..5b16d08 100644 --- a/src/mistapi/api/v1/sites/idpprofiles.py +++ b/src/mistapi/api/v1/sites/idpprofiles.py @@ -35,7 +35,9 @@ def listSiteIdpProfilesDerived( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/insights.py b/src/mistapi/api/v1/sites/insights.py index fcc825f..f9125b5 100644 --- a/src/mistapi/api/v1/sites/insights.py +++ b/src/mistapi/api/v1/sites/insights.py @@ -40,12 +40,19 @@ def getSiteInsightMetrics( QUERY PARAMS ------------ metrics : str + Comma separated Metric names, e.g. `num_clients,num_aps`. See possible values at [List Insight Metrics](/#operations/listInsightMetrics) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -101,12 +108,19 @@ def getSiteInsightMetricsForAP( QUERY PARAMS ------------ metrics : str + Comma separated Metric names, e.g. `num_clients,num_stressed_clients`. See possible values at [List Insight Metrics](/#operations/listInsightMetrics) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -162,12 +176,19 @@ def getSiteInsightMetricsForClient( QUERY PARAMS ------------ metrics : str + Comma separated Metric names, e.g. `top-app-by-num_client,top-app-by-bytes`. See possible values at [List Insight Metrics](/#operations/listInsightMetrics) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -220,17 +241,25 @@ def getSiteInsightMetricsForDevice( ----------- site_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics device_mac : str QUERY PARAMS ------------ port_id : str + Port ID of the device, e.g. `ge-0/0/1`. Can be used with metrics related to interfaces, e.g. `rx_bytes`. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -282,10 +311,15 @@ def countSiteClientFingerprints( QUERY PARAMS ------------ distinct : str{'family', 'model', 'os', 'os_type'}, default: family + Field used to group this count response. enum: `family`, `model`, `os`, `os_type` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -342,20 +376,33 @@ def searchSiteClientFingerprints( QUERY PARAMS ------------ family : str + Device Category of the client device client_type : str{'wireless', 'wired', 'vty'} - Whether client is wired or wireless + Filter results by client type. enum: `wireless`, `wired`, `vty` model : str + Filter results by device model mfg : str + Manufacturer name of the client device os : str + Operating System name and version of the client device os_type : str + Operating system name of the client device mac : str + Filter results by MAC address limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. sort : str, default: wxid + On which field the list should be sorted, -prefix represents DESC order. search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -426,13 +473,21 @@ def getSiteInsightMetricsForGateway( QUERY PARAMS ------------ metrics : str + Comma separated Metric names, e.g. `tx_bps,rx_bps`. See possible values at [List Insight Metrics](/#operations/listInsightMetrics) port_id : str + Port ID of the gateway device, e.g. `ge-0/0/1` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -487,17 +542,25 @@ def getSiteInsightMetricsForMxEdge( ----------- site_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics device_mac : str QUERY PARAMS ------------ port_id : str + Port ID of the MxEdge device, e.g. `port0`. Can be used with metrics related to interfaces, e.g. `rx_bytes`. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -550,11 +613,17 @@ def listSiteRogueAPs( QUERY PARAMS ------------ type : str{'honeypot', 'lan', 'others', 'spoof'} + Rogue classification used to filter the results. enum: `honeypot`, `lan`, `others`, `spoof` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. RETURN ----------- @@ -604,10 +673,15 @@ def listSiteRogueClients( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. RETURN ----------- @@ -656,17 +730,25 @@ def getSiteInsightMetricsForSwitch( ----------- site_id : str metric : str + See [List Insight Metrics](/#operations/listInsightMetrics) for available metrics device_mac : str QUERY PARAMS ------------ port_id : str + Port ID of the switch device, e.g. `ge-0/0/1`. Can be used with metrics related to interfaces, e.g. `rx_bytes`. start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` interval : str + Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/iotendpoints.py b/src/mistapi/api/v1/sites/iotendpoints.py index 248ae75..6b2bfa0 100644 --- a/src/mistapi/api/v1/sites/iotendpoints.py +++ b/src/mistapi/api/v1/sites/iotendpoints.py @@ -41,13 +41,21 @@ def searchSiteIotEndpoints( QUERY PARAMS ------------ ap_mac : str + Filter results by AP MAC address mac : str + Filter results by MAC address type : str + IoT endpoint type. enum: `zigbee` mfg : str + Filter results by manufacturer limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/location.py b/src/mistapi/api/v1/sites/location.py index e3e89fd..b8215dd 100644 --- a/src/mistapi/api/v1/sites/location.py +++ b/src/mistapi/api/v1/sites/location.py @@ -40,12 +40,19 @@ def getSiteBeamCoverageOverview( QUERY PARAMS ------------ map_id : str + Filter results by map identifier type : str{'asset', 'client', 'sdkclient'} + Filter results by type. enum: `asset`, `client`, `sdkclient` client_type : str + Filter results by client type duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` resolution : str{'default', 'fine'}, default: default + Location calculation resolution used by the query. enum: `default`, `fine` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -91,6 +98,7 @@ def getSiteMachineLearningCurrentStat( QUERY PARAMS ------------ map_id : str + Filter results by map identifier RETURN ----------- diff --git a/src/mistapi/api/v1/sites/maps.py b/src/mistapi/api/v1/sites/maps.py index 8f7cc5f..a89eeb3 100644 --- a/src/mistapi/api/v1/sites/maps.py +++ b/src/mistapi/api/v1/sites/maps.py @@ -17,6 +17,7 @@ def listSiteMaps( mist_session: _APISession, site_id: str, + mapstack_id: str | None = None, limit: int | None = None, page: int | None = None, ) -> _APIResponse: @@ -34,8 +35,12 @@ def listSiteMaps( QUERY PARAMS ------------ + mapstack_id : str + Filter maps by mapstack UUID; returns only maps belonging to that mapstack limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -45,6 +50,8 @@ def listSiteMaps( uri = f"/api/v1/sites/{site_id}/maps" query_params: dict[str, str] = {} + if mapstack_id: + query_params["mapstack_id"] = str(mapstack_id) if limit: query_params["limit"] = str(limit) if page: @@ -133,10 +140,11 @@ def importSiteMapsFile( auto_deviceprofile_assignment : bool Whether to auto assign device to deviceprofile by name csv : str - path to the file to upload. CSV file for ap name mapping, optional + path to the file to upload. Optional AP name-mapping CSV file file : str - path to the file to upload. Ekahau or ibwave file + path to the file to upload. Ekahau or iBwave floorplan file to import json : dict + Import options for the site map file RETURN ----------- @@ -239,6 +247,38 @@ def updateSiteMap( return resp +def acceptSiteApLocalizationData( + mist_session: _APISession, site_id: str, map_id: str, body: dict | list +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/maps/auto-placement/accept-site-ap-localization-data + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + map_id : str + + BODY PARAMS + ----------- + body : dict + JSON object to send to Mist Cloud (see API doc above for more details) + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/sites/{site_id}/maps/{map_id}/apply_autoplacement" + resp = mist_session.mist_post(uri=uri, body=body) + return resp + + def startSiteMapAutoGeofence( mist_session: _APISession, map_id: str, site_id: str ) -> _APIResponse: @@ -640,8 +680,9 @@ def addSiteMapImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image file content uploaded as multipart form data json : str + Optional JSON metadata submitted with the image upload RETURN ----------- @@ -681,8 +722,9 @@ def replaceSiteMapImageFile( BODY PARAMS ----------- file : str - path to the file to upload. + path to the file to upload. Map image file used to replace the existing site map json : dict + Replacement transform options for the map image RETURN ----------- @@ -731,38 +773,6 @@ def bulkAssignSiteApsToMap( return resp -def confirmSiteApLocalizationData( - mist_session: _APISession, site_id: str, map_id: str, body: dict | list -) -> _APIResponse: - """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/maps/auto-placement/confirm-site-ap-localization-data - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - map_id : str - - BODY PARAMS - ----------- - body : dict - JSON object to send to Mist Cloud (see API doc above for more details) - - RETURN - ----------- - mistapi.APIResponse - response from the API call - """ - - uri = f"/api/v1/sites/{site_id}/maps/{map_id}/use_auto_ap_values" - resp = mist_session.mist_post(uri=uri, body=body) - return resp - - def importSiteWayfindings( mist_session: _APISession, site_id: str, map_id: str, body: dict | list ) -> _APIResponse: diff --git a/src/mistapi/api/v1/sites/mapstacks.py b/src/mistapi/api/v1/sites/mapstacks.py index 33805d4..ec3846f 100644 --- a/src/mistapi/api/v1/sites/mapstacks.py +++ b/src/mistapi/api/v1/sites/mapstacks.py @@ -36,8 +36,11 @@ def listSiteMapStacks( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` name : str + Filter by map stack name RETURN ----------- diff --git a/src/mistapi/api/v1/sites/marvis_configs.py b/src/mistapi/api/v1/sites/marvis_configs.py new file mode 100644 index 0000000..c40dabe --- /dev/null +++ b/src/mistapi/api/v1/sites/marvis_configs.py @@ -0,0 +1,263 @@ +""" +-------------------------------------------------------------------------------- +------------------------- Mist API Python CLI Session -------------------------- + + Written by: Thomas Munzer (tmunzer@juniper.net) + Github : https://github.com/tmunzer/mistapi_python + + This package is licensed under the MIT License. + +-------------------------------------------------------------------------------- +""" + +from mistapi import APISession as _APISession +from mistapi.__api_response import APIResponse as _APIResponse + + +def countSiteMarvisConfigActions( + mist_session: _APISession, + site_id: str, + distinct: str | None = None, + mac: str | None = None, + type: str | None = None, + src: str | None = None, + admin_id: str | None = None, + op: str | None = None, + port_id: str | None = None, + vlan_ids: int | None = None, + reason: str | None = None, + limit: int | None = None, + start: str | None = None, + end: str | None = None, + duration: str | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/marvis-configs/count-site-marvis-config-actions + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + + QUERY PARAMS + ------------ + distinct : str, default: mac + Field to count by. enum: `mac`, `type`, `src`, `admin_id`, `op`, `port_id`, `reason`, `vlan_ids` + mac : str + Filter by device MAC address + type : str + Filter by config type (e.g. wired) + src : str + Filter by source of the config action (e.g. marvis) + admin_id : str + Filter by admin ID + op : str + Filter by operation type (e.g. disable_port, enable_port, update_mtu, add_vlans_to_port) + port_id : str + Filter by port identifier (e.g. ge-0/0/13) + vlan_ids : int + Filter by VLAN ID + reason : str + Filter by reason for the config action (e.g. rogue_dhcp_server_detected) + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/sites/{site_id}/marvis_configs/count" + query_params: dict[str, str] = {} + if distinct: + query_params["distinct"] = str(distinct) + if mac: + query_params["mac"] = str(mac) + if type: + query_params["type"] = str(type) + if src: + query_params["src"] = str(src) + if admin_id: + query_params["admin_id"] = str(admin_id) + if op: + query_params["op"] = str(op) + if port_id: + query_params["port_id"] = str(port_id) + if vlan_ids: + query_params["vlan_ids"] = str(vlan_ids) + if reason: + query_params["reason"] = str(reason) + if limit: + query_params["limit"] = str(limit) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if duration: + query_params["duration"] = str(duration) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + +def searchSiteMarvisConfigActions( + mist_session: _APISession, + site_id: str, + mac: str | None = None, + type: str | None = None, + src: str | None = None, + admin_id: str | None = None, + op: str | None = None, + port_id: str | None = None, + vlan_ids: int | None = None, + reason: str | None = None, + limit: int | None = None, + start: str | None = None, + end: str | None = None, + duration: str | None = None, +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/marvis-configs/search-site-marvis-config-actions + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + + QUERY PARAMS + ------------ + mac : str + Filter by device MAC address + type : str + Filter by config type (e.g. wired) + src : str + Filter by source of the config action (e.g. marvis) + admin_id : str + Filter by admin ID + op : str + Filter by operation type (e.g. disable_port, enable_port, update_mtu, add_vlans_to_port) + port_id : str + Filter by port identifier (e.g. ge-0/0/13) + vlan_ids : int + Filter by VLAN ID + reason : str + Filter by reason for the config action (e.g. rogue_dhcp_server_detected) + limit : int, default: 100 + Maximum number of results to return per page + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/sites/{site_id}/marvis_configs/search" + query_params: dict[str, str] = {} + if mac: + query_params["mac"] = str(mac) + if type: + query_params["type"] = str(type) + if src: + query_params["src"] = str(src) + if admin_id: + query_params["admin_id"] = str(admin_id) + if op: + query_params["op"] = str(op) + if port_id: + query_params["port_id"] = str(port_id) + if vlan_ids: + query_params["vlan_ids"] = str(vlan_ids) + if reason: + query_params["reason"] = str(reason) + if limit: + query_params["limit"] = str(limit) + if start: + query_params["start"] = str(start) + if end: + query_params["end"] = str(end) + if duration: + query_params["duration"] = str(duration) + resp = mist_session.mist_get(uri=uri, query=query_params) + return resp + + +def deleteSiteMarvisConfigAction( + mist_session: _APISession, site_id: str, id: str +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/marvis-configs/delete-site-marvis-config-action + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + id : str + UUID of the Marvis Config Action + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/sites/{site_id}/marvis_configs/{id}" + query_params: dict[str, str] = {} + resp = mist_session.mist_delete(uri=uri, query=query_params) + return resp + + +def submitSiteMarvisConfigFeedback( + mist_session: _APISession, site_id: str, id: str, body: dict | list +) -> _APIResponse: + """ + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/marvis-configs/submit-site-marvis-config-feedback + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + id : str + UUID of the Marvis Config Action + + BODY PARAMS + ----------- + body : dict + JSON object to send to Mist Cloud (see API doc above for more details) + + RETURN + ----------- + mistapi.APIResponse + response from the API call + """ + + uri = f"/api/v1/sites/{site_id}/marvis_configs/{id}/feedback" + resp = mist_session.mist_post(uri=uri, body=body) + return resp diff --git a/src/mistapi/api/v1/sites/mxedges.py b/src/mistapi/api/v1/sites/mxedges.py index 351c5dd..3c63620 100644 --- a/src/mistapi/api/v1/sites/mxedges.py +++ b/src/mistapi/api/v1/sites/mxedges.py @@ -35,7 +35,9 @@ def listSiteMxEdges( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -81,14 +83,23 @@ def countSiteMxEdgeEvents( QUERY PARAMS ------------ distinct : str{'mxcluster_id', 'mxedge_id', 'package', 'type'}, default: mxedge_id + Field used to group this count response. enum: `mxcluster_id`, `mxedge_id`, `package`, `type` mxedge_id : str + Filter results by Mist Edge identifier mxcluster_id : str + Mist edge cluster id type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) service : str + Filter results by service name start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -150,16 +161,27 @@ def searchSiteMistEdgeEvents( QUERY PARAMS ------------ mxedge_id : str + Filter results by Mist Edge identifier mxcluster_id : str + Mist edge cluster id type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) service : str + Filter results by service name component : str + Filter results by component name limit : int, default: 10 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/nac_clients.py b/src/mistapi/api/v1/sites/nac_clients.py index 1facb91..94c046f 100644 --- a/src/mistapi/api/v1/sites/nac_clients.py +++ b/src/mistapi/api/v1/sites/nac_clients.py @@ -26,7 +26,6 @@ def countSiteNacClients( idp_id: str | None = None, last_ssid: str | None = None, last_username: str | None = None, - timestamp: float | None = None, last_ap: str | None = None, mac: str | None = None, last_status: str | None = None, @@ -53,26 +52,43 @@ def countSiteNacClients( QUERY PARAMS ------------ distinct : str{'ap', 'auth_type', 'device_mac', 'edr_managed', 'edr_provider', 'edr_status', 'family', 'hostname', 'idp_id', 'mfg', 'mdm_compliance', 'mdm_managed', 'mdm_provider', 'model', 'mxedge_id', 'nacrule_matched', 'nacrule_name', 'nacrule_id', 'nas_ip', 'nas_vendor', 'os', 'ssid', 'status', 'type', 'usermac_label', 'username', 'vlan'}, default: type - NAC Policy Rule ID, if matched + Field used to group this count response. enum: `ap`, `auth_type`, `device_mac`, `edr_managed`, `edr_provider`, `edr_status`, `family`, `hostname`, `idp_id`, `mfg`, `mdm_compliance`, `mdm_managed`, `mdm_provider`, `model`, `mxedge_id`, `nacrule_matched`, `nacrule_name`, `nacrule_id`, `nas_ip`, `nas_vendor`, `os`, `ssid`, `status`, `type`, `usermac_label`, `username`, `vlan` last_nacrule_id : str + NAC Policy Rule ID, if matched nacrule_matched : bool + NAC Policy Rule Matched auth_type : str + Authentication type, e.g. "eap-tls", "eap-peap", "eap-ttls", "eap-teap", "mab", "psk", "device-auth" last_vlan_id : str + Filter results by last VLAN ID last_nas_vendor : str + Vendor of NAS device idp_id : str + SSO ID, if present and used last_ssid : str + Filter results by last SSID last_username : str - timestamp : float + Username presented by the client last_ap : str + AP MAC connected to by client mac : str + Filter results by MAC address last_status : str + Connection status of client i.e "permitted", "denied, "session_ended" type : str + Client type i.e. "wireless", "wired" etc. mdm_compliance_status : str + MDM compliance of client i.e "compliant", "not compliant" mdm_provider : str + MDM provider of client’s organisation eg "intune", "jamf" start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -100,8 +116,6 @@ def countSiteNacClients( query_params["last_ssid"] = str(last_ssid) if last_username: query_params["last_username"] = str(last_username) - if timestamp: - query_params["timestamp"] = str(timestamp) if last_ap: query_params["last_ap"] = str(last_ap) if mac: @@ -151,11 +165,17 @@ def countSiteNacClientEvents( QUERY PARAMS ------------ distinct : str{'ap', 'auth_type', 'dryrun_nacrule_id', 'mac', 'nacrule_id', 'nas_vendor', 'ssid', 'type', 'username', 'vlan'} + Field used to group this count response. enum: `ap`, `auth_type`, `dryrun_nacrule_id`, `mac`, `nacrule_id`, `nas_vendor`, `ssid`, `type`, `username`, `vlan` type : str + See [List Device Events Definitions](/#operations/listNacEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -202,7 +222,6 @@ def searchSiteNacClientEvents( ap: str | None = None, random_mac: bool | None = None, mac: str | None = None, - timestamp: float | None = None, usermac_label: str | None = None, text: str | None = None, nas_ip: str | None = None, @@ -229,35 +248,61 @@ def searchSiteNacClientEvents( QUERY PARAMS ------------ type : str + See [List Device Events Definitions](/#operations/listNacEventsDefinitions) nacrule_id : str + NAC Policy Rule ID, if matched nacrule_matched : bool + NAC Policy Rule Matched dryrun_nacrule_id : str + NAC Policy Dry Run Rule ID, if present and matched dryrun_nacrule_matched : bool + True - if dryrun rule present and matched with priority, False - if not matched or not present auth_type : str + Authentication type, e.g. "eap-tls", "eap-peap", "eap-ttls", "eap-teap", "mab", "psk", "device-auth" vlan : int + Filter results by VLAN ID nas_vendor : str + Vendor of NAS device bssid : str + Filter results by BSSID idp_id : str + SSO ID, if present and used idp_role : str + IDP returned roles/groups for the user idp_username : str + Username presented to the Identity Provider resp_attrs : list - Radius attributes returned by NAC to NAS Devive + RADIUS attributes returned by NAC to NAS Devive ssid : str + Filter results by SSID username : str + Filter results by username ap : str + Filter results by AP MAC address random_mac : bool + Filter results by whether the client is using a randomized MAC address mac : str - timestamp : float + Filter results by MAC address usermac_label : str + Labels derived from usermac entry text : str + Partial / full MAC address, username, device_mac or ap. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported nas_ip : str + IP address of NAS device ingress_vlan : str + Vendor specific VLAN ID in RADIUS requests start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: wxid + On which field the list should be sorted, -prefix represents DESC order. search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -303,8 +348,6 @@ def searchSiteNacClientEvents( query_params["random_mac"] = str(random_mac) if mac: query_params["mac"] = str(mac) - if timestamp: - query_params["timestamp"] = str(timestamp) if usermac_label: query_params["usermac_label"] = str(usermac_label) if text: @@ -357,7 +400,6 @@ def searchSiteNacClients( ssid: str | None = None, status: str | None = None, text: str | None = None, - timestamp: float | None = None, type: str | None = None, usermac_label: list | None = None, username: str | None = None, @@ -384,45 +426,75 @@ def searchSiteNacClients( QUERY PARAMS ------------ ap : str + MAC address of the AP the client is/was connected to auth_type : str + Authentication type, e.g. "eap-tls", "eap-peap", "eap-ttls", "eap-teap", "mab", "psk", "device-auth" cert_expiry_duration : str + Filter by certificate expiry within a specific duration from now (e.g., "7d" for 7 days, "1m" for 1 month) edr_managed : bool + Filters NAC clients that are integrated with EDR providers edr_provider : str{'crowdstrike', 'sentinelone'} - EDR provider of client's organization + EDR provider used to filter NAC clients. enum: `crowdstrike`, `sentinelone` edr_status : str{'sentinelone_healthy', 'sentinelone_infected', 'crowdstrike_low', 'crowdstrike_medium', 'crowdstrike_high', 'crowdstrike_critical', 'crowdstrike_informational'} - EDR Status of the NAC client + EDR status used to filter NAC clients. enum: `sentinelone_healthy`, `sentinelone_infected`, `crowdstrike_low`, `crowdstrike_medium`, `crowdstrike_high`, `crowdstrike_critical`, `crowdstrike_informational` family : str + Partial / full Client family (e.g. "Phone/Tablet/Wearable", "Access Point"). Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Surveillance*` and `*urveillance*` match `Surveillance Camera`). Suffix-only wildcards (e.g. `*Camera`) are not supported hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported idp_id : str + SSO ID, if present and used mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported mdm_compliance : str + MDM compliance of client i.e "compliant", "not compliant" mdm_provider : str + MDM provider of client’s organization eg "intune", "jamf" mdm_managed : bool + Filters NAC clients that are managed by MDM providers mfg : str + Partial / full Client manufacturer (e.g. "apple", "cisco", "juniper"). Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `Raspberry Pi*` and `*Pi*` match `Raspberry Pi Trading Ltd`). Suffix-only wildcards (e.g. `*Ltd`) are not supported model : str + Client model, e.g. "iPhone 12", "MX100" nacrule_name : str + NAC Policy Rule Name matched nacrule_id : str + NAC Policy Rule ID, if matched nacrule_matched : bool + NAC Policy Rule Matched nas_vendor : str + Vendor of NAS device nas_ip : str + IP address of NAS device ingress_vlan : str + Vendor specific VLAN ID in RADIUS requests os : str + Client OS, e.g. "iOS 18.1", "Android", "Windows", "Linux" ssid : str + Filter results by SSID status : str{'permitted', 'session_started', 'session_stopped', 'denied'} - Connection status of client i.e "permitted", "denied, "session_started", "session_stopped" + Client connection status used to filter results. enum: `permitted`, `session_started`, `session_stopped`, `denied` text : str - timestamp : float + partial / full MAC address, last_username, device_mac, nas_ip. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported. type : str + Client type i.e. "wireless", "wired" etc. usermac_label : list Labels derived from usermac entry username : str + Filter results by username vlan : str + Filter results by VLAN ID limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: wxid + On which field the list should be sorted, -prefix represents DESC order. search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -482,8 +554,6 @@ def searchSiteNacClients( query_params["status"] = str(status) if text: query_params["text"] = str(text) - if timestamp: - query_params["timestamp"] = str(timestamp) if type: query_params["type"] = str(type) if usermac_label: diff --git a/src/mistapi/api/v1/sites/networks.py b/src/mistapi/api/v1/sites/networks.py index 32e0a69..6603d15 100644 --- a/src/mistapi/api/v1/sites/networks.py +++ b/src/mistapi/api/v1/sites/networks.py @@ -32,6 +32,7 @@ def listSiteNetworksDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/networktemplates.py b/src/mistapi/api/v1/sites/networktemplates.py index 11e7186..86a7f11 100644 --- a/src/mistapi/api/v1/sites/networktemplates.py +++ b/src/mistapi/api/v1/sites/networktemplates.py @@ -32,6 +32,7 @@ def listSiteNetworkTemplatesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/otherdevices.py b/src/mistapi/api/v1/sites/otherdevices.py index 2419a23..6e71bef 100644 --- a/src/mistapi/api/v1/sites/otherdevices.py +++ b/src/mistapi/api/v1/sites/otherdevices.py @@ -40,12 +40,19 @@ def listSiteOtherDevices( QUERY PARAMS ------------ vendor : str + Filter results by vendor mac : str + Filter results by MAC address serial : str + Filter results by device serial number model : str + Filter results by device model name : str + Filter results by name limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -98,11 +105,17 @@ def countSiteOtherDeviceEvents( QUERY PARAMS ------------ distinct : str{'mac', 'site_id', 'type', 'vendor'}, default: mac + Field used to group this count response. enum: `mac`, `site_id`, `type`, `vendor` type : str + See [List Device Events Definitions](/#operations/listOtherDeviceEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -157,15 +170,25 @@ def searchSiteOtherDeviceEvents( QUERY PARAMS ------------ mac : str + Filter results by MAC address device_mac : str + MAC of attached device vendor : str + Filter results by vendor type : str + See [List Device Events Definitions](/#operations/listOtherDeviceEventsDefinitions) limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/pcaps.py b/src/mistapi/api/v1/sites/pcaps.py index a75dec2..a332e1a 100644 --- a/src/mistapi/api/v1/sites/pcaps.py +++ b/src/mistapi/api/v1/sites/pcaps.py @@ -39,11 +39,17 @@ def listSitePacketCaptures( QUERY PARAMS ------------ client_mac : str + Optional client mac filter start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/psks.py b/src/mistapi/api/v1/sites/psks.py index 9ccf40e..1a7692d 100644 --- a/src/mistapi/api/v1/sites/psks.py +++ b/src/mistapi/api/v1/sites/psks.py @@ -38,10 +38,15 @@ def listSitePsks( QUERY PARAMS ------------ ssid : str + Filter results by SSID role : str + Filter PSK results by role name : str + Filter results by name limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -145,7 +150,7 @@ def importSitePsksFile( BODY PARAMS ----------- file : str - path to the file to upload. + path to the file to upload. Uploaded CSV or binary file containing PSKs to import RETURN ----------- @@ -205,6 +210,7 @@ def getSitePsk(mist_session: _APISession, site_id: str, psk_id: str) -> _APIResp ----------- site_id : str psk_id : str + PSK ID RETURN ----------- @@ -231,6 +237,7 @@ def deleteSitePsk(mist_session: _APISession, site_id: str, psk_id: str) -> _APIR ----------- site_id : str psk_id : str + PSK ID RETURN ----------- @@ -259,6 +266,7 @@ def updateSitePsk( ----------- site_id : str psk_id : str + PSK ID BODY PARAMS ----------- diff --git a/src/mistapi/api/v1/sites/rfdiags.py b/src/mistapi/api/v1/sites/rfdiags.py index d8f1a49..8e09f92 100644 --- a/src/mistapi/api/v1/sites/rfdiags.py +++ b/src/mistapi/api/v1/sites/rfdiags.py @@ -38,10 +38,15 @@ def getSiteSiteRfdiagRecording( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/rftemplates.py b/src/mistapi/api/v1/sites/rftemplates.py index 60631e3..539a29e 100644 --- a/src/mistapi/api/v1/sites/rftemplates.py +++ b/src/mistapi/api/v1/sites/rftemplates.py @@ -32,6 +32,7 @@ def listSiteRfTemplatesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/rogues.py b/src/mistapi/api/v1/sites/rogues.py index 7891223..98e8d91 100644 --- a/src/mistapi/api/v1/sites/rogues.py +++ b/src/mistapi/api/v1/sites/rogues.py @@ -44,16 +44,27 @@ def countSiteRogueEvents( QUERY PARAMS ------------ distinct : str{'ap', 'bssid', 'ssid', 'type'}, default: bssid + Field used to group this count response. enum: `ap`, `bssid`, `ssid`, `type` type : str{'honeypot', 'lan', 'others', 'spoof'} + Rogue classification used to filter the results. enum: `honeypot`, `lan`, `others`, `spoof` ssid : str + Filter results by SSID bssid : str + Filter results by BSSID ap_mac : str + MAC of the device that had strongest signal strength for ssid/bssid pair channel : str + Filter results by channel seen_on_lan : bool + Whether the reporting AP see a wireless client (on LAN) connecting to it start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -120,17 +131,29 @@ def searchSiteRogueEvents( QUERY PARAMS ------------ type : str{'honeypot', 'lan', 'others', 'spoof'} + Rogue classification used to filter the results. enum: `honeypot`, `lan`, `others`, `spoof` ssid : str + Filter results by SSID bssid : str + Filter results by BSSID ap_mac : str + MAC of the device that had strongest signal strength for ssid/bssid pair channel : int + Filter results by channel seen_on_lan : bool + Whether the reporting AP see a wireless client (on LAN) connecting to it limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/rrm.py b/src/mistapi/api/v1/sites/rrm.py index 35485e7..d7e9d66 100644 --- a/src/mistapi/api/v1/sites/rrm.py +++ b/src/mistapi/api/v1/sites/rrm.py @@ -38,7 +38,9 @@ def getSiteChannelScores( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -138,12 +140,17 @@ def listSiteRrmEvents( QUERY PARAMS ------------ band : str{'24', '5', '5-dedicated', '5-selectable', '6', '6-dedicated', '6-selectable'} - 802.11 Band + 802.11 band used to filter radio results. enum: `24`, `5`, `5-dedicated`, `5-selectable`, `6`, `6-dedicated`, `6-selectable` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -193,7 +200,9 @@ def listSiteCurrentRrmNeighbors( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/rssizones.py b/src/mistapi/api/v1/sites/rssizones.py index f55c43b..32e66c7 100644 --- a/src/mistapi/api/v1/sites/rssizones.py +++ b/src/mistapi/api/v1/sites/rssizones.py @@ -35,7 +35,9 @@ def listSiteRssiZones( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/secintelprofiles.py b/src/mistapi/api/v1/sites/secintelprofiles.py index 14f2cd8..1630124 100644 --- a/src/mistapi/api/v1/sites/secintelprofiles.py +++ b/src/mistapi/api/v1/sites/secintelprofiles.py @@ -32,6 +32,7 @@ def listSiteSecIntelProfilesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/servicepolicies.py b/src/mistapi/api/v1/sites/servicepolicies.py index 232eb16..65215b1 100644 --- a/src/mistapi/api/v1/sites/servicepolicies.py +++ b/src/mistapi/api/v1/sites/servicepolicies.py @@ -32,6 +32,7 @@ def listSiteServicePoliciesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/services.py b/src/mistapi/api/v1/sites/services.py index 7d8caae..db0e69d 100644 --- a/src/mistapi/api/v1/sites/services.py +++ b/src/mistapi/api/v1/sites/services.py @@ -32,6 +32,7 @@ def listSiteServicesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- @@ -59,7 +60,6 @@ def countSiteServicePathEvents( port_id: str | None = None, model: str | None = None, version: str | None = None, - timestamp: float | None = None, mac: str | None = None, start: str | None = None, end: str | None = None, @@ -81,20 +81,33 @@ def countSiteServicePathEvents( QUERY PARAMS ------------ distinct : str{'mac', 'model', 'policy', 'port_id', 'site_id', 'type', 'vpn_name', 'vpn_path'}, default: type + Field used to group this count response. enum: `mac`, `model`, `policy`, `port_id`, `site_id`, `type`, `vpn_name`, `vpn_path` type : str + Event type, e.g. GW_SERVICE_PATH_DOWN text : str + Description of the event including the reason it is triggered vpn_name : str + Filter results by vpn name vpn_path : str + Filter results by vpn path policy : str + Service policy associated with that specific path port_id : str + Filter results by port identifier model : str + Filter results by device model version : str - timestamp : float + Filter results by software version mac : str + Filter results by MAC address start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -122,8 +135,6 @@ def countSiteServicePathEvents( query_params["model"] = str(model) if version: query_params["version"] = str(version) - if timestamp: - query_params["timestamp"] = str(timestamp) if mac: query_params["mac"] = str(mac) if start: @@ -151,7 +162,6 @@ def searchSiteServicePathEvents( port_id: str | None = None, model: str | None = None, version: str | None = None, - timestamp: float | None = None, mac: str | None = None, limit: int | None = None, start: str | None = None, @@ -175,23 +185,39 @@ def searchSiteServicePathEvents( QUERY PARAMS ------------ type : str + Event type, e.g. GW_SERVICE_PATH_DOWN text : str + Description of the event including the reason it is triggered peer_port_id : str + Port ID of the peer gateway peer_mac : str + MAC address of the peer gateway vpn_name : str + Filter results by vpn name vpn_path : str + Filter results by vpn path policy : str + Service policy associated with that specific path port_id : str + Filter results by port identifier model : str + Filter results by device model version : str - timestamp : float + Filter results by software version mac : str + Filter results by MAC address limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -221,8 +247,6 @@ def searchSiteServicePathEvents( query_params["model"] = str(model) if version: query_params["version"] = str(version) - if timestamp: - query_params["timestamp"] = str(timestamp) if mac: query_params["mac"] = str(mac) if limit: diff --git a/src/mistapi/api/v1/sites/sitetemplates.py b/src/mistapi/api/v1/sites/sitetemplates.py index e383525..a00c177 100644 --- a/src/mistapi/api/v1/sites/sitetemplates.py +++ b/src/mistapi/api/v1/sites/sitetemplates.py @@ -32,6 +32,7 @@ def listSiteSiteTemplatesDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/skyatp.py b/src/mistapi/api/v1/sites/skyatp.py index ace9fbd..89cc6db 100644 --- a/src/mistapi/api/v1/sites/skyatp.py +++ b/src/mistapi/api/v1/sites/skyatp.py @@ -43,15 +43,25 @@ def countSiteSkyatpEvents( QUERY PARAMS ------------ distinct : str{'device_mac', 'mac', 'threat_level', 'type'}, default: type + Field used to group this count response. enum: `device_mac`, `mac`, `threat_level`, `type` type : str + Event type, e.g. cc, fs, mw mac : str + Filter results by MAC address device_mac : str + Filter results by device MAC address threat_level : int + Filter results by threat level ip : str + Filter results by IPv4 address start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -115,16 +125,27 @@ def searchSiteSkyatpEvents( QUERY PARAMS ------------ type : str + Event type, e.g. cc, fs, mw mac : str + Filter results by MAC address device_mac : str + Filter results by device MAC address threat_level : int + Filter results by threat level ip : str + Filter results by IPv4 address limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/sle.py b/src/mistapi/api/v1/sites/sle.py index 078cc0e..066393a 100644 --- a/src/mistapi/api/v1/sites/sle.py +++ b/src/mistapi/api/v1/sites/sle.py @@ -18,7 +18,7 @@ @deprecation.deprecated( deprecated_in="0.59.2", removed_in="0.65.0", - current_version="0.62.0", + current_version="0.63.0", details="function replaced with getSiteSleClassifierSummaryTrend", ) def getSiteSleClassifierDetails( @@ -33,31 +33,38 @@ def getSiteSleClassifierDetails( duration: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-classifier-details - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - classifier : str - - QUERY PARAMS - ------------ - start : str - end : str - duration : str, default: 1d - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-classifier-details + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + classifier : str + + QUERY PARAMS + ------------ + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/classifier/{classifier}/summary" @@ -84,31 +91,38 @@ def getSiteSleClassifierSummaryTrend( duration: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-classifier-summary-trend - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - classifier : str - - QUERY PARAMS - ------------ - start : str - end : str - duration : str, default: 1d - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-classifier-summary-trend + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + classifier : str + + QUERY PARAMS + ------------ + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/classifier/{classifier}/summary-trend" @@ -127,24 +141,28 @@ def listSiteSleMetricClassifiers( mist_session: _APISession, site_id: str, scope: str, scope_id: str, metric: str ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/list-site-sle-metric-classifiers - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/list-site-sle-metric-classifiers + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/classifiers" @@ -164,30 +182,37 @@ def getSiteSleHistogram( duration: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-histogram - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - QUERY PARAMS - ------------ - start : str - end : str - duration : str, default: 1d - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-histogram + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + QUERY PARAMS + ------------ + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/histogram" @@ -215,32 +240,41 @@ def getSiteSleImpactSummary( classifier: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-impact-summary - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - QUERY PARAMS - ------------ - start : str - end : str - duration : str, default: 1d - fields : str{'ap', 'band', 'chassis', 'client', 'device_os', 'device_type', 'gateway', 'gateway_zones', 'interface', 'mxedge', 'peer_path', 'server', 'switch', 'vlan', 'wlan'} - classifier : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-impact-summary + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + QUERY PARAMS + ------------ + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + fields : str{'ap', 'band', 'chassis', 'client', 'device_os', 'device_type', 'gateway', 'gateway_zones', 'interface', 'mxedge', 'peer_path', 'server', 'switch', 'vlan', 'wlan'} + Additional response fields to include, as a comma-separated list or `*` for all fields. enum: `ap`, `band`, `chassis`, `client`, `device_os`, `device_type`, `gateway`, `gateway_zones`, `interface`, `mxedge`, `peer_path`, `server`, `switch`, `vlan`, `wlan` + classifier : str + Filter SLE impact results by classifier + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = ( @@ -286,13 +320,18 @@ def listSiteSleImpactedApplications( scope : str{'gateway', 'site', 'switch'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -339,13 +378,18 @@ def listSiteSleImpactedAps( scope : str{'site'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -392,13 +436,18 @@ def listSiteSleImpactedChassis( scope : str{'gateway', 'site', 'switch'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -445,13 +494,18 @@ def listSiteSleImpactedWiredClients( scope : str{'gateway', 'site', 'switch'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -498,13 +552,18 @@ def listSiteSleImpactedGateways( scope : str{'site'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -551,13 +610,18 @@ def listSiteSleImpactedInterfaces( scope : str{'gateway', 'site', 'switch'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -604,13 +668,18 @@ def listSiteSleImpactedSwitches( scope : str{'site'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -657,13 +726,18 @@ def listSiteSleImpactedWirelessClients( scope : str{'ap', 'site'} scope_id : str metric : str + Values from `listSiteSlesMetrics` QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` classifier : str + Filter SLE impact results by classifier RETURN ----------- @@ -690,7 +764,7 @@ def listSiteSleImpactedWirelessClients( @deprecation.deprecated( deprecated_in="0.59.2", removed_in="0.65.0", - current_version="0.62.0", + current_version="0.63.0", details="function replaced with getSiteSleSummaryTrend", ) def getSiteSleSummary( @@ -704,30 +778,37 @@ def getSiteSleSummary( duration: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-summary - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - QUERY PARAMS - ------------ - start : str - end : str - duration : str, default: 1d - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-summary + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + QUERY PARAMS + ------------ + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/summary" @@ -753,30 +834,37 @@ def getSiteSleSummaryTrend( duration: str | None = None, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-summary-trend - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - QUERY PARAMS - ------------ - start : str - end : str - duration : str, default: 1d - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-summary-trend + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + QUERY PARAMS + ------------ + start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` + end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` + duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = ( @@ -797,24 +885,28 @@ def getSiteSleThreshold( mist_session: _APISession, site_id: str, scope: str, scope_id: str, metric: str ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-threshold - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/get-site-sle-threshold + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/threshold" @@ -832,29 +924,33 @@ def replaceSiteSleThreshold( body: dict | list, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/replace-site-sle-threshold - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - BODY PARAMS - ----------- - body : dict - JSON object to send to Mist Cloud (see API doc above for more details) - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/replace-site-sle-threshold + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + BODY PARAMS + ----------- + body : dict + JSON object to send to Mist Cloud (see API doc above for more details) + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/threshold" @@ -871,29 +967,33 @@ def updateSiteSleThreshold( body: dict, ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/update-site-sle-threshold - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - metric : str - - BODY PARAMS - ----------- - body : dict - JSON object to send to Mist Cloud (see API doc above for more details) - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/update-site-sle-threshold + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + metric : str + Values from `listSiteSlesMetrics` + + BODY PARAMS + ----------- + body : dict + JSON object to send to Mist Cloud (see API doc above for more details) + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metric/{metric}/threshold" @@ -905,23 +1005,26 @@ def listSiteSlesMetrics( mist_session: _APISession, site_id: str, scope: str, scope_id: str ) -> _APIResponse: """ - API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/list-site-sles-metrics - - PARAMS - ----------- - mistapi.APISession : mist_session - mistapi session including authentication and Mist host information - - PATH PARAMS - ----------- - site_id : str - scope : str{'ap', 'client', 'gateway', 'site', 'switch'} - scope_id : str - - RETURN - ----------- - mistapi.APIResponse - response from the API call + API doc: https://www.juniper.net/documentation/us/en/software/mist/api/http/api/sites/sles/list-site-sles-metrics + + PARAMS + ----------- + mistapi.APISession : mist_session + mistapi session including authentication and Mist host information + + PATH PARAMS + ----------- + site_id : str + scope : str{'ap', 'client', 'gateway', 'site', 'switch'} + scope_id : str + * site_id if `scope`==`site` + * device_id if `scope`==`ap`, `scope`==`switch` or `scope`==`gateway` + * mac if `scope`==`client` + + RETURN + ----------- + mistapi.APIResponse + response from the API call """ uri = f"/api/v1/sites/{site_id}/sle/{scope}/{scope_id}/metrics" diff --git a/src/mistapi/api/v1/sites/stats.py b/src/mistapi/api/v1/sites/stats.py index e2098dd..44ec253 100644 --- a/src/mistapi/api/v1/sites/stats.py +++ b/src/mistapi/api/v1/sites/stats.py @@ -62,9 +62,13 @@ def listSiteSpectrumAnalysis( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -110,11 +114,15 @@ def countSiteApps( QUERY PARAMS ------------ distinct : str{'ap', 'app', 'category', 'device_mac', 'port_id', 'service', 'src_ip', 'ssid', 'wcid', 'wlan_id app'} - Default for wireless devices is `ap`. Default for wired devices is `device_mac` + Field used to group application statistics count results. enum: `ap`, `app`, `category`, `device_mac`, `port_id`, `service`, `src_ip`, `ssid`, `wcid`, `wlan_id` device_mac : str + MAC of the device app : str + Filter results by application name wired : str + If a device is wired or wireless. Default is False. limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -141,6 +149,7 @@ def countSiteApps( def listSiteAssetsStats( mist_session: _APISession, site_id: str, + map_id: str | None = None, start: str | None = None, end: str | None = None, duration: str | None = None, @@ -161,11 +170,18 @@ def listSiteAssetsStats( QUERY PARAMS ------------ + map_id : str + Filter assets by map UUID start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -175,6 +191,8 @@ def listSiteAssetsStats( uri = f"/api/v1/sites/{site_id}/stats/assets" query_params: dict[str, str] = {} + if map_id: + query_params["map_id"] = str(map_id) if start: query_params["start"] = str(start) if end: @@ -210,7 +228,9 @@ def countSiteAssets( QUERY PARAMS ------------ distinct : str{'by', 'device_name', 'eddystone_uid_instance', 'eddystone_uid_namespace', 'eddystone_url', 'ibeacon_major', 'ibeacon_minor', 'ibeacon_uuid', 'mac', 'map_id', 'name'}, default: map_id + Field used to group this count response. enum: `by`, `device_name`, `eddystone_uid_instance`, `eddystone_uid_namespace`, `eddystone_url`, `ibeacon_major`, `ibeacon_minor`, `ibeacon_uuid`, `mac`, `map_id`, `name` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -267,25 +287,45 @@ def searchSiteAssets( QUERY PARAMS ------------ mac : str + Filter results by MAC address map_id : str + Filter results by map identifier ibeacon_uuid : str + Filter asset results by iBeacon UUID ibeacon_major : int + Filter asset results by iBeacon major value ibeacon_minor : int + Filter asset results by iBeacon minor value eddystone_uid_namespace : str + Filter asset results by Eddystone UID namespace eddystone_uid_instance : str + Filter asset results by Eddystone UID instance eddystone_url : str + Filter asset results by Eddystone URL device_name : str + Filter asset results by reporting device name by : str + Select how the value should be returned name : str + Filter results by name ap_mac : str + Filter asset results by reporting AP MAC address beam : str + Filter asset results by beam value rssi : str + Filter asset results by RSSI value limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -363,8 +403,11 @@ def getSiteAssetStats( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -408,10 +451,15 @@ def listSiteBeaconsStats( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -457,8 +505,11 @@ def countSiteBgpStats( QUERY PARAMS ------------ state : str + Filter peer results by state distinct : str + Field used to group this count response limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -506,14 +557,23 @@ def searchSiteBgpStats( QUERY PARAMS ------------ mac : str + Filter results by MAC address neighbor_mac : str + Filter peer results by neighbor MAC address vrf_name : str + Filter peer results by VRF name limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -574,13 +634,21 @@ def troubleshootSiteCall( QUERY PARAMS ------------ meeting_id : str + Filter results by meeting identifier mac : str + Filter results by MAC address app : str + Third party app name start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -635,11 +703,17 @@ def countSiteCalls( QUERY PARAMS ------------ distinct : str{'mac'}, default: mac + Field used to group this count response. enum: `mac` rating : int + Feedback rating (e.g. "rating=1" or "rating=1,2") app : str + Filter application statistics by application name start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -692,13 +766,21 @@ def searchSiteCalls( QUERY PARAMS ------------ mac : str + Filter results by MAC address app : str + Third party app name limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -751,9 +833,13 @@ def getSiteCallsSummary( QUERY PARAMS ------------ ap_mac : str + Filter results by AP MAC address app : str + Filter results by application name start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` RETURN ----------- @@ -803,14 +889,23 @@ def listSiteTroubleshootCalls( QUERY PARAMS ------------ ap : str + Filter results by AP MAC address meeting_id : str + Filter results by meeting identifier mac : str + Filter results by MAC address app : str + Third party app name start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -866,10 +961,15 @@ def listSiteWirelessClientsStats( QUERY PARAMS ------------ wired : bool + Filter results by whether the client is wired limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -912,6 +1012,7 @@ def getSiteWirelessClientStats( QUERY PARAMS ------------ wired : bool + Filter results by whether the client is wired RETURN ----------- @@ -950,9 +1051,13 @@ def listSiteDevicesStats( QUERY PARAMS ------------ type : str, default: ap + Filter results by type status : str{'all', 'connected', 'disconnected'}, default: all + Filter results by status. enum: `all`, `connected`, `disconnected` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -993,6 +1098,7 @@ def getSiteDeviceStats( QUERY PARAMS ------------ fields : str + List of additional fields requests, comma separated, or `fields=*` for all of them RETURN ----------- @@ -1060,10 +1166,15 @@ def listSiteDiscoveredAssets( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -1114,15 +1225,21 @@ def searchSiteDiscoveredSwitchesMetrics( QUERY PARAMS ------------ scope : str{'site', 'switch'}, default: site - Metric scope + Filter results by scope. enum: `site`, `switch` type : str{'inactive_wired_vlans', 'poe_compliance', 'switch_ap_affinity', 'version_compliance'} - Metric type + Metric type. enum: `inactive_wired_vlans`, `poe_compliance`, `switch_ap_affinity`, `version_compliance` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -1176,10 +1293,15 @@ def countSiteDiscoveredSwitches( QUERY PARAMS ------------ distinct : str{'mgmt_addr', 'model', 'system_name', 'version'}, default: system_name + Field used to group this count response. enum: `mgmt_addr`, `model`, `system_name`, `version` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -1224,7 +1346,9 @@ def listSiteDiscoveredSwitchesMetrics( QUERY PARAMS ------------ threshold : str + Configurable # ap per switch threshold, default 12 system_name : str + System name for switch level metrics, optional RETURN ----------- @@ -1273,17 +1397,29 @@ def searchSiteDiscoveredSwitches( QUERY PARAMS ------------ adopted : bool + Filter results by whether the device is adopted system_name : str + Filter discovered switch results by system name hostname : str + Filter results by hostname vendor : str + Filter results by vendor model : str + Filter results by device model version : str + Filter results by software version limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -1345,10 +1481,15 @@ def getSiteAssetsOfInterest( QUERY PARAMS ------------ duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -1423,10 +1564,15 @@ def getSiteWirelessClientsStatsByMap( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -1558,10 +1704,15 @@ def listSiteMxEdgesStats( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -1609,8 +1760,11 @@ def getSiteMxEdgeStats( QUERY PARAMS ------------ start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` RETURN ----------- @@ -1655,11 +1809,17 @@ def countSiteOspfStats( QUERY PARAMS ------------ distinct : str{'site_id', 'org_id', 'mac', 'peer_ip', 'port_id', 'state', 'vrf_name'} + Field used to group this count response. enum: `site_id`, `org_id`, `mac`, `peer_ip`, `port_id`, `state`, `vrf_name` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -1712,13 +1872,21 @@ def searchSiteOspfStats( QUERY PARAMS ------------ mac : str + Filter results by MAC address vrf_name : str + Filter peer results by VRF name peer_ip : str + Filter peer results by peer IP address start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -1797,38 +1965,65 @@ def countSiteSwOrGwPorts( QUERY PARAMS ------------ distinct : str{'full_duplex', 'mac', 'neighbor_mac', 'neighbor_port_desc', 'neighbor_system_name', 'poe_disabled', 'poe_mode', 'poe_on', 'port_id', 'port_mac', 'speed', 'up'}, default: mac + Field used to group this count response. enum: `full_duplex`, `mac`, `neighbor_mac`, `neighbor_port_desc`, `neighbor_system_name`, `poe_disabled`, `poe_mode`, `poe_on`, `port_id`, `port_mac`, `speed`, `up` full_duplex : bool + Indicates full or half duplex mac : str + Filter results by MAC address neighbor_mac : str + Chassis identifier of the chassis type listed neighbor_port_desc : str + Description supplied by the system on the interface E.g. "GigabitEthernet2/0/39" neighbor_system_name : str + Name supplied by the system on the interface E.g. neighbor system name E.g. "Kumar-Acc-SW.mist.local" poe_disabled : bool + Is the POE configured not be disabled. poe_mode : str + POE mode depending on class E.g. "802.3at" poe_on : bool + Is the device attached to POE port_id : str + Filter results by port identifier port_mac : str + Filter results by port MAC address power_draw : float + Amount of power being used by the interface at the time the command is executed. Unit in watts. tx_pkts : int + Filter results by transmitted packet count rx_pkts : int + Filter results by received packet count rx_bytes : int + Filter results by received byte count tx_bps : int + Filter results by transmit rate rx_bps : int + Filter results by receive rate tx_mcast_pkts : int + Filter results by transmitted multicast packet count tx_bcast_pkts : int + Filter results by transmitted broadcast packet count rx_mcast_pkts : int + Filter results by received multicast packet count rx_bcast_pkts : int + Filter results by received broadcast packet count speed : int + Filter results by port speed stp_state : str{'', 'blocking', 'disabled', 'forwarding', 'learning', 'listening'} - If `up`==`true` + STP state used to filter port results when `up`==`true`. enum: `""`, `blocking`, `disabled`, `forwarding`, `learning`, `listening` stp_role : str{'', 'alternate', 'backup', 'designated', 'disabled', 'root', 'root-prevented'} - If `up`==`true` + STP role used to filter port results when `up`==`true`. enum: `""`, `alternate`, `backup`, `designated`, `disabled`, `root`, `root-prevented` auth_state : str{'', 'authenticated', 'authenticating', 'held', 'init'} - If `up`==`true` && has Authenticator role + Authentication state used to filter port results when `up`==`true` and the port has an authenticator role. enum: `""`, `authenticated`, `authenticating`, `held`, `init` up : bool + Indicates if interface is up start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -1947,32 +2142,51 @@ def searchSiteSwOrGwPorts( device_type : str{'switch', 'gateway', 'all'}, default: all Type of device. enum: `switch`, `gateway`, `all` auth_state : str{'', 'authenticated', 'authenticating', 'held', 'init'} - If `up`==`true` && has Authenticator role + Authentication state used to filter port results when `up`==`true` and the port has an authenticator role. enum: `""`, `authenticated`, `authenticating`, `held`, `init` full_duplex : bool + Indicates full or half duplex lte_imsi : str + LTE IMSI value, Check for null/empty lte_iccid : str + LTE ICCID value, Check for null/empty lte_imei : str + LTE IMEI value, Check for null/empty mac : str + Filter results by MAC address neighbor_mac : str + Chassis identifier of the chassis type listed neighbor_port_desc : str + Description supplied by the system on the interface E.g. "GigabitEthernet2/0/39" neighbor_system_name : str + Name supplied by the system on the interface E.g. neighbor system name E.g. "Kumar-Acc-SW.mist.local" poe_disabled : bool + Is the POE configured not be disabled. poe_mode : str + POE mode depending on class E.g. "802.3at" poe_on : bool + Is the device attached to POE poe_priority : str{'low', 'high'} - PoE priority. + PoE priority used to filter switch port results. enum: `low`, `high` port_id : str + Filter results by port identifier port_mac : str + Filter results by port MAC address speed : int + Filter results by port speed stp_state : str{'', 'blocking', 'disabled', 'forwarding', 'learning', 'listening'} - If `up`==`true` + STP state used to filter port results when `up`==`true`. enum: `""`, `blocking`, `disabled`, `forwarding`, `learning`, `listening` stp_role : str{'', 'alternate', 'backup', 'designated', 'disabled', 'root', 'root-prevented'} - If `up`==`true` + STP role used to filter port results when `up`==`true`. enum: `""`, `alternate`, `backup`, `designated`, `disabled`, `root`, `root-prevented` up : bool + Indicates if interface is up xcvr_part_number : str + Optic Slot Partnumber, Check for null/empty limit : int, default: 100 + Maximum number of results to return per page sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -2137,8 +2351,11 @@ def getSiteSwitchesMetrics( QUERY PARAMS ------------ type : str{'active_ports_summary'} + Filter results by type. enum: `active_ports_summary` scope : str{'site', 'switch'} + Filter results by scope. enum: `site`, `switch` switch_mac : str + Switch mac, used only with metric `type`==`active_ports_summary` RETURN ----------- @@ -2204,7 +2421,9 @@ def listSiteZonesStats( QUERY PARAMS ------------ map_id : str + Filter results by map identifier min_duration : int + Filter results by minimum duration RETURN ----------- diff --git a/src/mistapi/api/v1/sites/synthetic_test.py b/src/mistapi/api/v1/sites/synthetic_test.py index 292f2ef..90d5b2b 100644 --- a/src/mistapi/api/v1/sites/synthetic_test.py +++ b/src/mistapi/api/v1/sites/synthetic_test.py @@ -77,20 +77,31 @@ def searchSiteSyntheticTest( QUERY PARAMS ------------ mac : str + Filter results by MAC address port_id : str + Filter results by port identifier vlan_id : str + Filter results by VLAN ID by : str + Entity who triggers the test reason : str + Filter results by reason type : str{'arp', 'curl', 'dhcp', 'dhcp6', 'dns', 'lan_connectivity', 'radius', 'speedtest'} - Synthetic test type + Synthetic test type used to filter results. enum: `arp`, `curl`, `dhcp`, `dhcp6`, `dns`, `lan_connectivity`, `radius`, `speedtest` protocol : str{'ping', 'traceroute'} - Connectivity protocol + Connectivity protocol used to filter synthetic test results. enum: `ping`, `traceroute` tenant : str + Filter results by tenant network limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/vbeacons.py b/src/mistapi/api/v1/sites/vbeacons.py index 0783803..18ed31d 100644 --- a/src/mistapi/api/v1/sites/vbeacons.py +++ b/src/mistapi/api/v1/sites/vbeacons.py @@ -35,7 +35,9 @@ def listSiteVBeacons( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/visits.py b/src/mistapi/api/v1/sites/visits.py index 2626c60..b22358a 100644 --- a/src/mistapi/api/v1/sites/visits.py +++ b/src/mistapi/api/v1/sites/visits.py @@ -45,17 +45,25 @@ def searchSiteZoneSessions( QUERY PARAMS ------------ user_type : str{'asset', 'client', 'sdkclient'} - User type, client (default) / sdkclient / asset + Filter results by user type. enum: `asset`, `client`, `sdkclient` user : str + Client MAC / Asset MAC / SDK UUID scope_id : str + If `scope`==`map`/`zone`/`rssizone`, the scope id scope : str{'map', 'rssizone', 'site', 'zone'}, default: site - Scope + Filter results by scope. enum: `map`, `rssizone`, `site`, `zone` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/vpns.py b/src/mistapi/api/v1/sites/vpns.py index 85c2218..969ab82 100644 --- a/src/mistapi/api/v1/sites/vpns.py +++ b/src/mistapi/api/v1/sites/vpns.py @@ -32,6 +32,7 @@ def listSiteVpnsDerived( QUERY PARAMS ------------ resolve : bool + Whether resolve the site variables RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wan_client.py b/src/mistapi/api/v1/sites/wan_client.py index dd40f37..9c8986d 100644 --- a/src/mistapi/api/v1/sites/wan_client.py +++ b/src/mistapi/api/v1/sites/wan_client.py @@ -39,11 +39,17 @@ def countSiteWanClientEvents( QUERY PARAMS ------------ distinct : str{'hostname', 'ip', 'mac', 'mfg', 'type'}, default: type + Field used to group this count response. enum: `hostname`, `ip`, `mac`, `mfg`, `type` type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wan_clients.py b/src/mistapi/api/v1/sites/wan_clients.py index 0b30029..acda2cf 100644 --- a/src/mistapi/api/v1/sites/wan_clients.py +++ b/src/mistapi/api/v1/sites/wan_clients.py @@ -38,10 +38,15 @@ def countSiteWanClients( QUERY PARAMS ------------ distinct : str{'hostname', 'ip', 'mac', 'mfg'}, default: mac + Field used to group this count response. enum: `hostname`, `ip`, `mac`, `mfg` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -96,17 +101,29 @@ def searchSiteWanClientEvents( QUERY PARAMS ------------ type : str + See [List Device Events Definitions](/#operations/listDeviceEventsDefinitions) mac : str + Partial / full Client MAC address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `aabbcc*` and `*bbcc*` match `aabbccddeeff`). Suffix-only wildcards (e.g. `*bccddeeff`) are not supported hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported ip : str + Filter results by IP address mfg : str + Filter results by manufacturer nacrule_id : str + Filter results by NAC rule identifier limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- @@ -175,17 +192,29 @@ def searchSiteWanClients( QUERY PARAMS ------------ hostname : str + Partial / full Client hostname. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `everest*` and `*rest*` match `my-everest-client`). Suffix-only wildcards (e.g. `*everest`) are not supported ip : str + Partial / full Client IP address. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `10.100.10.*` and `*100.10.*` match `10.100.10.54`). Suffix-only wildcards (e.g. `*.54`) are not supported ip_src : str + Filter results by source IP address mac : str + Filter results by MAC address mfg : str + Filter results by manufacturer network : str + Partial / full Name of the network the client is/was connected to. Use `prefix*` for prefix search or `*substring*` for contains search (e.g. `my-corp*` and `*corp*` match `my-corp-network`). Suffix-only wildcards (e.g. `*corp`) are not supported limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wan_usages.py b/src/mistapi/api/v1/sites/wan_usages.py index 4d7e7cb..e52be93 100644 --- a/src/mistapi/api/v1/sites/wan_usages.py +++ b/src/mistapi/api/v1/sites/wan_usages.py @@ -45,17 +45,29 @@ def countSiteWanUsage( QUERY PARAMS ------------ mac : str + Filter results by MAC address peer_mac : str + Filter results by peer MAC address port_id : str + Port ID for the device peer_port_id : str + Peer Port ID for the device policy : str + Filter results by WAN path policy tenant : str + Filter results by tenant network path_type : str + Filter results by port path type distinct : str{'mac', 'path_type', 'peer_mac', 'peer_port_id', 'policy', 'port_id', 'tenant'}, default: policy + Field used to group this count response. enum: `mac`, `path_type`, `peer_mac`, `peer_port_id`, `policy`, `port_id`, `tenant` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -124,17 +136,29 @@ def searchSiteWanUsage( QUERY PARAMS ------------ mac : str + Filter results by MAC address peer_mac : str + Filter results by peer MAC address port_id : str + Port ID for the device peer_port_id : str + Peer Port ID for the device policy : str + Filter results by WAN path policy tenant : str + Filter results by tenant network path_type : str + Filter results by port path type limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order RETURN ----------- diff --git a/src/mistapi/api/v1/sites/webhooks.py b/src/mistapi/api/v1/sites/webhooks.py index b566a10..5d52a94 100644 --- a/src/mistapi/api/v1/sites/webhooks.py +++ b/src/mistapi/api/v1/sites/webhooks.py @@ -35,7 +35,9 @@ def listSiteWebhooks( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -202,16 +204,23 @@ def countSiteWebhooksDeliveries( QUERY PARAMS ------------ error : str + Filter webhook delivery results by error message status_code : int + Filter webhook delivery results by HTTP status code status : str{'failure', 'success'} - Webhook delivery status + Webhook delivery status used to filter results. enum: `failure`, `success` topic : str{'alarms', 'audits', 'device-updowns', 'occupancy-alerts', 'ping'} - Webhook topic + Webhook topic used to filter results. enum: `alarms`, `audits`, `device-updowns`, `occupancy-alerts`, `ping` distinct : str{'status', 'status_code', 'topic', 'webhook_id'} + Field used to group this count response. enum: `status`, `status_code`, `topic`, `webhook_id` start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -274,17 +283,25 @@ def searchSiteWebhooksDeliveries( QUERY PARAMS ------------ error : str + Filter webhook delivery results by error message status_code : int + Filter webhook delivery results by HTTP status code status : str{'failure', 'success'} - Webhook delivery status + Webhook delivery status used to filter results. enum: `failure`, `success` topic : str{'alarms', 'audits', 'device-updowns', 'occupancy-alerts', 'ping'} - Webhook topic + Webhook topic used to filter results. enum: `alarms`, `audits`, `device-updowns`, `occupancy-alerts`, `ping` limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wired_clients.py b/src/mistapi/api/v1/sites/wired_clients.py index bed7f3c..b72dcb8 100644 --- a/src/mistapi/api/v1/sites/wired_clients.py +++ b/src/mistapi/api/v1/sites/wired_clients.py @@ -42,14 +42,23 @@ def countSiteWiredClients( QUERY PARAMS ------------ distinct : str{'mac', 'port_id', 'vlan'}, default: mac + Field used to group this count response. enum: `mac`, `port_id`, `vlan` mac : str + Filter results by MAC address device_mac : str + Filter results by device MAC address port_id : str + Filter results by port identifier vlan : str + Filter results by VLAN ID start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` limit : int, default: 100 + Maximum number of results to return per page RETURN ----------- @@ -120,26 +129,45 @@ def searchSiteWiredClients( QUERY PARAMS ------------ device_mac : str + Filter results by device MAC address mac : str + Filter results by MAC address ip : str + Filter results by IP address port_id : str + Filter results by port identifier source : str{'lldp', 'mac'} - source from where the client was learned (lldp, mac) + Filter results by client learning source. enum: `lldp`, `mac` vlan : str + Filter results by VLAN ID manufacture : str + Filter results by manufacturer text : str + Single entry of hostname/mac nacrule_id : str + Filter results by NAC rule identifier dhcp_hostname : str + Filter results by DHCP hostname dhcp_fqdn : str + Filter results by DHCP FQDN dhcp_client_identifier : str + Filter results by DHCP client identifier dhcp_vendor_class_identifier : str + DHCP Vendor Class Identifier dhcp_request_params : str + Filter results by DHCP request parameters limit : int, default: 100 + Maximum number of results to return per page start : str + Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` end : str + Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` duration : str, default: 1d + Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` sort : str, default: timestamp + On which field the list should be sorted, -prefix represents DESC order search_after : str + Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wlans.py b/src/mistapi/api/v1/sites/wlans.py index f0b51cb..45f2572 100644 --- a/src/mistapi/api/v1/sites/wlans.py +++ b/src/mistapi/api/v1/sites/wlans.py @@ -35,7 +35,9 @@ def listSiteWlans( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- @@ -105,7 +107,9 @@ def listSiteWlansDerived( QUERY PARAMS ------------ resolve : bool + Whether to resolve SITE_VARS wlan_id : str + Filter by WLAN ID RETURN ----------- @@ -260,8 +264,9 @@ def uploadSiteWlanPortalImageFile( BODY PARAMS ----------- file : str - path to the file to upload. Binary file + path to the file to upload. Image file content uploaded as multipart form data json : str + Optional JSON metadata submitted with the image upload RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wxrules.py b/src/mistapi/api/v1/sites/wxrules.py index 7ab74ea..9e730f4 100644 --- a/src/mistapi/api/v1/sites/wxrules.py +++ b/src/mistapi/api/v1/sites/wxrules.py @@ -35,7 +35,9 @@ def listSiteWxRules( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wxtags.py b/src/mistapi/api/v1/sites/wxtags.py index 9aca5e9..3879d41 100644 --- a/src/mistapi/api/v1/sites/wxtags.py +++ b/src/mistapi/api/v1/sites/wxtags.py @@ -35,7 +35,9 @@ def listSiteWxTags( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/wxtunnels.py b/src/mistapi/api/v1/sites/wxtunnels.py index e44c78b..0486637 100644 --- a/src/mistapi/api/v1/sites/wxtunnels.py +++ b/src/mistapi/api/v1/sites/wxtunnels.py @@ -35,7 +35,9 @@ def listSiteWxTunnels( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/src/mistapi/api/v1/sites/zones.py b/src/mistapi/api/v1/sites/zones.py index 5b47e0b..684907a 100644 --- a/src/mistapi/api/v1/sites/zones.py +++ b/src/mistapi/api/v1/sites/zones.py @@ -35,7 +35,9 @@ def listSiteZones( QUERY PARAMS ------------ limit : int, default: 100 + Maximum number of results to return per page page : int, default: 1 + Select the page number to return when using page-based pagination; starts at `1` RETURN ----------- diff --git a/uv.lock b/uv.lock index ed87946..805017e 100644 --- a/uv.lock +++ b/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "build" -version = "1.4.0" +version = "1.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "os_name == 'nt'" }, @@ -22,18 +22,18 @@ dependencies = [ { name = "pyproject-hooks" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/18/94eaffda7b329535d91f00fe605ab1f1e5cd68b2074d03f255c7d250687d/build-1.4.0.tar.gz", hash = "sha256:f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936", size = 50054, upload-time = "2026-01-08T16:41:47.696Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/e0/df5e171f685f82f37b12e1f208064e24244911079d7b767447d1af7e0d70/build-1.5.0.tar.gz", hash = "sha256:302c22c3ba2a0fd5f3911918651341ebb3896176cbdec15bd421f80b1afc7647", size = 89796, upload-time = "2026-04-30T03:18:25.17Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/0d/84a4380f930db0010168e0aa7b7a8fed9ba1835a8fbb1472bc6d0201d529/build-1.4.0-py3-none-any.whl", hash = "sha256:6a07c1b8eb6f2b311b96fcbdbce5dab5fe637ffda0fd83c9cac622e927501596", size = 24141, upload-time = "2026-01-08T16:41:46.453Z" }, + { url = "https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl", hash = "sha256:13f3eecb844759ab66efec90ca17639bbf14dc06cb2fdf37a9010322d9c50a6f", size = 26018, upload-time = "2026-04-30T03:18:23.644Z" }, ] [[package]] name = "certifi" -version = "2026.2.25" +version = "2026.5.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/ce/ee2ecad540810a79593028e88299baeae54d346cc7a0d94b6199988b89b1/certifi-2026.5.20.tar.gz", hash = "sha256:69dea482ab64caa7b9f6aba1c6bf48bb6a5448d1c0f1b17ab42ad8c763a5344d", size = 135422, upload-time = "2026-05-20T11:46:50.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, + { url = "https://files.pythonhosted.org/packages/59/8c/57e832b7af6d7c5abe66eb3fbe3a3a32f4d11ea23a1aa7131371035be991/certifi-2026.5.20-py3-none-any.whl", hash = "sha256:3c52e209ba0a4ad7aebe60436a4ab349c39e1e602e8c134221e546902ad25897", size = 134134, upload-time = "2026-05-20T11:46:48.578Z" }, ] [[package]] @@ -91,107 +91,107 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.6" +version = "3.4.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/60/e3bec1881450851b087e301bedc3daa9377a4d45f1c26aa90b0b235e38aa/charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6", size = 143363, upload-time = "2026-03-15T18:53:25.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/8c/2c56124c6dc53a774d435f985b5973bc592f42d437be58c0c92d65ae7296/charset_normalizer-3.4.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95", size = 298751, upload-time = "2026-03-15T18:50:00.003Z" }, - { url = "https://files.pythonhosted.org/packages/86/2a/2a7db6b314b966a3bcad8c731c0719c60b931b931de7ae9f34b2839289ee/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd", size = 200027, upload-time = "2026-03-15T18:50:01.702Z" }, - { url = "https://files.pythonhosted.org/packages/68/f2/0fe775c74ae25e2a3b07b01538fc162737b3e3f795bada3bc26f4d4d495c/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4", size = 220741, upload-time = "2026-03-15T18:50:03.194Z" }, - { url = "https://files.pythonhosted.org/packages/10/98/8085596e41f00b27dd6aa1e68413d1ddda7e605f34dd546833c61fddd709/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db", size = 215802, upload-time = "2026-03-15T18:50:05.859Z" }, - { url = "https://files.pythonhosted.org/packages/fd/ce/865e4e09b041bad659d682bbd98b47fb490b8e124f9398c9448065f64fee/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89", size = 207908, upload-time = "2026-03-15T18:50:07.676Z" }, - { url = "https://files.pythonhosted.org/packages/a8/54/8c757f1f7349262898c2f169e0d562b39dcb977503f18fdf0814e923db78/charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565", size = 194357, upload-time = "2026-03-15T18:50:09.327Z" }, - { url = "https://files.pythonhosted.org/packages/6f/29/e88f2fac9218907fc7a70722b393d1bbe8334c61fe9c46640dba349b6e66/charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9", size = 205610, upload-time = "2026-03-15T18:50:10.732Z" }, - { url = "https://files.pythonhosted.org/packages/4c/c5/21d7bb0cb415287178450171d130bed9d664211fdd59731ed2c34267b07d/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7", size = 203512, upload-time = "2026-03-15T18:50:12.535Z" }, - { url = "https://files.pythonhosted.org/packages/a4/be/ce52f3c7fdb35cc987ad38a53ebcef52eec498f4fb6c66ecfe62cfe57ba2/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550", size = 195398, upload-time = "2026-03-15T18:50:14.236Z" }, - { url = "https://files.pythonhosted.org/packages/81/a0/3ab5dd39d4859a3555e5dadfc8a9fa7f8352f8c183d1a65c90264517da0e/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0", size = 221772, upload-time = "2026-03-15T18:50:15.581Z" }, - { url = "https://files.pythonhosted.org/packages/04/6e/6a4e41a97ba6b2fa87f849c41e4d229449a586be85053c4d90135fe82d26/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8", size = 205759, upload-time = "2026-03-15T18:50:17.047Z" }, - { url = "https://files.pythonhosted.org/packages/db/3b/34a712a5ee64a6957bf355b01dc17b12de457638d436fdb05d01e463cd1c/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0", size = 216938, upload-time = "2026-03-15T18:50:18.44Z" }, - { url = "https://files.pythonhosted.org/packages/cb/05/5bd1e12da9ab18790af05c61aafd01a60f489778179b621ac2a305243c62/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b", size = 210138, upload-time = "2026-03-15T18:50:19.852Z" }, - { url = "https://files.pythonhosted.org/packages/bd/8e/3cb9e2d998ff6b21c0a1860343cb7b83eba9cdb66b91410e18fc4969d6ab/charset_normalizer-3.4.6-cp310-cp310-win32.whl", hash = "sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557", size = 144137, upload-time = "2026-03-15T18:50:21.505Z" }, - { url = "https://files.pythonhosted.org/packages/d8/8f/78f5489ffadb0db3eb7aff53d31c24531d33eb545f0c6f6567c25f49a5ff/charset_normalizer-3.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6", size = 154244, upload-time = "2026-03-15T18:50:22.81Z" }, - { url = "https://files.pythonhosted.org/packages/e4/74/e472659dffb0cadb2f411282d2d76c60da1fc94076d7fffed4ae8a93ec01/charset_normalizer-3.4.6-cp310-cp310-win_arm64.whl", hash = "sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058", size = 143312, upload-time = "2026-03-15T18:50:24.074Z" }, - { url = "https://files.pythonhosted.org/packages/62/28/ff6f234e628a2de61c458be2779cb182bc03f6eec12200d4a525bbfc9741/charset_normalizer-3.4.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e", size = 293582, upload-time = "2026-03-15T18:50:25.454Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b7/b1a117e5385cbdb3205f6055403c2a2a220c5ea80b8716c324eaf75c5c95/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9", size = 197240, upload-time = "2026-03-15T18:50:27.196Z" }, - { url = "https://files.pythonhosted.org/packages/a1/5f/2574f0f09f3c3bc1b2f992e20bce6546cb1f17e111c5be07308dc5427956/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d", size = 217363, upload-time = "2026-03-15T18:50:28.601Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d1/0ae20ad77bc949ddd39b51bf383b6ca932f2916074c95cad34ae465ab71f/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de", size = 212994, upload-time = "2026-03-15T18:50:30.102Z" }, - { url = "https://files.pythonhosted.org/packages/60/ac/3233d262a310c1b12633536a07cde5ddd16985e6e7e238e9f3f9423d8eb9/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73", size = 204697, upload-time = "2026-03-15T18:50:31.654Z" }, - { url = "https://files.pythonhosted.org/packages/25/3c/8a18fc411f085b82303cfb7154eed5bd49c77035eb7608d049468b53f87c/charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c", size = 191673, upload-time = "2026-03-15T18:50:33.433Z" }, - { url = "https://files.pythonhosted.org/packages/ff/a7/11cfe61d6c5c5c7438d6ba40919d0306ed83c9ab957f3d4da2277ff67836/charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc", size = 201120, upload-time = "2026-03-15T18:50:35.105Z" }, - { url = "https://files.pythonhosted.org/packages/b5/10/cf491fa1abd47c02f69687046b896c950b92b6cd7337a27e6548adbec8e4/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f", size = 200911, upload-time = "2026-03-15T18:50:36.819Z" }, - { url = "https://files.pythonhosted.org/packages/28/70/039796160b48b18ed466fde0af84c1b090c4e288fae26cd674ad04a2d703/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef", size = 192516, upload-time = "2026-03-15T18:50:38.228Z" }, - { url = "https://files.pythonhosted.org/packages/ff/34/c56f3223393d6ff3124b9e78f7de738047c2d6bc40a4f16ac0c9d7a1cb3c/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398", size = 218795, upload-time = "2026-03-15T18:50:39.664Z" }, - { url = "https://files.pythonhosted.org/packages/e8/3b/ce2d4f86c5282191a041fdc5a4ce18f1c6bd40a5bd1f74cf8625f08d51c1/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e", size = 201833, upload-time = "2026-03-15T18:50:41.552Z" }, - { url = "https://files.pythonhosted.org/packages/3b/9b/b6a9f76b0fd7c5b5ec58b228ff7e85095370282150f0bd50b3126f5506d6/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed", size = 213920, upload-time = "2026-03-15T18:50:43.33Z" }, - { url = "https://files.pythonhosted.org/packages/ae/98/7bc23513a33d8172365ed30ee3a3b3fe1ece14a395e5fc94129541fc6003/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021", size = 206951, upload-time = "2026-03-15T18:50:44.789Z" }, - { url = "https://files.pythonhosted.org/packages/32/73/c0b86f3d1458468e11aec870e6b3feac931facbe105a894b552b0e518e79/charset_normalizer-3.4.6-cp311-cp311-win32.whl", hash = "sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e", size = 143703, upload-time = "2026-03-15T18:50:46.103Z" }, - { url = "https://files.pythonhosted.org/packages/c6/e3/76f2facfe8eddee0bbd38d2594e709033338eae44ebf1738bcefe0a06185/charset_normalizer-3.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4", size = 153857, upload-time = "2026-03-15T18:50:47.563Z" }, - { url = "https://files.pythonhosted.org/packages/e2/dc/9abe19c9b27e6cd3636036b9d1b387b78c40dedbf0b47f9366737684b4b0/charset_normalizer-3.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316", size = 142751, upload-time = "2026-03-15T18:50:49.234Z" }, - { url = "https://files.pythonhosted.org/packages/e5/62/c0815c992c9545347aeea7859b50dc9044d147e2e7278329c6e02ac9a616/charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab", size = 295154, upload-time = "2026-03-15T18:50:50.88Z" }, - { url = "https://files.pythonhosted.org/packages/a8/37/bdca6613c2e3c58c7421891d80cc3efa1d32e882f7c4a7ee6039c3fc951a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21", size = 199191, upload-time = "2026-03-15T18:50:52.658Z" }, - { url = "https://files.pythonhosted.org/packages/6c/92/9934d1bbd69f7f398b38c5dae1cbf9cc672e7c34a4adf7b17c0a9c17d15d/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2", size = 218674, upload-time = "2026-03-15T18:50:54.102Z" }, - { url = "https://files.pythonhosted.org/packages/af/90/25f6ab406659286be929fd89ab0e78e38aa183fc374e03aa3c12d730af8a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff", size = 215259, upload-time = "2026-03-15T18:50:55.616Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ef/79a463eb0fff7f96afa04c1d4c51f8fc85426f918db467854bfb6a569ce3/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5", size = 207276, upload-time = "2026-03-15T18:50:57.054Z" }, - { url = "https://files.pythonhosted.org/packages/f7/72/d0426afec4b71dc159fa6b4e68f868cd5a3ecd918fec5813a15d292a7d10/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0", size = 195161, upload-time = "2026-03-15T18:50:58.686Z" }, - { url = "https://files.pythonhosted.org/packages/bf/18/c82b06a68bfcb6ce55e508225d210c7e6a4ea122bfc0748892f3dc4e8e11/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a", size = 203452, upload-time = "2026-03-15T18:51:00.196Z" }, - { url = "https://files.pythonhosted.org/packages/44/d6/0c25979b92f8adafdbb946160348d8d44aa60ce99afdc27df524379875cb/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2", size = 202272, upload-time = "2026-03-15T18:51:01.703Z" }, - { url = "https://files.pythonhosted.org/packages/2e/3d/7fea3e8fe84136bebbac715dd1221cc25c173c57a699c030ab9b8900cbb7/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5", size = 195622, upload-time = "2026-03-15T18:51:03.526Z" }, - { url = "https://files.pythonhosted.org/packages/57/8a/d6f7fd5cb96c58ef2f681424fbca01264461336d2a7fc875e4446b1f1346/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6", size = 220056, upload-time = "2026-03-15T18:51:05.269Z" }, - { url = "https://files.pythonhosted.org/packages/16/50/478cdda782c8c9c3fb5da3cc72dd7f331f031e7f1363a893cdd6ca0f8de0/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d", size = 203751, upload-time = "2026-03-15T18:51:06.858Z" }, - { url = "https://files.pythonhosted.org/packages/75/fc/cc2fcac943939c8e4d8791abfa139f685e5150cae9f94b60f12520feaa9b/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2", size = 216563, upload-time = "2026-03-15T18:51:08.564Z" }, - { url = "https://files.pythonhosted.org/packages/a8/b7/a4add1d9a5f68f3d037261aecca83abdb0ab15960a3591d340e829b37298/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923", size = 209265, upload-time = "2026-03-15T18:51:10.312Z" }, - { url = "https://files.pythonhosted.org/packages/6c/18/c094561b5d64a24277707698e54b7f67bd17a4f857bbfbb1072bba07c8bf/charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4", size = 144229, upload-time = "2026-03-15T18:51:11.694Z" }, - { url = "https://files.pythonhosted.org/packages/ab/20/0567efb3a8fd481b8f34f739ebddc098ed062a59fed41a8d193a61939e8f/charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb", size = 154277, upload-time = "2026-03-15T18:51:13.004Z" }, - { url = "https://files.pythonhosted.org/packages/15/57/28d79b44b51933119e21f65479d0864a8d5893e494cf5daab15df0247c17/charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4", size = 142817, upload-time = "2026-03-15T18:51:14.408Z" }, - { url = "https://files.pythonhosted.org/packages/1e/1d/4fdabeef4e231153b6ed7567602f3b68265ec4e5b76d6024cf647d43d981/charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f", size = 294823, upload-time = "2026-03-15T18:51:15.755Z" }, - { url = "https://files.pythonhosted.org/packages/47/7b/20e809b89c69d37be748d98e84dce6820bf663cf19cf6b942c951a3e8f41/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843", size = 198527, upload-time = "2026-03-15T18:51:17.177Z" }, - { url = "https://files.pythonhosted.org/packages/37/a6/4f8d27527d59c039dce6f7622593cdcd3d70a8504d87d09eb11e9fdc6062/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf", size = 218388, upload-time = "2026-03-15T18:51:18.934Z" }, - { url = "https://files.pythonhosted.org/packages/f6/9b/4770ccb3e491a9bacf1c46cc8b812214fe367c86a96353ccc6daf87b01ec/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8", size = 214563, upload-time = "2026-03-15T18:51:20.374Z" }, - { url = "https://files.pythonhosted.org/packages/2b/58/a199d245894b12db0b957d627516c78e055adc3a0d978bc7f65ddaf7c399/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9", size = 206587, upload-time = "2026-03-15T18:51:21.807Z" }, - { url = "https://files.pythonhosted.org/packages/7e/70/3def227f1ec56f5c69dfc8392b8bd63b11a18ca8178d9211d7cc5e5e4f27/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88", size = 194724, upload-time = "2026-03-15T18:51:23.508Z" }, - { url = "https://files.pythonhosted.org/packages/58/ab/9318352e220c05efd31c2779a23b50969dc94b985a2efa643ed9077bfca5/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84", size = 202956, upload-time = "2026-03-15T18:51:25.239Z" }, - { url = "https://files.pythonhosted.org/packages/75/13/f3550a3ac25b70f87ac98c40d3199a8503676c2f1620efbf8d42095cfc40/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd", size = 201923, upload-time = "2026-03-15T18:51:26.682Z" }, - { url = "https://files.pythonhosted.org/packages/1b/db/c5c643b912740b45e8eec21de1bbab8e7fc085944d37e1e709d3dcd9d72f/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c", size = 195366, upload-time = "2026-03-15T18:51:28.129Z" }, - { url = "https://files.pythonhosted.org/packages/5a/67/3b1c62744f9b2448443e0eb160d8b001c849ec3fef591e012eda6484787c/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194", size = 219752, upload-time = "2026-03-15T18:51:29.556Z" }, - { url = "https://files.pythonhosted.org/packages/f6/98/32ffbaf7f0366ffb0445930b87d103f6b406bc2c271563644bde8a2b1093/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc", size = 203296, upload-time = "2026-03-15T18:51:30.921Z" }, - { url = "https://files.pythonhosted.org/packages/41/12/5d308c1bbe60cabb0c5ef511574a647067e2a1f631bc8634fcafaccd8293/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f", size = 215956, upload-time = "2026-03-15T18:51:32.399Z" }, - { url = "https://files.pythonhosted.org/packages/53/e9/5f85f6c5e20669dbe56b165c67b0260547dea97dba7e187938833d791687/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2", size = 208652, upload-time = "2026-03-15T18:51:34.214Z" }, - { url = "https://files.pythonhosted.org/packages/f1/11/897052ea6af56df3eef3ca94edafee410ca699ca0c7b87960ad19932c55e/charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d", size = 143940, upload-time = "2026-03-15T18:51:36.15Z" }, - { url = "https://files.pythonhosted.org/packages/a1/5c/724b6b363603e419829f561c854b87ed7c7e31231a7908708ac086cdf3e2/charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389", size = 154101, upload-time = "2026-03-15T18:51:37.876Z" }, - { url = "https://files.pythonhosted.org/packages/01/a5/7abf15b4c0968e47020f9ca0935fb3274deb87cb288cd187cad92e8cdffd/charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f", size = 143109, upload-time = "2026-03-15T18:51:39.565Z" }, - { url = "https://files.pythonhosted.org/packages/25/6f/ffe1e1259f384594063ea1869bfb6be5cdb8bc81020fc36c3636bc8302a1/charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8", size = 294458, upload-time = "2026-03-15T18:51:41.134Z" }, - { url = "https://files.pythonhosted.org/packages/56/60/09bb6c13a8c1016c2ed5c6a6488e4ffef506461aa5161662bd7636936fb1/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421", size = 199277, upload-time = "2026-03-15T18:51:42.953Z" }, - { url = "https://files.pythonhosted.org/packages/00/50/dcfbb72a5138bbefdc3332e8d81a23494bf67998b4b100703fd15fa52d81/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2", size = 218758, upload-time = "2026-03-15T18:51:44.339Z" }, - { url = "https://files.pythonhosted.org/packages/03/b3/d79a9a191bb75f5aa81f3aaaa387ef29ce7cb7a9e5074ba8ea095cc073c2/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30", size = 215299, upload-time = "2026-03-15T18:51:45.871Z" }, - { url = "https://files.pythonhosted.org/packages/76/7e/bc8911719f7084f72fd545f647601ea3532363927f807d296a8c88a62c0d/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db", size = 206811, upload-time = "2026-03-15T18:51:47.308Z" }, - { url = "https://files.pythonhosted.org/packages/e2/40/c430b969d41dda0c465aa36cc7c2c068afb67177bef50905ac371b28ccc7/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8", size = 193706, upload-time = "2026-03-15T18:51:48.849Z" }, - { url = "https://files.pythonhosted.org/packages/48/15/e35e0590af254f7df984de1323640ef375df5761f615b6225ba8deb9799a/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815", size = 202706, upload-time = "2026-03-15T18:51:50.257Z" }, - { url = "https://files.pythonhosted.org/packages/5e/bd/f736f7b9cc5e93a18b794a50346bb16fbfd6b37f99e8f306f7951d27c17c/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a", size = 202497, upload-time = "2026-03-15T18:51:52.012Z" }, - { url = "https://files.pythonhosted.org/packages/9d/ba/2cc9e3e7dfdf7760a6ed8da7446d22536f3d0ce114ac63dee2a5a3599e62/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43", size = 193511, upload-time = "2026-03-15T18:51:53.723Z" }, - { url = "https://files.pythonhosted.org/packages/9e/cb/5be49b5f776e5613be07298c80e1b02a2d900f7a7de807230595c85a8b2e/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0", size = 220133, upload-time = "2026-03-15T18:51:55.333Z" }, - { url = "https://files.pythonhosted.org/packages/83/43/99f1b5dad345accb322c80c7821071554f791a95ee50c1c90041c157ae99/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1", size = 203035, upload-time = "2026-03-15T18:51:56.736Z" }, - { url = "https://files.pythonhosted.org/packages/87/9a/62c2cb6a531483b55dddff1a68b3d891a8b498f3ca555fbcf2978e804d9d/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f", size = 216321, upload-time = "2026-03-15T18:51:58.17Z" }, - { url = "https://files.pythonhosted.org/packages/6e/79/94a010ff81e3aec7c293eb82c28f930918e517bc144c9906a060844462eb/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815", size = 208973, upload-time = "2026-03-15T18:51:59.998Z" }, - { url = "https://files.pythonhosted.org/packages/2a/57/4ecff6d4ec8585342f0c71bc03efaa99cb7468f7c91a57b105bcd561cea8/charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d", size = 144610, upload-time = "2026-03-15T18:52:02.213Z" }, - { url = "https://files.pythonhosted.org/packages/80/94/8434a02d9d7f168c25767c64671fead8d599744a05d6a6c877144c754246/charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f", size = 154962, upload-time = "2026-03-15T18:52:03.658Z" }, - { url = "https://files.pythonhosted.org/packages/46/4c/48f2cdbfd923026503dfd67ccea45c94fd8fe988d9056b468579c66ed62b/charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e", size = 143595, upload-time = "2026-03-15T18:52:05.123Z" }, - { url = "https://files.pythonhosted.org/packages/31/93/8878be7569f87b14f1d52032946131bcb6ebbd8af3e20446bc04053dc3f1/charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866", size = 314828, upload-time = "2026-03-15T18:52:06.831Z" }, - { url = "https://files.pythonhosted.org/packages/06/b6/fae511ca98aac69ecc35cde828b0a3d146325dd03d99655ad38fc2cc3293/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc", size = 208138, upload-time = "2026-03-15T18:52:08.239Z" }, - { url = "https://files.pythonhosted.org/packages/54/57/64caf6e1bf07274a1e0b7c160a55ee9e8c9ec32c46846ce59b9c333f7008/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e", size = 224679, upload-time = "2026-03-15T18:52:10.043Z" }, - { url = "https://files.pythonhosted.org/packages/aa/cb/9ff5a25b9273ef160861b41f6937f86fae18b0792fe0a8e75e06acb08f1d/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077", size = 223475, upload-time = "2026-03-15T18:52:11.854Z" }, - { url = "https://files.pythonhosted.org/packages/fc/97/440635fc093b8d7347502a377031f9605a1039c958f3cd18dcacffb37743/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f", size = 215230, upload-time = "2026-03-15T18:52:13.325Z" }, - { url = "https://files.pythonhosted.org/packages/cd/24/afff630feb571a13f07c8539fbb502d2ab494019492aaffc78ef41f1d1d0/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e", size = 199045, upload-time = "2026-03-15T18:52:14.752Z" }, - { url = "https://files.pythonhosted.org/packages/e5/17/d1399ecdaf7e0498c327433e7eefdd862b41236a7e484355b8e0e5ebd64b/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484", size = 211658, upload-time = "2026-03-15T18:52:16.278Z" }, - { url = "https://files.pythonhosted.org/packages/b5/38/16baa0affb957b3d880e5ac2144caf3f9d7de7bc4a91842e447fbb5e8b67/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7", size = 210769, upload-time = "2026-03-15T18:52:17.782Z" }, - { url = "https://files.pythonhosted.org/packages/05/34/c531bc6ac4c21da9ddfddb3107be2287188b3ea4b53b70fc58f2a77ac8d8/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff", size = 201328, upload-time = "2026-03-15T18:52:19.553Z" }, - { url = "https://files.pythonhosted.org/packages/fa/73/a5a1e9ca5f234519c1953608a03fe109c306b97fdfb25f09182babad51a7/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e", size = 225302, upload-time = "2026-03-15T18:52:21.043Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f6/cd782923d112d296294dea4bcc7af5a7ae0f86ab79f8fefbda5526b6cfc0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659", size = 211127, upload-time = "2026-03-15T18:52:22.491Z" }, - { url = "https://files.pythonhosted.org/packages/0e/c5/0b6898950627af7d6103a449b22320372c24c6feda91aa24e201a478d161/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602", size = 222840, upload-time = "2026-03-15T18:52:24.113Z" }, - { url = "https://files.pythonhosted.org/packages/7d/25/c4bba773bef442cbdc06111d40daa3de5050a676fa26e85090fc54dd12f0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407", size = 216890, upload-time = "2026-03-15T18:52:25.541Z" }, - { url = "https://files.pythonhosted.org/packages/35/1a/05dacadb0978da72ee287b0143097db12f2e7e8d3ffc4647da07a383b0b7/charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579", size = 155379, upload-time = "2026-03-15T18:52:27.05Z" }, - { url = "https://files.pythonhosted.org/packages/5d/7a/d269d834cb3a76291651256f3b9a5945e81d0a49ab9f4a498964e83c0416/charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4", size = 169043, upload-time = "2026-03-15T18:52:28.502Z" }, - { url = "https://files.pythonhosted.org/packages/23/06/28b29fba521a37a8932c6a84192175c34d49f84a6d4773fa63d05f9aff22/charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c", size = 148523, upload-time = "2026-03-15T18:52:29.956Z" }, - { url = "https://files.pythonhosted.org/packages/2a/68/687187c7e26cb24ccbd88e5069f5ef00eba804d36dde11d99aad0838ab45/charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69", size = 61455, upload-time = "2026-03-15T18:53:23.833Z" }, + { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" }, + { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", size = 209329, upload-time = "2026-04-02T09:25:42.354Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", size = 231230, upload-time = "2026-04-02T09:25:44.281Z" }, + { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", size = 225890, upload-time = "2026-04-02T09:25:45.475Z" }, + { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", size = 216930, upload-time = "2026-04-02T09:25:46.58Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", size = 202109, upload-time = "2026-04-02T09:25:48.031Z" }, + { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", size = 214684, upload-time = "2026-04-02T09:25:49.245Z" }, + { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", size = 212785, upload-time = "2026-04-02T09:25:50.671Z" }, + { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", size = 203055, upload-time = "2026-04-02T09:25:51.802Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", size = 232502, upload-time = "2026-04-02T09:25:53.388Z" }, + { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", size = 214295, upload-time = "2026-04-02T09:25:54.765Z" }, + { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", size = 227145, upload-time = "2026-04-02T09:25:55.904Z" }, + { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", size = 218884, upload-time = "2026-04-02T09:25:57.074Z" }, + { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", size = 148343, upload-time = "2026-04-02T09:25:58.199Z" }, + { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", size = 159174, upload-time = "2026-04-02T09:25:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", size = 147805, upload-time = "2026-04-02T09:26:00.756Z" }, + { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" }, + { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" }, + { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" }, + { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" }, + { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" }, + { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" }, + { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" }, + { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" }, + { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" }, + { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" }, + { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" }, + { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" }, + { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" }, + { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" }, + { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" }, + { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" }, + { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" }, + { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" }, + { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" }, + { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" }, + { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" }, + { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" }, + { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" }, + { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" }, + { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" }, + { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" }, + { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" }, + { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" }, + { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" }, + { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" }, + { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" }, + { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" }, + { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" }, + { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" }, + { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" }, + { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" }, + { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" }, + { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" }, + { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" }, + { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" }, + { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" }, + { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" }, + { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" }, + { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" }, + { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" }, + { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" }, + { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" }, + { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" }, + { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" }, + { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" }, + { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" }, + { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" }, + { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" }, + { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" }, + { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" }, + { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" }, + { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" }, + { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" }, ] [[package]] @@ -205,115 +205,115 @@ wheels = [ [[package]] name = "coverage" -version = "7.13.5" +version = "7.14.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9d/e0/70553e3000e345daff267cec284ce4cbf3fc141b6da229ac52775b5428f1/coverage-7.13.5.tar.gz", hash = "sha256:c81f6515c4c40141f83f502b07bbfa5c240ba25bbe73da7b33f1e5b6120ff179", size = 915967, upload-time = "2026-03-17T10:33:18.341Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/33/e8c48488c29a73fd089f9d71f9653c1be7478f2ad6b5bc870db11a55d23d/coverage-7.13.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0723d2c96324561b9aa76fb982406e11d93cdb388a7a7da2b16e04719cf7ca5", size = 219255, upload-time = "2026-03-17T10:29:51.081Z" }, - { url = "https://files.pythonhosted.org/packages/da/bd/b0ebe9f677d7f4b74a3e115eec7ddd4bcf892074963a00d91e8b164a6386/coverage-7.13.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:52f444e86475992506b32d4e5ca55c24fc88d73bcbda0e9745095b28ef4dc0cf", size = 219772, upload-time = "2026-03-17T10:29:52.867Z" }, - { url = "https://files.pythonhosted.org/packages/48/cc/5cb9502f4e01972f54eedd48218bb203fe81e294be606a2bc93970208013/coverage-7.13.5-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:704de6328e3d612a8f6c07000a878ff38181ec3263d5a11da1db294fa6a9bdf8", size = 246532, upload-time = "2026-03-17T10:29:54.688Z" }, - { url = "https://files.pythonhosted.org/packages/7d/d8/3217636d86c7e7b12e126e4f30ef1581047da73140614523af7495ed5f2d/coverage-7.13.5-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a1a6d79a14e1ec1832cabc833898636ad5f3754a678ef8bb4908515208bf84f4", size = 248333, upload-time = "2026-03-17T10:29:56.221Z" }, - { url = "https://files.pythonhosted.org/packages/2b/30/2002ac6729ba2d4357438e2ed3c447ad8562866c8c63fc16f6dfc33afe56/coverage-7.13.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:79060214983769c7ba3f0cee10b54c97609dca4d478fa1aa32b914480fd5738d", size = 250211, upload-time = "2026-03-17T10:29:57.938Z" }, - { url = "https://files.pythonhosted.org/packages/6c/85/552496626d6b9359eb0e2f86f920037c9cbfba09b24d914c6e1528155f7d/coverage-7.13.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:356e76b46783a98c2a2fe81ec79df4883a1e62895ea952968fb253c114e7f930", size = 252125, upload-time = "2026-03-17T10:29:59.388Z" }, - { url = "https://files.pythonhosted.org/packages/44/21/40256eabdcbccdb6acf6b381b3016a154399a75fe39d406f790ae84d1f3c/coverage-7.13.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0cef0cdec915d11254a7f549c1170afecce708d30610c6abdded1f74e581666d", size = 247219, upload-time = "2026-03-17T10:30:01.199Z" }, - { url = "https://files.pythonhosted.org/packages/b1/e8/96e2a6c3f21a0ea77d7830b254a1542d0328acc8d7bdf6a284ba7e529f77/coverage-7.13.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:dc022073d063b25a402454e5712ef9e007113e3a676b96c5f29b2bda29352f40", size = 248248, upload-time = "2026-03-17T10:30:03.317Z" }, - { url = "https://files.pythonhosted.org/packages/da/ba/8477f549e554827da390ec659f3c38e4b6d95470f4daafc2d8ff94eaa9c2/coverage-7.13.5-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9b74db26dfea4f4e50d48a4602207cd1e78be33182bc9cbf22da94f332f99878", size = 246254, upload-time = "2026-03-17T10:30:04.832Z" }, - { url = "https://files.pythonhosted.org/packages/55/59/bc22aef0e6aa179d5b1b001e8b3654785e9adf27ef24c93dc4228ebd5d68/coverage-7.13.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ad146744ca4fd09b50c482650e3c1b1f4dfa1d4792e0a04a369c7f23336f0400", size = 250067, upload-time = "2026-03-17T10:30:06.535Z" }, - { url = "https://files.pythonhosted.org/packages/de/1b/c6a023a160806a5137dca53468fd97530d6acad24a22003b1578a9c2e429/coverage-7.13.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:c555b48be1853fe3997c11c4bd521cdd9a9612352de01fa4508f16ec341e6fe0", size = 246521, upload-time = "2026-03-17T10:30:08.486Z" }, - { url = "https://files.pythonhosted.org/packages/2d/3f/3532c85a55aa2f899fa17c186f831cfa1aa434d88ff792a709636f64130e/coverage-7.13.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7034b5c56a58ae5e85f23949d52c14aca2cfc6848a31764995b7de88f13a1ea0", size = 247126, upload-time = "2026-03-17T10:30:09.966Z" }, - { url = "https://files.pythonhosted.org/packages/aa/2e/b9d56af4a24ef45dfbcda88e06870cb7d57b2b0bfa3a888d79b4c8debd76/coverage-7.13.5-cp310-cp310-win32.whl", hash = "sha256:eb7fdf1ef130660e7415e0253a01a7d5a88c9c4d158bcf75cbbd922fd65a5b58", size = 221860, upload-time = "2026-03-17T10:30:11.393Z" }, - { url = "https://files.pythonhosted.org/packages/9f/cc/d938417e7a4d7f0433ad4edee8bb2acdc60dc7ac5af19e2a07a048ecbee3/coverage-7.13.5-cp310-cp310-win_amd64.whl", hash = "sha256:3e1bb5f6c78feeb1be3475789b14a0f0a5b47d505bfc7267126ccbd50289999e", size = 222788, upload-time = "2026-03-17T10:30:12.886Z" }, - { url = "https://files.pythonhosted.org/packages/4b/37/d24c8f8220ff07b839b2c043ea4903a33b0f455abe673ae3c03bbdb7f212/coverage-7.13.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66a80c616f80181f4d643b0f9e709d97bcea413ecd9631e1dedc7401c8e6695d", size = 219381, upload-time = "2026-03-17T10:30:14.68Z" }, - { url = "https://files.pythonhosted.org/packages/35/8b/cd129b0ca4afe886a6ce9d183c44d8301acbd4ef248622e7c49a23145605/coverage-7.13.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:145ede53ccbafb297c1c9287f788d1bc3efd6c900da23bf6931b09eafc931587", size = 219880, upload-time = "2026-03-17T10:30:16.231Z" }, - { url = "https://files.pythonhosted.org/packages/55/2f/e0e5b237bffdb5d6c530ce87cc1d413a5b7d7dfd60fb067ad6d254c35c76/coverage-7.13.5-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:0672854dc733c342fa3e957e0605256d2bf5934feeac328da9e0b5449634a642", size = 250303, upload-time = "2026-03-17T10:30:17.748Z" }, - { url = "https://files.pythonhosted.org/packages/92/be/b1afb692be85b947f3401375851484496134c5554e67e822c35f28bf2fbc/coverage-7.13.5-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec10e2a42b41c923c2209b846126c6582db5e43a33157e9870ba9fb70dc7854b", size = 252218, upload-time = "2026-03-17T10:30:19.804Z" }, - { url = "https://files.pythonhosted.org/packages/da/69/2f47bb6fa1b8d1e3e5d0c4be8ccb4313c63d742476a619418f85740d597b/coverage-7.13.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be3d4bbad9d4b037791794ddeedd7d64a56f5933a2c1373e18e9e568b9141686", size = 254326, upload-time = "2026-03-17T10:30:21.321Z" }, - { url = "https://files.pythonhosted.org/packages/d5/d0/79db81da58965bd29dabc8f4ad2a2af70611a57cba9d1ec006f072f30a54/coverage-7.13.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:4d2afbc5cc54d286bfb54541aa50b64cdb07a718227168c87b9e2fb8f25e1743", size = 256267, upload-time = "2026-03-17T10:30:23.094Z" }, - { url = "https://files.pythonhosted.org/packages/e5/32/d0d7cc8168f91ddab44c0ce4806b969df5f5fdfdbb568eaca2dbc2a04936/coverage-7.13.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3ad050321264c49c2fa67bb599100456fc51d004b82534f379d16445da40fb75", size = 250430, upload-time = "2026-03-17T10:30:25.311Z" }, - { url = "https://files.pythonhosted.org/packages/4d/06/a055311d891ddbe231cd69fdd20ea4be6e3603ffebddf8704b8ca8e10a3c/coverage-7.13.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7300c8a6d13335b29bb76d7651c66af6bd8658517c43499f110ddc6717bfc209", size = 252017, upload-time = "2026-03-17T10:30:27.284Z" }, - { url = "https://files.pythonhosted.org/packages/d6/f6/d0fd2d21e29a657b5f77a2fe7082e1568158340dceb941954f776dce1b7b/coverage-7.13.5-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:eb07647a5738b89baab047f14edd18ded523de60f3b30e75c2acc826f79c839a", size = 250080, upload-time = "2026-03-17T10:30:29.481Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ab/0d7fb2efc2e9a5eb7ddcc6e722f834a69b454b7e6e5888c3a8567ecffb31/coverage-7.13.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:9adb6688e3b53adffefd4a52d72cbd8b02602bfb8f74dcd862337182fd4d1a4e", size = 253843, upload-time = "2026-03-17T10:30:31.301Z" }, - { url = "https://files.pythonhosted.org/packages/ba/6f/7467b917bbf5408610178f62a49c0ed4377bb16c1657f689cc61470da8ce/coverage-7.13.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:7c8d4bc913dd70b93488d6c496c77f3aff5ea99a07e36a18f865bca55adef8bd", size = 249802, upload-time = "2026-03-17T10:30:33.358Z" }, - { url = "https://files.pythonhosted.org/packages/75/2c/1172fb689df92135f5bfbbd69fc83017a76d24ea2e2f3a1154007e2fb9f8/coverage-7.13.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0e3c426ffc4cd952f54ee9ffbdd10345709ecc78a3ecfd796a57236bfad0b9b8", size = 250707, upload-time = "2026-03-17T10:30:35.2Z" }, - { url = "https://files.pythonhosted.org/packages/67/21/9ac389377380a07884e3b48ba7a620fcd9dbfaf1d40565facdc6b36ec9ef/coverage-7.13.5-cp311-cp311-win32.whl", hash = "sha256:259b69bb83ad9894c4b25be2528139eecba9a82646ebdda2d9db1ba28424a6bf", size = 221880, upload-time = "2026-03-17T10:30:36.775Z" }, - { url = "https://files.pythonhosted.org/packages/af/7f/4cd8a92531253f9d7c1bbecd9fa1b472907fb54446ca768c59b531248dc5/coverage-7.13.5-cp311-cp311-win_amd64.whl", hash = "sha256:258354455f4e86e3e9d0d17571d522e13b4e1e19bf0f8596bcf9476d61e7d8a9", size = 222816, upload-time = "2026-03-17T10:30:38.891Z" }, - { url = "https://files.pythonhosted.org/packages/12/a6/1d3f6155fb0010ca68eba7fe48ca6c9da7385058b77a95848710ecf189b1/coverage-7.13.5-cp311-cp311-win_arm64.whl", hash = "sha256:bff95879c33ec8da99fc9b6fe345ddb5be6414b41d6d1ad1c8f188d26f36e028", size = 221483, upload-time = "2026-03-17T10:30:40.463Z" }, - { url = "https://files.pythonhosted.org/packages/a0/c3/a396306ba7db865bf96fc1fb3b7fd29bcbf3d829df642e77b13555163cd6/coverage-7.13.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:460cf0114c5016fa841214ff5564aa4864f11948da9440bc97e21ad1f4ba1e01", size = 219554, upload-time = "2026-03-17T10:30:42.208Z" }, - { url = "https://files.pythonhosted.org/packages/a6/16/a68a19e5384e93f811dccc51034b1fd0b865841c390e3c931dcc4699e035/coverage-7.13.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e223ce4b4ed47f065bfb123687686512e37629be25cc63728557ae7db261422", size = 219908, upload-time = "2026-03-17T10:30:43.906Z" }, - { url = "https://files.pythonhosted.org/packages/29/72/20b917c6793af3a5ceb7fb9c50033f3ec7865f2911a1416b34a7cfa0813b/coverage-7.13.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6e3370441f4513c6252bf042b9c36d22491142385049243253c7e48398a15a9f", size = 251419, upload-time = "2026-03-17T10:30:45.545Z" }, - { url = "https://files.pythonhosted.org/packages/8c/49/cd14b789536ac6a4778c453c6a2338bc0a2fb60c5a5a41b4008328b9acc1/coverage-7.13.5-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:03ccc709a17a1de074fb1d11f217342fb0d2b1582ed544f554fc9fc3f07e95f5", size = 254159, upload-time = "2026-03-17T10:30:47.204Z" }, - { url = "https://files.pythonhosted.org/packages/9d/00/7b0edcfe64e2ed4c0340dac14a52ad0f4c9bd0b8b5e531af7d55b703db7c/coverage-7.13.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f4818d065964db3c1c66dc0fbdac5ac692ecbc875555e13374fdbe7eedb4376", size = 255270, upload-time = "2026-03-17T10:30:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/93/89/7ffc4ba0f5d0a55c1e84ea7cee39c9fc06af7b170513d83fbf3bbefce280/coverage-7.13.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:012d5319e66e9d5a218834642d6c35d265515a62f01157a45bcc036ecf947256", size = 257538, upload-time = "2026-03-17T10:30:50.77Z" }, - { url = "https://files.pythonhosted.org/packages/81/bd/73ddf85f93f7e6fa83e77ccecb6162d9415c79007b4bc124008a4995e4a7/coverage-7.13.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8dd02af98971bdb956363e4827d34425cb3df19ee550ef92855b0acb9c7ce51c", size = 251821, upload-time = "2026-03-17T10:30:52.5Z" }, - { url = "https://files.pythonhosted.org/packages/a0/81/278aff4e8dec4926a0bcb9486320752811f543a3ce5b602cc7a29978d073/coverage-7.13.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f08fd75c50a760c7eb068ae823777268daaf16a80b918fa58eea888f8e3919f5", size = 253191, upload-time = "2026-03-17T10:30:54.543Z" }, - { url = "https://files.pythonhosted.org/packages/70/ee/fe1621488e2e0a58d7e94c4800f0d96f79671553488d401a612bebae324b/coverage-7.13.5-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:843ea8643cf967d1ac7e8ecd4bb00c99135adf4816c0c0593fdcc47b597fcf09", size = 251337, upload-time = "2026-03-17T10:30:56.663Z" }, - { url = "https://files.pythonhosted.org/packages/37/a6/f79fb37aa104b562207cc23cb5711ab6793608e246cae1e93f26b2236ed9/coverage-7.13.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:9d44d7aa963820b1b971dbecd90bfe5fe8f81cff79787eb6cca15750bd2f79b9", size = 255404, upload-time = "2026-03-17T10:30:58.427Z" }, - { url = "https://files.pythonhosted.org/packages/75/f0/ed15262a58ec81ce457ceb717b7f78752a1713556b19081b76e90896e8d4/coverage-7.13.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:7132bed4bd7b836200c591410ae7d97bf7ae8be6fc87d160b2bd881df929e7bf", size = 250903, upload-time = "2026-03-17T10:31:00.093Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e9/9129958f20e7e9d4d56d51d42ccf708d15cac355ff4ac6e736e97a9393d2/coverage-7.13.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a698e363641b98843c517817db75373c83254781426e94ada3197cabbc2c919c", size = 252780, upload-time = "2026-03-17T10:31:01.916Z" }, - { url = "https://files.pythonhosted.org/packages/a4/d7/0ad9b15812d81272db94379fe4c6df8fd17781cc7671fdfa30c76ba5ff7b/coverage-7.13.5-cp312-cp312-win32.whl", hash = "sha256:bdba0a6b8812e8c7df002d908a9a2ea3c36e92611b5708633c50869e6d922fdf", size = 222093, upload-time = "2026-03-17T10:31:03.642Z" }, - { url = "https://files.pythonhosted.org/packages/29/3d/821a9a5799fac2556bcf0bd37a70d1d11fa9e49784b6d22e92e8b2f85f18/coverage-7.13.5-cp312-cp312-win_amd64.whl", hash = "sha256:d2c87e0c473a10bffe991502eac389220533024c8082ec1ce849f4218dded810", size = 222900, upload-time = "2026-03-17T10:31:05.651Z" }, - { url = "https://files.pythonhosted.org/packages/d4/fa/2238c2ad08e35cf4f020ea721f717e09ec3152aea75d191a7faf3ef009a8/coverage-7.13.5-cp312-cp312-win_arm64.whl", hash = "sha256:bf69236a9a81bdca3bff53796237aab096cdbf8d78a66ad61e992d9dac7eb2de", size = 221515, upload-time = "2026-03-17T10:31:07.293Z" }, - { url = "https://files.pythonhosted.org/packages/74/8c/74fedc9663dcf168b0a059d4ea756ecae4da77a489048f94b5f512a8d0b3/coverage-7.13.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ec4af212df513e399cf11610cc27063f1586419e814755ab362e50a85ea69c1", size = 219576, upload-time = "2026-03-17T10:31:09.045Z" }, - { url = "https://files.pythonhosted.org/packages/0c/c9/44fb661c55062f0818a6ffd2685c67aa30816200d5f2817543717d4b92eb/coverage-7.13.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:941617e518602e2d64942c88ec8499f7fbd49d3f6c4327d3a71d43a1973032f3", size = 219942, upload-time = "2026-03-17T10:31:10.708Z" }, - { url = "https://files.pythonhosted.org/packages/5f/13/93419671cee82b780bab7ea96b67c8ef448f5f295f36bf5031154ec9a790/coverage-7.13.5-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:da305e9937617ee95c2e39d8ff9f040e0487cbf1ac174f777ed5eddd7a7c1f26", size = 250935, upload-time = "2026-03-17T10:31:12.392Z" }, - { url = "https://files.pythonhosted.org/packages/ac/68/1666e3a4462f8202d836920114fa7a5ee9275d1fa45366d336c551a162dd/coverage-7.13.5-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:78e696e1cc714e57e8b25760b33a8b1026b7048d270140d25dafe1b0a1ee05a3", size = 253541, upload-time = "2026-03-17T10:31:14.247Z" }, - { url = "https://files.pythonhosted.org/packages/4e/5e/3ee3b835647be646dcf3c65a7c6c18f87c27326a858f72ab22c12730773d/coverage-7.13.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:02ca0eed225b2ff301c474aeeeae27d26e2537942aa0f87491d3e147e784a82b", size = 254780, upload-time = "2026-03-17T10:31:16.193Z" }, - { url = "https://files.pythonhosted.org/packages/44/b3/cb5bd1a04cfcc49ede6cd8409d80bee17661167686741e041abc7ee1b9a9/coverage-7.13.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:04690832cbea4e4663d9149e05dba142546ca05cb1848816760e7f58285c970a", size = 256912, upload-time = "2026-03-17T10:31:17.89Z" }, - { url = "https://files.pythonhosted.org/packages/1b/66/c1dceb7b9714473800b075f5c8a84f4588f887a90eb8645282031676e242/coverage-7.13.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0590e44dd2745c696a778f7bab6aa95256de2cbc8b8cff4f7db8ff09813d6969", size = 251165, upload-time = "2026-03-17T10:31:19.605Z" }, - { url = "https://files.pythonhosted.org/packages/b7/62/5502b73b97aa2e53ea22a39cf8649ff44827bef76d90bf638777daa27a9d/coverage-7.13.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d7cfad2d6d81dd298ab6b89fe72c3b7b05ec7544bdda3b707ddaecff8d25c161", size = 252908, upload-time = "2026-03-17T10:31:21.312Z" }, - { url = "https://files.pythonhosted.org/packages/7d/37/7792c2d69854397ca77a55c4646e5897c467928b0e27f2d235d83b5d08c6/coverage-7.13.5-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:e092b9499de38ae0fbfbc603a74660eb6ff3e869e507b50d85a13b6db9863e15", size = 250873, upload-time = "2026-03-17T10:31:23.565Z" }, - { url = "https://files.pythonhosted.org/packages/a3/23/bc866fb6163be52a8a9e5d708ba0d3b1283c12158cefca0a8bbb6e247a43/coverage-7.13.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:48c39bc4a04d983a54a705a6389512883d4a3b9862991b3617d547940e9f52b1", size = 255030, upload-time = "2026-03-17T10:31:25.58Z" }, - { url = "https://files.pythonhosted.org/packages/7d/8b/ef67e1c222ef49860701d346b8bbb70881bef283bd5f6cbba68a39a086c7/coverage-7.13.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2d3807015f138ffea1ed9afeeb8624fd781703f2858b62a8dd8da5a0994c57b6", size = 250694, upload-time = "2026-03-17T10:31:27.316Z" }, - { url = "https://files.pythonhosted.org/packages/46/0d/866d1f74f0acddbb906db212e096dee77a8e2158ca5e6bb44729f9d93298/coverage-7.13.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ee2aa19e03161671ec964004fb74b2257805d9710bf14a5c704558b9d8dbaf17", size = 252469, upload-time = "2026-03-17T10:31:29.472Z" }, - { url = "https://files.pythonhosted.org/packages/7a/f5/be742fec31118f02ce42b21c6af187ad6a344fed546b56ca60caacc6a9a0/coverage-7.13.5-cp313-cp313-win32.whl", hash = "sha256:ce1998c0483007608c8382f4ff50164bfc5bd07a2246dd272aa4043b75e61e85", size = 222112, upload-time = "2026-03-17T10:31:31.526Z" }, - { url = "https://files.pythonhosted.org/packages/66/40/7732d648ab9d069a46e686043241f01206348e2bbf128daea85be4d6414b/coverage-7.13.5-cp313-cp313-win_amd64.whl", hash = "sha256:631efb83f01569670a5e866ceb80fe483e7c159fac6f167e6571522636104a0b", size = 222923, upload-time = "2026-03-17T10:31:33.633Z" }, - { url = "https://files.pythonhosted.org/packages/48/af/fea819c12a095781f6ccd504890aaddaf88b8fab263c4940e82c7b770124/coverage-7.13.5-cp313-cp313-win_arm64.whl", hash = "sha256:f4cd16206ad171cbc2470dbea9103cf9a7607d5fe8c242fdf1edf36174020664", size = 221540, upload-time = "2026-03-17T10:31:35.445Z" }, - { url = "https://files.pythonhosted.org/packages/23/d2/17879af479df7fbbd44bd528a31692a48f6b25055d16482fdf5cdb633805/coverage-7.13.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0428cbef5783ad91fe240f673cc1f76b25e74bbfe1a13115e4aa30d3f538162d", size = 220262, upload-time = "2026-03-17T10:31:37.184Z" }, - { url = "https://files.pythonhosted.org/packages/5b/4c/d20e554f988c8f91d6a02c5118f9abbbf73a8768a3048cb4962230d5743f/coverage-7.13.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e0b216a19534b2427cc201a26c25da4a48633f29a487c61258643e89d28200c0", size = 220617, upload-time = "2026-03-17T10:31:39.245Z" }, - { url = "https://files.pythonhosted.org/packages/29/9c/f9f5277b95184f764b24e7231e166dfdb5780a46d408a2ac665969416d61/coverage-7.13.5-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:972a9cd27894afe4bc2b1480107054e062df08e671df7c2f18c205e805ccd806", size = 261912, upload-time = "2026-03-17T10:31:41.324Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f6/7f1ab39393eeb50cfe4747ae8ef0e4fc564b989225aa1152e13a180d74f8/coverage-7.13.5-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:4b59148601efcd2bac8c4dbf1f0ad6391693ccf7a74b8205781751637076aee3", size = 263987, upload-time = "2026-03-17T10:31:43.724Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d7/62c084fb489ed9c6fbdf57e006752e7c516ea46fd690e5ed8b8617c7d52e/coverage-7.13.5-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:505d7083c8b0c87a8fa8c07370c285847c1f77739b22e299ad75a6af6c32c5c9", size = 266416, upload-time = "2026-03-17T10:31:45.769Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f6/df63d8660e1a0bff6125947afda112a0502736f470d62ca68b288ea762d8/coverage-7.13.5-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:60365289c3741e4db327e7baff2a4aaacf22f788e80fa4683393891b70a89fbd", size = 267558, upload-time = "2026-03-17T10:31:48.293Z" }, - { url = "https://files.pythonhosted.org/packages/5b/02/353ca81d36779bd108f6d384425f7139ac3c58c750dcfaafe5d0bee6436b/coverage-7.13.5-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1b88c69c8ef5d4b6fe7dea66d6636056a0f6a7527c440e890cf9259011f5e606", size = 261163, upload-time = "2026-03-17T10:31:50.125Z" }, - { url = "https://files.pythonhosted.org/packages/2c/16/2e79106d5749bcaf3aee6d309123548e3276517cd7851faa8da213bc61bf/coverage-7.13.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5b13955d31d1633cf9376908089b7cebe7d15ddad7aeaabcbe969a595a97e95e", size = 263981, upload-time = "2026-03-17T10:31:51.961Z" }, - { url = "https://files.pythonhosted.org/packages/29/c7/c29e0c59ffa6942030ae6f50b88ae49988e7e8da06de7ecdbf49c6d4feae/coverage-7.13.5-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:f70c9ab2595c56f81a89620e22899eea8b212a4041bd728ac6f4a28bf5d3ddd0", size = 261604, upload-time = "2026-03-17T10:31:53.872Z" }, - { url = "https://files.pythonhosted.org/packages/40/48/097cdc3db342f34006a308ab41c3a7c11c3f0d84750d340f45d88a782e00/coverage-7.13.5-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:084b84a8c63e8d6fc7e3931b316a9bcafca1458d753c539db82d31ed20091a87", size = 265321, upload-time = "2026-03-17T10:31:55.997Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1f/4994af354689e14fd03a75f8ec85a9a68d94e0188bbdab3fc1516b55e512/coverage-7.13.5-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:ad14385487393e386e2ea988b09d62dd42c397662ac2dabc3832d71253eee479", size = 260502, upload-time = "2026-03-17T10:31:58.308Z" }, - { url = "https://files.pythonhosted.org/packages/22/c6/9bb9ef55903e628033560885f5c31aa227e46878118b63ab15dc7ba87797/coverage-7.13.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:7f2c47b36fe7709a6e83bfadf4eefb90bd25fbe4014d715224c4316f808e59a2", size = 262688, upload-time = "2026-03-17T10:32:00.141Z" }, - { url = "https://files.pythonhosted.org/packages/14/4f/f5df9007e50b15e53e01edea486814783a7f019893733d9e4d6caad75557/coverage-7.13.5-cp313-cp313t-win32.whl", hash = "sha256:67e9bc5449801fad0e5dff329499fb090ba4c5800b86805c80617b4e29809b2a", size = 222788, upload-time = "2026-03-17T10:32:02.246Z" }, - { url = "https://files.pythonhosted.org/packages/e1/98/aa7fccaa97d0f3192bec013c4e6fd6d294a6ed44b640e6bb61f479e00ed5/coverage-7.13.5-cp313-cp313t-win_amd64.whl", hash = "sha256:da86cdcf10d2519e10cabb8ac2de03da1bcb6e4853790b7fbd48523332e3a819", size = 223851, upload-time = "2026-03-17T10:32:04.416Z" }, - { url = "https://files.pythonhosted.org/packages/3d/8b/e5c469f7352651e5f013198e9e21f97510b23de957dd06a84071683b4b60/coverage-7.13.5-cp313-cp313t-win_arm64.whl", hash = "sha256:0ecf12ecb326fe2c339d93fc131816f3a7367d223db37817208905c89bded911", size = 222104, upload-time = "2026-03-17T10:32:06.65Z" }, - { url = "https://files.pythonhosted.org/packages/8e/77/39703f0d1d4b478bfd30191d3c14f53caf596fac00efb3f8f6ee23646439/coverage-7.13.5-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fbabfaceaeb587e16f7008f7795cd80d20ec548dc7f94fbb0d4ec2e038ce563f", size = 219621, upload-time = "2026-03-17T10:32:08.589Z" }, - { url = "https://files.pythonhosted.org/packages/e2/3e/51dff36d99ae14639a133d9b164d63e628532e2974d8b1edb99dd1ebc733/coverage-7.13.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9bb2a28101a443669a423b665939381084412b81c3f8c0fcfbac57f4e30b5b8e", size = 219953, upload-time = "2026-03-17T10:32:10.507Z" }, - { url = "https://files.pythonhosted.org/packages/6a/6c/1f1917b01eb647c2f2adc9962bd66c79eb978951cab61bdc1acab3290c07/coverage-7.13.5-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:bd3a2fbc1c6cccb3c5106140d87cc6a8715110373ef42b63cf5aea29df8c217a", size = 250992, upload-time = "2026-03-17T10:32:12.41Z" }, - { url = "https://files.pythonhosted.org/packages/22/e5/06b1f88f42a5a99df42ce61208bdec3bddb3d261412874280a19796fc09c/coverage-7.13.5-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6c36ddb64ed9d7e496028d1d00dfec3e428e0aabf4006583bb1839958d280510", size = 253503, upload-time = "2026-03-17T10:32:14.449Z" }, - { url = "https://files.pythonhosted.org/packages/80/28/2a148a51e5907e504fa7b85490277734e6771d8844ebcc48764a15e28155/coverage-7.13.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:380e8e9084d8eb38db3a9176a1a4f3c0082c3806fa0dc882d1d87abc3c789247", size = 254852, upload-time = "2026-03-17T10:32:16.56Z" }, - { url = "https://files.pythonhosted.org/packages/61/77/50e8d3d85cc0b7ebe09f30f151d670e302c7ff4a1bf6243f71dd8b0981fa/coverage-7.13.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e808af52a0513762df4d945ea164a24b37f2f518cbe97e03deaa0ee66139b4d6", size = 257161, upload-time = "2026-03-17T10:32:19.004Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c4/b5fd1d4b7bf8d0e75d997afd3925c59ba629fc8616f1b3aae7605132e256/coverage-7.13.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e301d30dd7e95ae068671d746ba8c34e945a82682e62918e41b2679acd2051a0", size = 251021, upload-time = "2026-03-17T10:32:21.344Z" }, - { url = "https://files.pythonhosted.org/packages/f8/66/6ea21f910e92d69ef0b1c3346ea5922a51bad4446c9126db2ae96ee24c4c/coverage-7.13.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:800bc829053c80d240a687ceeb927a94fd108bbdc68dfbe505d0d75ab578a882", size = 252858, upload-time = "2026-03-17T10:32:23.506Z" }, - { url = "https://files.pythonhosted.org/packages/9e/ea/879c83cb5d61aa2a35fb80e72715e92672daef8191b84911a643f533840c/coverage-7.13.5-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:0b67af5492adb31940ee418a5a655c28e48165da5afab8c7fa6fd72a142f8740", size = 250823, upload-time = "2026-03-17T10:32:25.516Z" }, - { url = "https://files.pythonhosted.org/packages/8a/fb/616d95d3adb88b9803b275580bdeee8bd1b69a886d057652521f83d7322f/coverage-7.13.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:c9136ff29c3a91e25b1d1552b5308e53a1e0653a23e53b6366d7c2dcbbaf8a16", size = 255099, upload-time = "2026-03-17T10:32:27.944Z" }, - { url = "https://files.pythonhosted.org/packages/1c/93/25e6917c90ec1c9a56b0b26f6cad6408e5f13bb6b35d484a0d75c9cf000d/coverage-7.13.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:cff784eef7f0b8f6cb28804fbddcfa99f89efe4cc35fb5627e3ac58f91ed3ac0", size = 250638, upload-time = "2026-03-17T10:32:29.914Z" }, - { url = "https://files.pythonhosted.org/packages/fc/7b/dc1776b0464145a929deed214aef9fb1493f159b59ff3c7eeeedf91eddd0/coverage-7.13.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:68a4953be99b17ac3c23b6efbc8a38330d99680c9458927491d18700ef23ded0", size = 252295, upload-time = "2026-03-17T10:32:31.981Z" }, - { url = "https://files.pythonhosted.org/packages/ea/fb/99cbbc56a26e07762a2740713f3c8f9f3f3106e3a3dd8cc4474954bccd34/coverage-7.13.5-cp314-cp314-win32.whl", hash = "sha256:35a31f2b1578185fbe6aa2e74cea1b1d0bbf4c552774247d9160d29b80ed56cc", size = 222360, upload-time = "2026-03-17T10:32:34.233Z" }, - { url = "https://files.pythonhosted.org/packages/8d/b7/4758d4f73fb536347cc5e4ad63662f9d60ba9118cb6785e9616b2ce5d7fa/coverage-7.13.5-cp314-cp314-win_amd64.whl", hash = "sha256:2aa055ae1857258f9e0045be26a6d62bdb47a72448b62d7b55f4820f361a2633", size = 223174, upload-time = "2026-03-17T10:32:36.369Z" }, - { url = "https://files.pythonhosted.org/packages/2c/f2/24d84e1dfe70f8ac9fdf30d338239860d0d1d5da0bda528959d0ebc9da28/coverage-7.13.5-cp314-cp314-win_arm64.whl", hash = "sha256:1b11eef33edeae9d142f9b4358edb76273b3bfd30bc3df9a4f95d0e49caf94e8", size = 221739, upload-time = "2026-03-17T10:32:38.736Z" }, - { url = "https://files.pythonhosted.org/packages/60/5b/4a168591057b3668c2428bff25dd3ebc21b629d666d90bcdfa0217940e84/coverage-7.13.5-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:10a0c37f0b646eaff7cce1874c31d1f1ccb297688d4c747291f4f4c70741cc8b", size = 220351, upload-time = "2026-03-17T10:32:41.196Z" }, - { url = "https://files.pythonhosted.org/packages/f5/21/1fd5c4dbfe4a58b6b99649125635df46decdfd4a784c3cd6d410d303e370/coverage-7.13.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b5db73ba3c41c7008037fa731ad5459fc3944cb7452fc0aa9f822ad3533c583c", size = 220612, upload-time = "2026-03-17T10:32:43.204Z" }, - { url = "https://files.pythonhosted.org/packages/d6/fe/2a924b3055a5e7e4512655a9d4609781b0d62334fa0140c3e742926834e2/coverage-7.13.5-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:750db93a81e3e5a9831b534be7b1229df848b2e125a604fe6651e48aa070e5f9", size = 261985, upload-time = "2026-03-17T10:32:45.514Z" }, - { url = "https://files.pythonhosted.org/packages/d7/0d/c8928f2bd518c45990fe1a2ab8db42e914ef9b726c975facc4282578c3eb/coverage-7.13.5-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9ddb4f4a5479f2539644be484da179b653273bca1a323947d48ab107b3ed1f29", size = 264107, upload-time = "2026-03-17T10:32:47.971Z" }, - { url = "https://files.pythonhosted.org/packages/ef/ae/4ae35bbd9a0af9d820362751f0766582833c211224b38665c0f8de3d487f/coverage-7.13.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d8a7a2049c14f413163e2bdabd37e41179b1d1ccb10ffc6ccc4b7a718429c607", size = 266513, upload-time = "2026-03-17T10:32:50.1Z" }, - { url = "https://files.pythonhosted.org/packages/9c/20/d326174c55af36f74eac6ae781612d9492f060ce8244b570bb9d50d9d609/coverage-7.13.5-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1c85e0b6c05c592ea6d8768a66a254bfb3874b53774b12d4c89c481eb78cb90", size = 267650, upload-time = "2026-03-17T10:32:52.391Z" }, - { url = "https://files.pythonhosted.org/packages/7a/5e/31484d62cbd0eabd3412e30d74386ece4a0837d4f6c3040a653878bfc019/coverage-7.13.5-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:777c4d1eff1b67876139d24288aaf1817f6c03d6bae9c5cc8d27b83bcfe38fe3", size = 261089, upload-time = "2026-03-17T10:32:54.544Z" }, - { url = "https://files.pythonhosted.org/packages/e9/d8/49a72d6de146eebb0b7e48cc0f4bc2c0dd858e3d4790ab2b39a2872b62bd/coverage-7.13.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6697e29b93707167687543480a40f0db8f356e86d9f67ddf2e37e2dfd91a9dab", size = 263982, upload-time = "2026-03-17T10:32:56.803Z" }, - { url = "https://files.pythonhosted.org/packages/06/3b/0351f1bd566e6e4dd39e978efe7958bde1d32f879e85589de147654f57bb/coverage-7.13.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:8fdf453a942c3e4d99bd80088141c4c6960bb232c409d9c3558e2dbaa3998562", size = 261579, upload-time = "2026-03-17T10:32:59.466Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ce/796a2a2f4017f554d7810f5c573449b35b1e46788424a548d4d19201b222/coverage-7.13.5-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:32ca0c0114c9834a43f045a87dcebd69d108d8ffb666957ea65aa132f50332e2", size = 265316, upload-time = "2026-03-17T10:33:01.847Z" }, - { url = "https://files.pythonhosted.org/packages/3d/16/d5ae91455541d1a78bc90abf495be600588aff8f6db5c8b0dae739fa39c9/coverage-7.13.5-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:8769751c10f339021e2638cd354e13adeac54004d1941119b2c96fe5276d45ea", size = 260427, upload-time = "2026-03-17T10:33:03.945Z" }, - { url = "https://files.pythonhosted.org/packages/48/11/07f413dba62db21fb3fad5d0de013a50e073cc4e2dc4306e770360f6dfc8/coverage-7.13.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cec2d83125531bd153175354055cdb7a09987af08a9430bd173c937c6d0fba2a", size = 262745, upload-time = "2026-03-17T10:33:06.285Z" }, - { url = "https://files.pythonhosted.org/packages/91/15/d792371332eb4663115becf4bad47e047d16234b1aff687b1b18c58d60ae/coverage-7.13.5-cp314-cp314t-win32.whl", hash = "sha256:0cd9ed7a8b181775459296e402ca4fb27db1279740a24e93b3b41942ebe4b215", size = 223146, upload-time = "2026-03-17T10:33:08.756Z" }, - { url = "https://files.pythonhosted.org/packages/db/51/37221f59a111dca5e85be7dbf09696323b5b9f13ff65e0641d535ed06ea8/coverage-7.13.5-cp314-cp314t-win_amd64.whl", hash = "sha256:301e3b7dfefecaca37c9f1aa6f0049b7d4ab8dd933742b607765d757aca77d43", size = 224254, upload-time = "2026-03-17T10:33:11.174Z" }, - { url = "https://files.pythonhosted.org/packages/54/83/6acacc889de8987441aa7d5adfbdbf33d288dad28704a67e574f1df9bcbb/coverage-7.13.5-cp314-cp314t-win_arm64.whl", hash = "sha256:9dacc2ad679b292709e0f5fc1ac74a6d4d5562e424058962c7bb0c658ad25e45", size = 222276, upload-time = "2026-03-17T10:33:13.466Z" }, - { url = "https://files.pythonhosted.org/packages/9e/ee/a4cf96b8ce1e566ed238f0659ac2d3f007ed1d14b181bcb684e19561a69a/coverage-7.13.5-py3-none-any.whl", hash = "sha256:34b02417cf070e173989b3db962f7ed56d2f644307b2cf9d5a0f258e13084a61", size = 211346, upload-time = "2026-03-17T10:33:15.691Z" }, + { url = "https://files.pythonhosted.org/packages/92/69/0d2ef01ff4b8fcecd4cba920d11e92fa4f96ae412441d3b56a90a258e69b/coverage-7.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e3680291c4a1d0dadfa84a2c459576a4af5133abb617905714339a0c73138cf", size = 219722, upload-time = "2026-05-26T20:38:14.002Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ae/9afdeaa31b9d9ce98124b6abf8bb49119bf71aecae04f8567c189d91299f/coverage-7.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5274669f37f2343635a347b91a60777621341ab3378e9c6ac9335eee704bddf", size = 220240, upload-time = "2026-05-26T20:38:17.424Z" }, + { url = "https://files.pythonhosted.org/packages/51/69/c998589871df7ea7dba865cc5ee32b5a3e1d47ba6c68ef91104c7c46fa5e/coverage-7.14.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cfe5a5fec635799ef33428f1e5e61bafa45a92a96190ba731561ba558ccc214d", size = 246981, upload-time = "2026-05-26T20:38:19.266Z" }, + { url = "https://files.pythonhosted.org/packages/fc/10/1c7d04c13040dac531d21b712bbe08f902e6dd9b58f5d77875c4d030f8f2/coverage-7.14.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:62a9f70b52e0b5a95cfef4a5c5641b06983cadc5e538a3feeb5c00211f523ac2", size = 248812, upload-time = "2026-05-26T20:38:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/c1/65/2a38a4607ef27cadcfbcee034dba5830ae2569f90144a0f4c7dbf47d30b0/coverage-7.14.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c18ebc343e15be53049b3a2dce38fe82d58f37e20ab9094b3a39c0aa4f6bb47", size = 250675, upload-time = "2026-05-26T20:38:22.159Z" }, + { url = "https://files.pythonhosted.org/packages/c9/a2/a446ed9752a4a59b79e0fb6cbb319f6facb2183045c0725462625e66f87e/coverage-7.14.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b84ffdf877644e7096aa936991efeed873f7f3df57b9cd001312b7668ab08550", size = 252590, upload-time = "2026-05-26T20:38:23.63Z" }, + { url = "https://files.pythonhosted.org/packages/9e/fd/e81fbd7ba752365546e9842b1cbdaad3d6919d2a522c590aef16a281ec5e/coverage-7.14.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e854312c4103f2ad4c0dc023b69b77ebfd2c89db5f86c4c94dc2353f9a92167e", size = 247691, upload-time = "2026-05-26T20:38:25.057Z" }, + { url = "https://files.pythonhosted.org/packages/53/35/f3c26fdaae9ea937d154ca4d372e5ea0a4167ff70d36c6074ac2eacb2f83/coverage-7.14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c643734307300234fafa36bf2a040a7235f8f177ea1fd6ec1423aea6fb7b929f", size = 248716, upload-time = "2026-05-26T20:38:26.406Z" }, + { url = "https://files.pythonhosted.org/packages/2e/14/940b6c49551fd343e8507ee2b0ba7af5d0aa04ed5bf768285cb7c72a9884/coverage-7.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84ac9499e48700399a5dd0ea7085b5091961fec52c68d66b4ec0d3cf7f4441b1", size = 246721, upload-time = "2026-05-26T20:38:28.282Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2c/40fc0634186c28292a662dff578866b3913983d6c375a3c2a74020938719/coverage-7.14.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7f02d09f70776579b926d889a4c9c235070a1f47c40458aeaca563fae5acfdb5", size = 250533, upload-time = "2026-05-26T20:38:29.753Z" }, + { url = "https://files.pythonhosted.org/packages/de/e3/2c26bf1e811f9df991ff2a9bdddebdd13ee0665d564df7d05979f9146297/coverage-7.14.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ce66d8e46da2bb5ee313a745cbd2e391d319176c1f7a9451bfcd3a2fb920859b", size = 246990, upload-time = "2026-05-26T20:38:31.516Z" }, + { url = "https://files.pythonhosted.org/packages/a8/b0/060260ef56bd92363ebdce0c7095ce422b06e69aae71828efeca473ab1ca/coverage-7.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c912c259304cfb5ee584481cfb7ce1ff932b4d61e6c9140b8f19cb7b5ed82332", size = 247593, upload-time = "2026-05-26T20:38:33.065Z" }, + { url = "https://files.pythonhosted.org/packages/63/f3/501502046efeb0d6d94b5ca54941d95f1184183dd6bdb7f283985783bb4a/coverage-7.14.1-cp310-cp310-win32.whl", hash = "sha256:1238cb94638e610e972c60dac68e813f868dc7d6e982535270558443058d9d59", size = 222330, upload-time = "2026-05-26T20:38:35.36Z" }, + { url = "https://files.pythonhosted.org/packages/a0/5d/1bf99f2c558f128faf7906817ccbdb576ba815d3b41ce2ac1719b70a3663/coverage-7.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:fc459e5d73be2d6332fcfe8dbf3d8994671fe33c700f4565988ecfa511547253", size = 223261, upload-time = "2026-05-26T20:38:37.196Z" }, + { url = "https://files.pythonhosted.org/packages/7d/d7/477ad149490e6cb849f28abea1dabb9c823cea72e7500c81b4240ce619c0/coverage-7.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:478b5bcd63c2e1357c5c7e16c070690df7b07f676b1c114d7b93e533c664309f", size = 219848, upload-time = "2026-05-26T20:38:38.715Z" }, + { url = "https://files.pythonhosted.org/packages/91/82/a5eb47257c50601bb7b9a9d2857c67b7a3a85ad74180eb2c98bb1fbe0ce5/coverage-7.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a24a81f9715ee42ef59a316cc11611c98fe23920f7c81861315c9f3ff4a230f4", size = 220354, upload-time = "2026-05-26T20:38:40.232Z" }, + { url = "https://files.pythonhosted.org/packages/43/8b/78419b5391a5cb706b6544390507e469d83ffc9a8248b02c4011aceb9365/coverage-7.14.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:196a13319ad88d6d8ef5ab489ec4f44ddde2143c0c7d5b27786f6c3ffd56a7e1", size = 250771, upload-time = "2026-05-26T20:38:41.782Z" }, + { url = "https://files.pythonhosted.org/packages/77/63/e77aaacd491182210d639636b7a8bba23ffffa9b82aa3762da9431855fa9/coverage-7.14.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d452fd08b5c72c5167c93e6867b5c08500bd40f2a21e1e854a500550b6cc36f", size = 252683, upload-time = "2026-05-26T20:38:43.305Z" }, + { url = "https://files.pythonhosted.org/packages/65/1c/a022e3cfbec2ac241640003cb3a817e161d9c7f5aa9b49173756cdc03204/coverage-7.14.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23bf7fa51ac02e07fc7c96849b82946da47ae862dc8f86d183b2a4864fc38129", size = 254791, upload-time = "2026-05-26T20:38:45.361Z" }, + { url = "https://files.pythonhosted.org/packages/61/d6/967e408aca4c1ceb88cb0cc677169110ae7f5995fb5eaf5fb1f5a1bb8f5d/coverage-7.14.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcaa50684dcaadfa599ac48f81103c756d791cfd85c97203d2217c593d48b860", size = 256748, upload-time = "2026-05-26T20:38:46.91Z" }, + { url = "https://files.pythonhosted.org/packages/b8/be/869188f7fe28638078ec479331ace6dc5f7b40b7153eb616f47ab79404d8/coverage-7.14.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4ea1c034f95c9b056e856b794630b17f9fa3d57e4800ff1e503d3be0f9c9078c", size = 250907, upload-time = "2026-05-26T20:38:48.493Z" }, + { url = "https://files.pythonhosted.org/packages/07/aa/adb7d3b4278d690e68703abcd76ab1b948242e3668d921711551b78f9ddb/coverage-7.14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c7e057326434e441306226fbeb5d1aaf14a2637efe97ba668306635835f32ad7", size = 252483, upload-time = "2026-05-26T20:38:50.074Z" }, + { url = "https://files.pythonhosted.org/packages/43/61/331c74103c62dcb0c4b9b3a0de9a61aca016208b0a90f109592a9f9ecc28/coverage-7.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:59baf88468dbc8d63b1887afd92bda52e40bb1561696e5819670601403810cec", size = 250545, upload-time = "2026-05-26T20:38:51.613Z" }, + { url = "https://files.pythonhosted.org/packages/f6/b6/c5dae3c104d89be04828f61810e6b3473825482e4c288cc4ed04553e08ae/coverage-7.14.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d34d75f892b3ab73ba11cab5442cce7b3e168fd64162b16f0e1e0d09c508edef", size = 254310, upload-time = "2026-05-26T20:38:53.503Z" }, + { url = "https://files.pythonhosted.org/packages/ad/a1/2b9d5863e3b83c01ad8199e3c597802fbb3a9dc90b058885804c20296d31/coverage-7.14.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3a56abc20a472baf0304c455721bc601477440d28ecfde8a03dde79ede07e0df", size = 250266, upload-time = "2026-05-26T20:38:55.414Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/0e511fbdb269359be26fe678a1c3fa1f2aa2a01573cc3f54268c8d6d4797/coverage-7.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a3cb83d1552c0cd1b4906655b6a33fd4a8473229633a901c6b73bf86914dee9", size = 251174, upload-time = "2026-05-26T20:38:57.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/10/e55307b622b3dd9671cb321824502dc10f93e72f2802b9946159a8edadeb/coverage-7.14.1-cp311-cp311-win32.whl", hash = "sha256:10274a1fbeb8ec5d72966e17bb198a3104257aca4ac09d98667c5f8aca8c8548", size = 222354, upload-time = "2026-05-26T20:38:58.727Z" }, + { url = "https://files.pythonhosted.org/packages/71/cf/107421693cfb71e4f1ca5bf70443f64d4161878068d07a3e51c7ad21d17b/coverage-7.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:87ebdf787d4888e3f3f2d523eadc6e18c6d18c6d0eb173801a189641627fb37e", size = 223290, upload-time = "2026-05-26T20:39:00.413Z" }, + { url = "https://files.pythonhosted.org/packages/b8/1d/3e3644585eb29e9dafefb19555078529a4d7cce12bd21929664eea989277/coverage-7.14.1-cp311-cp311-win_arm64.whl", hash = "sha256:dd34767fa19848d35659ffc0a75314f58c7af3f1cd87ec521e8292a1238398a3", size = 221953, upload-time = "2026-05-26T20:39:02.159Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b7/bdbb725ba02c5b42825b200c940f38b7a54fcad24627b7192f78f8110d76/coverage-7.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c", size = 220022, upload-time = "2026-05-26T20:39:03.702Z" }, + { url = "https://files.pythonhosted.org/packages/72/81/fdc0898a55c6219223291ec1a1fe89966ef212ce82276aa0899df84b5de0/coverage-7.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c", size = 220379, upload-time = "2026-05-26T20:39:05.381Z" }, + { url = "https://files.pythonhosted.org/packages/de/72/de048c4a25e13bce59ac6a339351c10bdf2515e07459afcdaf04dc3143a2/coverage-7.14.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b", size = 251888, upload-time = "2026-05-26T20:39:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/28/30/300c343f68beb9d4cbb64ec81e58c5b6b80b56927f72d2b38654ac26e013/coverage-7.14.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6", size = 254624, upload-time = "2026-05-26T20:39:09.037Z" }, + { url = "https://files.pythonhosted.org/packages/b1/ed/7b25642496e8170b6bac14adce00537c6e5fa2d586159401a4de3e8b49e6/coverage-7.14.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37", size = 255739, upload-time = "2026-05-26T20:39:10.889Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a2/abd210b8c4e29c24e4624916db97bb519097a91034aaeb767f937e7da794/coverage-7.14.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad", size = 257998, upload-time = "2026-05-26T20:39:12.722Z" }, + { url = "https://files.pythonhosted.org/packages/7f/24/7c50beed3792fe62f6ce0545c6686ce83379719e2c0276179333d97eae92/coverage-7.14.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84", size = 252296, upload-time = "2026-05-26T20:39:14.259Z" }, + { url = "https://files.pythonhosted.org/packages/15/05/0f874628ebcbfc77ead559ff210281ef06a97db08481832e7dd39274a135/coverage-7.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54", size = 253658, upload-time = "2026-05-26T20:39:15.923Z" }, + { url = "https://files.pythonhosted.org/packages/99/6f/ca6ad067364b337ef997802115e7ecad2abd2248b05471464b0dea02b4d4/coverage-7.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7", size = 251803, upload-time = "2026-05-26T20:39:17.537Z" }, + { url = "https://files.pythonhosted.org/packages/c0/30/b9b4d377cd9f40baf228068f5a81faf8450c6228503011bd499708483a50/coverage-7.14.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9", size = 255873, upload-time = "2026-05-26T20:39:19.414Z" }, + { url = "https://files.pythonhosted.org/packages/3c/21/7c721a9e5e6bb88547d30a787aefb97512d3f54c1324c7488d9b3743f7f9/coverage-7.14.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02", size = 251372, upload-time = "2026-05-26T20:39:21.169Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f8ae5a2200130e1503cd7661a6cd3b2b7bacef98277fbf3571fb13f8b766/coverage-7.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a", size = 253245, upload-time = "2026-05-26T20:39:23.097Z" }, + { url = "https://files.pythonhosted.org/packages/34/62/70a9024672a5f6910517d9628c52c9afbdd3cf8f46426af52bb148a56fff/coverage-7.14.1-cp312-cp312-win32.whl", hash = "sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1", size = 222567, upload-time = "2026-05-26T20:39:24.868Z" }, + { url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e", size = 223372, upload-time = "2026-05-26T20:39:26.603Z" }, + { url = "https://files.pythonhosted.org/packages/ae/ba/b44d472022f620d289d95fa830143235c0c36461c6f2437ea8d51e5481ed/coverage-7.14.1-cp312-cp312-win_arm64.whl", hash = "sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a", size = 221989, upload-time = "2026-05-26T20:39:28.242Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/5f6d56327c62b185225d145191c607e07515294a0aa6338e58805cd4a5ac/coverage-7.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793", size = 220044, upload-time = "2026-05-26T20:39:29.902Z" }, + { url = "https://files.pythonhosted.org/packages/75/92/e82aca356744cbbc0f77a0b623e38918c1872361963413a3bab5d0340393/coverage-7.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d", size = 220412, upload-time = "2026-05-26T20:39:31.561Z" }, + { url = "https://files.pythonhosted.org/packages/27/c9/385bde0bf7ed0f4bf3a7ee5367060a86b5d218718cfd6fb943c0f836b34f/coverage-7.14.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247", size = 251412, upload-time = "2026-05-26T20:39:33.337Z" }, + { url = "https://files.pythonhosted.org/packages/51/8c/23faf6a2343a0d17f960a4bd56c43bc7eb4cf312f774dd6ceebd82c7d8fc/coverage-7.14.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d", size = 254008, upload-time = "2026-05-26T20:39:35.009Z" }, + { url = "https://files.pythonhosted.org/packages/42/06/36f4aa9ca8a815e6036156e80706a67828bb97bd826948244f6996dda957/coverage-7.14.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b", size = 255241, upload-time = "2026-05-26T20:39:36.71Z" }, + { url = "https://files.pythonhosted.org/packages/ca/79/95266316352f90f6b1c6736bb413302edfde2453fb32422d3911642691b3/coverage-7.14.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be", size = 257373, upload-time = "2026-05-26T20:39:38.412Z" }, + { url = "https://files.pythonhosted.org/packages/e3/9c/58316d1f66c488b5fca8a0eb3e98348807813efa8a0d0833b9021be27488/coverage-7.14.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43", size = 251635, upload-time = "2026-05-26T20:39:40.268Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5a/ca2398a568e16fed7bb713e84ba3603a7164fb65779abe645c565ec890d5/coverage-7.14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901", size = 253373, upload-time = "2026-05-26T20:39:42.145Z" }, + { url = "https://files.pythonhosted.org/packages/6e/2c/0396562c32deaebe7be51d865b3a41e9a87d7561acafe1a28f53b07e019a/coverage-7.14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff", size = 251341, upload-time = "2026-05-26T20:39:43.907Z" }, + { url = "https://files.pythonhosted.org/packages/fd/8f/a94f9221184c9cae1ee115820e3798e48b6b17777a9f19e46fb9a0c8dc74/coverage-7.14.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4", size = 255497, upload-time = "2026-05-26T20:39:46.166Z" }, + { url = "https://files.pythonhosted.org/packages/71/69/505d70e47db1eaebcd002c39759707621ef184cd6b1ae084d9f41293f323/coverage-7.14.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d", size = 251159, upload-time = "2026-05-26T20:39:48.03Z" }, + { url = "https://files.pythonhosted.org/packages/e0/aa/58681c383aa33a9d2ed40a02d7a22fbf780d1fa4d575396365777828198c/coverage-7.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33", size = 252934, upload-time = "2026-05-26T20:39:49.872Z" }, + { url = "https://files.pythonhosted.org/packages/eb/fd/11c928cd6bdffc7074bb5965c173d9ebf517fb00205e1da524b98d29ef92/coverage-7.14.1-cp313-cp313-win32.whl", hash = "sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c", size = 222584, upload-time = "2026-05-26T20:39:51.68Z" }, + { url = "https://files.pythonhosted.org/packages/6f/92/fb416fc26d340dcba19518c418d6048e913186e17243982c5e435e41fa7a/coverage-7.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416", size = 223394, upload-time = "2026-05-26T20:39:53.472Z" }, + { url = "https://files.pythonhosted.org/packages/73/c6/02d56e3867972f77d5036de924643f26c056e848f00452cafb4dbc3c29b4/coverage-7.14.1-cp313-cp313-win_arm64.whl", hash = "sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42", size = 222015, upload-time = "2026-05-26T20:39:55.374Z" }, + { url = "https://files.pythonhosted.org/packages/4d/9e/fcc77914050df73f7662fa1f00902774c79c075a8388ab334074574bf77e/coverage-7.14.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d", size = 220733, upload-time = "2026-05-26T20:39:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/f7/67/2963cbdaf5cbadec44efa3a1e39eaa1f02df4079585f05387607a221e126/coverage-7.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5", size = 221086, upload-time = "2026-05-26T20:39:59.019Z" }, + { url = "https://files.pythonhosted.org/packages/c8/c5/8701645574e11881f2f47d8930f98bc48b5d43b25eb5b4430dfc4a2f9f48/coverage-7.14.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52", size = 262381, upload-time = "2026-05-26T20:40:00.822Z" }, + { url = "https://files.pythonhosted.org/packages/7c/28/7a64d73598263e0c5abd5084211a8474488d31b3c552ff531c719dfcff62/coverage-7.14.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a", size = 264458, upload-time = "2026-05-26T20:40:02.506Z" }, + { url = "https://files.pythonhosted.org/packages/fa/d8/4969179db9f7eb4df218e69540adf829d1c835f59452513d065d15446802/coverage-7.14.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a", size = 266884, upload-time = "2026-05-26T20:40:04.421Z" }, + { url = "https://files.pythonhosted.org/packages/a6/78/a45d5794dbc9bafd97afc96a4377c86c7820d78b6cf51b89bc1d4e919275/coverage-7.14.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2", size = 268022, upload-time = "2026-05-26T20:40:06.298Z" }, + { url = "https://files.pythonhosted.org/packages/21/cb/4f5e354e9e3e67af96bd4e57113e6db6b22298c7168b13eec408a549903d/coverage-7.14.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e", size = 261631, upload-time = "2026-05-26T20:40:08.226Z" }, + { url = "https://files.pythonhosted.org/packages/ec/49/eced49af4cb996d5d8b7e94e736175c513e4facd3398507b89892b4326d8/coverage-7.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d", size = 264443, upload-time = "2026-05-26T20:40:10.137Z" }, + { url = "https://files.pythonhosted.org/packages/f1/d8/5603a88a7c5913a6b54f6cb1a8c46f7b39cbb30f27cd3f492908da09b2d7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb", size = 262069, upload-time = "2026-05-26T20:40:11.999Z" }, + { url = "https://files.pythonhosted.org/packages/f0/59/2ae3cb79da554a06c8619d6c88ea19dd1e4aed4b834b6a83bb1fa243bdc5/coverage-7.14.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d", size = 265780, upload-time = "2026-05-26T20:40:13.858Z" }, + { url = "https://files.pythonhosted.org/packages/af/5f/b130c1dc999031f2648bd25317fbce505ad8d5562079b4ed81e736a84967/coverage-7.14.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69", size = 260970, upload-time = "2026-05-26T20:40:16.142Z" }, + { url = "https://files.pythonhosted.org/packages/87/d1/ec13ccddeb48ec963bdfa72a11224bac2584bd045ba13beca82f8113e9c7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54", size = 263157, upload-time = "2026-05-26T20:40:18.382Z" }, + { url = "https://files.pythonhosted.org/packages/cf/c2/cd91ead503045161092d3845f7bb95ea2f25131ce96d3e314dd835d91b9c/coverage-7.14.1-cp313-cp313t-win32.whl", hash = "sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1", size = 223259, upload-time = "2026-05-26T20:40:20.381Z" }, + { url = "https://files.pythonhosted.org/packages/71/9f/1e28d97e6bd2c76b07f38b7c02870f1371255ff6717f54eca578fcbbdd0e/coverage-7.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce", size = 224320, upload-time = "2026-05-26T20:40:22.316Z" }, + { url = "https://files.pythonhosted.org/packages/a9/e0/d936e908f0e1efa55e52b91e01b52f1055cef5e1ab2718493390ed8e2fb8/coverage-7.14.1-cp313-cp313t-win_arm64.whl", hash = "sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1", size = 222577, upload-time = "2026-05-26T20:40:24.894Z" }, + { url = "https://files.pythonhosted.org/packages/d6/34/fc2f101b151af3799a101f0550b0454aa008afdc0add677394ec4aa8ea10/coverage-7.14.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee", size = 220091, upload-time = "2026-05-26T20:40:27.249Z" }, + { url = "https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500", size = 220421, upload-time = "2026-05-26T20:40:30.084Z" }, + { url = "https://files.pythonhosted.org/packages/5e/90/92aca9cf0acc95123c96cd1eb1f08917897a7f5dee01e15738922971ec31/coverage-7.14.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906", size = 251466, upload-time = "2026-05-26T20:40:32.542Z" }, + { url = "https://files.pythonhosted.org/packages/26/2b/78048cbe3b999f6cbf9cc0d90abba6a88a3e0863a8c1c6cbc762f3f8802f/coverage-7.14.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42", size = 253973, upload-time = "2026-05-26T20:40:34.473Z" }, + { url = "https://files.pythonhosted.org/packages/8e/21/c2e33b29d1cfde484a19d437afc343c6cd30b08d78cbbf9f5aff14e57b2b/coverage-7.14.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8", size = 255318, upload-time = "2026-05-26T20:40:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/8e/ee/aad2f108d63b769121005302f16bf66db8625c88ceaba466942e09a2607e/coverage-7.14.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851", size = 257633, upload-time = "2026-05-26T20:40:40.164Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f8/11a2c29b4fd76d9849f81d0bb812ec0017a9396df3217214e38934a8c837/coverage-7.14.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034", size = 251488, upload-time = "2026-05-26T20:40:42.631Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b8/9a5820de4b8ac2b71d85e3b5fb49108d7469c665f0e2ad0dd7569023e305/coverage-7.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c", size = 253329, upload-time = "2026-05-26T20:40:45.208Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ff/f33e4823667e27548e8fd8df44217515303f9808d0ff29817db56f87d990/coverage-7.14.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36", size = 251291, upload-time = "2026-05-26T20:40:47.502Z" }, + { url = "https://files.pythonhosted.org/packages/68/9b/489db0ebb209054766b90a9014a45f6d26eb724c02ec21311c3733b5a644/coverage-7.14.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5", size = 255564, upload-time = "2026-05-26T20:40:49.372Z" }, + { url = "https://files.pythonhosted.org/packages/27/b5/16bc2d4c2409b23c7737edb68c83bc89e345f378050549fe1d75ac7d34d5/coverage-7.14.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4", size = 251107, upload-time = "2026-05-26T20:40:51.677Z" }, + { url = "https://files.pythonhosted.org/packages/7d/0c/2629997469a00cd069d588a41c9dc887610f2775ae89d250c4791e65272a/coverage-7.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d", size = 252764, upload-time = "2026-05-26T20:40:54.267Z" }, + { url = "https://files.pythonhosted.org/packages/d2/ee/f78d63c8f079e0d7211c7e2401fa17e311514534ba61bae03e4b287ce4ab/coverage-7.14.1-cp314-cp314-win32.whl", hash = "sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee", size = 222837, upload-time = "2026-05-26T20:40:56.496Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b9/be539854f93a70dfbeec69117f33ec70dc42ff0b65b5b07ab8d40d04228e/coverage-7.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7", size = 223650, upload-time = "2026-05-26T20:40:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/fe/9e/24e2842fef40f35ac82ba3a7719c8023d011bf3bf652d0675316a9d088a1/coverage-7.14.1-cp314-cp314-win_arm64.whl", hash = "sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343", size = 222218, upload-time = "2026-05-26T20:41:00.321Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1d/ac0a9df5fe31c1e8bdd658074905fc12844a05c1a7e3fdb8417e97c31e23/coverage-7.14.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1", size = 220822, upload-time = "2026-05-26T20:41:02.281Z" }, + { url = "https://files.pythonhosted.org/packages/32/cf/f964fd9aff20323f9f1a726c97135f8a76bcd87b92dad141a456a43f3c64/coverage-7.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b", size = 221084, upload-time = "2026-05-26T20:41:04.593Z" }, + { url = "https://files.pythonhosted.org/packages/d8/5e/7e5ef2aba844de2b80d678619fcf0841b42e3f37f16411226f3fe4c1016f/coverage-7.14.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474", size = 262454, upload-time = "2026-05-26T20:41:06.641Z" }, + { url = "https://files.pythonhosted.org/packages/64/62/75809bded87015cc4935524218a2a8ed8dd1a8498bfed30a2f4f7a4b4d34/coverage-7.14.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86", size = 264578, upload-time = "2026-05-26T20:41:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/f3/42/d33392dc14633525012d2d504fa1a33b05538bf535f5c1d64675e5754b78/coverage-7.14.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e", size = 266981, upload-time = "2026-05-26T20:41:10.824Z" }, + { url = "https://files.pythonhosted.org/packages/2a/49/0157c4428c2aca7f1e09d5565930586fd5ae36f1655f08b0daa7cf1fcae1/coverage-7.14.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65", size = 268112, upload-time = "2026-05-26T20:41:12.966Z" }, + { url = "https://files.pythonhosted.org/packages/96/26/86b9ce71f4092b1ed325ce1421698081df1286b833400b6836912834d6e0/coverage-7.14.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e", size = 261558, upload-time = "2026-05-26T20:41:15Z" }, + { url = "https://files.pythonhosted.org/packages/20/4c/c311210c5472cf5401d8422b0d7812cdd520f24417673afabda6c323faca/coverage-7.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8", size = 264447, upload-time = "2026-05-26T20:41:17.369Z" }, + { url = "https://files.pythonhosted.org/packages/fb/71/59513f8710ed3e6b0ac0a050a5b7e977bb9c9e880354863b5d00d8809256/coverage-7.14.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07", size = 262048, upload-time = "2026-05-26T20:41:19.309Z" }, + { url = "https://files.pythonhosted.org/packages/84/8d/bceed32dc494f5bbf50f775cd2e78ca814953942b5ea28d3c1c3ac316f14/coverage-7.14.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de", size = 265781, upload-time = "2026-05-26T20:41:21.559Z" }, + { url = "https://files.pythonhosted.org/packages/e7/c5/9348fe40dbfd4991aaf78df2c6c3098bfb2cc834d1fd362a64b4efef855a/coverage-7.14.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890", size = 260896, upload-time = "2026-05-26T20:41:23.428Z" }, + { url = "https://files.pythonhosted.org/packages/ca/92/1ea0f03929da7cf87206b1fa24f4c8e9c158be0455481af29ec0a1f3503f/coverage-7.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd", size = 263214, upload-time = "2026-05-26T20:41:25.419Z" }, + { url = "https://files.pythonhosted.org/packages/f6/a9/b2493c054c0e01a643266742ab45e15744e60743f9260cd930c7142b1124/coverage-7.14.1-cp314-cp314t-win32.whl", hash = "sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e", size = 223624, upload-time = "2026-05-26T20:41:27.795Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bd/3e1e6a57fccd2d7c83fcdf338e93ba98eb85c6e877dd34731ac585375490/coverage-7.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c", size = 224728, upload-time = "2026-05-26T20:41:30.098Z" }, + { url = "https://files.pythonhosted.org/packages/bb/d7/31066cf1d2f0c6c797fce911bcfa01dd35642dc6da992a950256097c5860/coverage-7.14.1-cp314-cp314t-win_arm64.whl", hash = "sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af", size = 222752, upload-time = "2026-05-26T20:41:32.123Z" }, + { url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" }, ] [package.optional-dependencies] @@ -323,51 +323,51 @@ toml = [ [[package]] name = "cryptography" -version = "46.0.5" +version = "48.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/45/870e7f4bef50e5f53b9f51d4428aee5290eedf58ba443f16b1ebb7ab8e66/cryptography-48.0.1.tar.gz", hash = "sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a", size = 832989, upload-time = "2026-06-09T22:32:31.8Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, - { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, - { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, - { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, - { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, - { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, - { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, - { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, - { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, - { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, - { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, - { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, - { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, - { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, - { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, - { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, - { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, - { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, - { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, - { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, - { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, - { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, - { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" }, - { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" }, - { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" }, - { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" }, + { url = "https://files.pythonhosted.org/packages/d5/85/6379d42181bfc713094f081360fc5784d6c816b599d45e7f082502d173ce/cryptography-48.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225", size = 4696243, upload-time = "2026-06-09T22:32:33.446Z" }, + { url = "https://files.pythonhosted.org/packages/9c/87/c85d147b53323c7eb4d850920c8901377323c2a0ff8d79c262d4fee89aa2/cryptography-48.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691", size = 4713235, upload-time = "2026-06-09T22:31:40.141Z" }, + { url = "https://files.pythonhosted.org/packages/79/58/67cbf8cf1ee7c54b439ca07bbecf8362c07afc11a3724fea70f745784add/cryptography-48.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242", size = 4702323, upload-time = "2026-06-09T22:31:42.191Z" }, + { url = "https://files.pythonhosted.org/packages/89/c6/24266ac10c47f6cd2a865f4446062b466da1d1f10b27189eac00e61bf0c9/cryptography-48.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08", size = 5300085, upload-time = "2026-06-09T22:31:58.703Z" }, + { url = "https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6", size = 4746137, upload-time = "2026-06-09T22:31:31.01Z" }, + { url = "https://files.pythonhosted.org/packages/1f/52/0c44de3f5267f8fbe8e835138017522a333436166e406f0db9b9e6e3033f/cryptography-48.0.1-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8", size = 4333867, upload-time = "2026-06-09T22:32:28.096Z" }, + { url = "https://files.pythonhosted.org/packages/9a/2e/772d7adbfa931537bc401640b7cac9976bff689bda187833e5d63b428e49/cryptography-48.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429", size = 4701805, upload-time = "2026-06-09T22:31:38.284Z" }, + { url = "https://files.pythonhosted.org/packages/f8/a3/b06844f303873493c963caf581c04df31c7035e0c1b0f02c4814d319ec80/cryptography-48.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f", size = 5258461, upload-time = "2026-06-09T22:31:04.187Z" }, + { url = "https://files.pythonhosted.org/packages/9f/13/8b765e2e12b07c74941caadb9d1c8fdc006c4dfbf2b8f2d610519758954d/cryptography-48.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f", size = 4745488, upload-time = "2026-06-09T22:32:30.07Z" }, + { url = "https://files.pythonhosted.org/packages/2e/aa/48972bce55049b32a94f4907eda4d75fa385aad8a39506cc2fc72196ecf0/cryptography-48.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41", size = 4830256, upload-time = "2026-06-09T22:31:43.868Z" }, + { url = "https://files.pythonhosted.org/packages/47/a2/e5079a032fb85cf6005046ca92bbd78b0c82dad2b5751ab8c311659da06f/cryptography-48.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6", size = 4979117, upload-time = "2026-06-09T22:31:05.845Z" }, + { url = "https://files.pythonhosted.org/packages/8a/13/6476736484b94041110c8340a3eb63962fea4975baea8cb4a512adb44d4d/cryptography-48.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4", size = 4689201, upload-time = "2026-06-09T22:31:09.745Z" }, + { url = "https://files.pythonhosted.org/packages/79/62/65a87f34d2a431546e2509b85d55e8c90df86d668f6731da64d538512ac2/cryptography-48.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991", size = 4702822, upload-time = "2026-06-09T22:32:24.409Z" }, + { url = "https://files.pythonhosted.org/packages/7f/59/810b5204b0a9b10f4b6bc06bd551a8b609803cd931806bc3b71884b225e5/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265", size = 4694875, upload-time = "2026-06-09T22:32:08.737Z" }, + { url = "https://files.pythonhosted.org/packages/24/dc/d8ca05ffea724eec6d232ea6f18e74c269eb6bdfdcc9bfba689790d1325f/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17", size = 5290385, upload-time = "2026-06-09T22:31:15.212Z" }, + { url = "https://files.pythonhosted.org/packages/03/8c/3be6cb4da181f5bb6c19cf560c2359d60644a6b5fc5b57854e528f47b296/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411", size = 4737082, upload-time = "2026-06-09T22:32:22.66Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f6/d5f60a5a1434dbfd949e227fd0065d194c7e6b6ac526b17f5c06152b8231/cryptography-48.0.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02", size = 4325328, upload-time = "2026-06-09T22:32:10.777Z" }, + { url = "https://files.pythonhosted.org/packages/17/b7/ba75dd947a14b6ad907b01ae8f6b5b348cdd1b48142f0063dee9e20c1d9d/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa", size = 4694530, upload-time = "2026-06-09T22:31:53.105Z" }, + { url = "https://files.pythonhosted.org/packages/62/29/50d6b9e8aff12d8b67afaeb3569335e32dc83a5723e3bbded24fdac9f809/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3", size = 5245046, upload-time = "2026-06-09T22:31:25.774Z" }, + { url = "https://files.pythonhosted.org/packages/9f/04/618f4115cfc0add0838c82507aa18a346089428da8653ad38b3ff36f5cb3/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c", size = 4736660, upload-time = "2026-06-09T22:32:12.676Z" }, + { url = "https://files.pythonhosted.org/packages/24/9c/06e062462a0de28a3b3911322eded4c16deb9f441b1b7575d3dc59488ab5/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72", size = 4822229, upload-time = "2026-06-09T22:31:17.062Z" }, + { url = "https://files.pythonhosted.org/packages/f4/be/0561971eaaee4b8a0e7d5113c536921063ab91aaf23278ac374eaf881e11/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9", size = 4966364, upload-time = "2026-06-09T22:31:32.842Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d9/45f309a7e4e5f3f8f121d6d3be9e94024a7726ec598d6e08ae04edb2f04d/cryptography-48.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8", size = 4690196, upload-time = "2026-06-09T22:31:54.74Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9f/a1bc8bcc798811b8527eb374bbccf30a3f3e806829d967118222bf1125eb/cryptography-48.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a", size = 4696782, upload-time = "2026-06-09T22:31:45.615Z" }, + { url = "https://files.pythonhosted.org/packages/66/c2/81a4fb4e4373c500bb526bc337ac5719dd31dd15b970b84a238168c6aa08/cryptography-48.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577", size = 4696618, upload-time = "2026-06-09T22:31:11.564Z" }, + { url = "https://files.pythonhosted.org/packages/e5/0b/aa68b221dde92d09cb29a024ede17550ee21e77a404e59fc093c82bb51e1/cryptography-48.0.1-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1", size = 5289970, upload-time = "2026-06-09T22:31:20.368Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/fba657f958d2af66ea959a4ba01212632089249d34af1ae48054136344d7/cryptography-48.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d", size = 4731873, upload-time = "2026-06-09T22:31:22.253Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4c/9a964756d24a26b3e34dfcb16f961b89838786e6700b635b0d1e3adff4b6/cryptography-48.0.1-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6", size = 4330804, upload-time = "2026-06-09T22:31:36.56Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0f/a10f3a6eb12950a10e3a874070283aa2dd5875b2bfd15fad8a3e17b3f13e/cryptography-48.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46", size = 4696217, upload-time = "2026-06-09T22:31:13.351Z" }, + { url = "https://files.pythonhosted.org/packages/f3/6f/5cd12f951165ea73ef85266775d97e4c763b2474ccfd816dd69d3a18d6f8/cryptography-48.0.1-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401", size = 5245252, upload-time = "2026-06-09T22:32:02.193Z" }, + { url = "https://files.pythonhosted.org/packages/68/ab/8aaa12e4516ec4464033ab79b6f3b592bd5a92102467c4ace8a0d970203f/cryptography-48.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b", size = 4731388, upload-time = "2026-06-09T22:32:04.019Z" }, + { url = "https://files.pythonhosted.org/packages/1b/24/50027ea4dca85ec1f40688f3c24fb32ccacd520583c9592c3cc95628e6fb/cryptography-48.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1", size = 4824186, upload-time = "2026-06-09T22:32:18.707Z" }, + { url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" }, + { url = "https://files.pythonhosted.org/packages/e0/4a/3f43451b4f858bfceaaaffc649e6e787e8d4fb332a1d443af39ab02cc8f1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:735824ec41b7f74a7c45fb1591349333e4c696cb6c044e5f46356e560143e4cd", size = 4641226, upload-time = "2026-06-09T22:31:02.532Z" }, + { url = "https://files.pythonhosted.org/packages/73/4e/855584c2c23b09e4ce2d3b9c30e983e679cd60b068c513c6bbdb91e11782/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:92a46e1d638daa264ba2971c0b0489c9409787943efae4d60ffda3d091ef832c", size = 4668958, upload-time = "2026-06-09T22:32:06.213Z" }, + { url = "https://files.pythonhosted.org/packages/42/3b/d35750e41d803d1e516fd6d6011f065424924da7af1748cef4cc9cb3ede1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:7e234ac052af99f2700826a5c29ea99d9c1b1f80341cde62d11c8154dc8e0bd9", size = 4640793, upload-time = "2026-06-09T22:32:26.331Z" }, + { url = "https://files.pythonhosted.org/packages/ca/aa/cdb7181fe865285e87e96825aaab239400f1de0c3bfba9bd9769b79f1a92/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:33842cf0888951cef5bc7ac724ab844a42044c1727b967b7f8997289a0464f92", size = 4668505, upload-time = "2026-06-09T22:31:27.534Z" }, ] [[package]] @@ -384,11 +384,11 @@ wheels = [ [[package]] name = "docutils" -version = "0.22.4" +version = "0.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ae/b6/03bb70946330e88ffec97aefd3ea75ba575cb2e762061e0e62a213befee8/docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968", size = 2291750, upload-time = "2025-12-18T19:00:26.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/a4/5180d9afc57e8fca05601dd652bdff19604c218814037fe90ffc7625a50a/docutils-0.23.tar.gz", hash = "sha256:746f5060322511280a1e50eb76846ed6bf2342984b2ac04dc42caa1a8d78799e", size = 2303823, upload-time = "2026-05-27T17:41:06.934Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, + { url = "https://files.pythonhosted.org/packages/32/91/30151a39f7570f448ed84529390628a651d7f27c87d73c9b887f8189695e/docutils-0.23-py3-none-any.whl", hash = "sha256:25d013af9bf23bc1c7b2b093dff4208166c53a94786c9e447808335ef1185fea", size = 634701, upload-time = "2026-05-27T17:40:58.442Z" }, ] [[package]] @@ -417,14 +417,14 @@ wheels = [ [[package]] name = "faker" -version = "40.11.0" +version = "40.23.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/dc/b68e5378e5a7db0ab776efcdd53b6fe374b29d703e156fd5bb4c5437069e/faker-40.11.0.tar.gz", hash = "sha256:7c419299103b13126bd02ec14bd2b47b946edb5a5eedf305e66a193b25f9a734", size = 1957570, upload-time = "2026-03-13T14:36:11.844Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/d6/fc071e5754815d9058e12ab549cc88e90f8f4ecf4dc33b6b750cdf4b622d/faker-40.23.0.tar.gz", hash = "sha256:f135e563f1f95f19346bb680bc2e43570bc43b7893e566023746f51f32c69dfc", size = 1972975, upload-time = "2026-06-10T20:53:21.611Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/fa/a86c6ba66f0308c95b9288b1e3eaccd934b545646f63494a86f1ec2f8c8e/faker-40.11.0-py3-none-any.whl", hash = "sha256:0e9816c950528d2a37d74863f3ef389ea9a3a936cbcde0b11b8499942e25bf90", size = 1989457, upload-time = "2026-03-13T14:36:09.792Z" }, + { url = "https://files.pythonhosted.org/packages/64/5f/824e6fb3e9d63408151dc9173994fa65bde620a67dde3a59354f5aecd497/faker-40.23.0-py3-none-any.whl", hash = "sha256:775922453e54afa42eaf60eac478fa3a969357f224d09a8022b93e3ad88f18ae", size = 2013046, upload-time = "2026-06-10T20:53:19.226Z" }, ] [[package]] @@ -453,23 +453,23 @@ wheels = [ [[package]] name = "idna" -version = "3.11" +version = "3.18" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, + { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" }, ] [[package]] name = "importlib-metadata" -version = "8.7.1" +version = "9.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/01/15bb152d77b21318514a96f43af312635eb2500c96b55398d020c93d86ea/importlib_metadata-9.0.0.tar.gz", hash = "sha256:a4f57ab599e6a2e3016d7595cfd72eb4661a5106e787a95bcc90c7105b831efc", size = 56405, upload-time = "2026-03-20T06:42:56.999Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/38/3d/2d244233ac4f76e38533cfcb2991c9eb4c7bf688ae0a036d30725b8faafe/importlib_metadata-9.0.0-py3-none-any.whl", hash = "sha256:2d21d1cc5a017bd0559e36150c21c830ab1dc304dedd1b7ea85d20f45ef3edd7", size = 27789, upload-time = "2026-03-20T06:42:55.665Z" }, ] [[package]] @@ -495,26 +495,26 @@ wheels = [ [[package]] name = "jaraco-context" -version = "6.1.1" +version = "6.1.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "backports-tarfile", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/27/7b/c3081ff1af947915503121c649f26a778e1a2101fd525f74aef997d75b7e/jaraco_context-6.1.1.tar.gz", hash = "sha256:bc046b2dc94f1e5532bd02402684414575cc11f565d929b6563125deb0a6e581", size = 15832, upload-time = "2026-03-07T15:46:04.63Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/50/4763cd07e722bb6285316d390a164bc7e479db9d90daa769f22578f698b4/jaraco_context-6.1.2.tar.gz", hash = "sha256:f1a6c9d391e661cc5b8d39861ff077a7dc24dc23833ccee564b234b81c82dfe3", size = 16801, upload-time = "2026-03-20T22:13:33.922Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/49/c152890d49102b280ecf86ba5f80a8c111c3a155dafa3bd24aeb64fde9e1/jaraco_context-6.1.1-py3-none-any.whl", hash = "sha256:0df6a0287258f3e364072c3e40d5411b20cafa30cb28c4839d24319cecf9f808", size = 7005, upload-time = "2026-03-07T15:46:03.515Z" }, + { url = "https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl", hash = "sha256:bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535", size = 7871, upload-time = "2026-03-20T22:13:32.808Z" }, ] [[package]] name = "jaraco-functools" -version = "4.4.0" +version = "4.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "more-itertools" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/27/056e0638a86749374d6f57d0b0db39f29509cce9313cf91bdc0ac4d91084/jaraco_functools-4.4.0.tar.gz", hash = "sha256:da21933b0417b89515562656547a77b4931f98176eb173644c0d35032a33d6bb", size = 19943, upload-time = "2025-12-21T09:29:43.6Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/cf/ea4ef2920830dea3f5ab2ea4da6fb67724e6dca80ee2553788c3607243d0/jaraco_functools-4.5.0.tar.gz", hash = "sha256:3bb5665ea4a020cf78a7040e89154c77edadb3ca74f366479669c5999aa70b03", size = 20272, upload-time = "2026-05-15T21:34:10.025Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/c4/813bb09f0985cb21e959f21f2464169eca882656849adf727ac7bb7e1767/jaraco_functools-4.4.0-py3-none-any.whl", hash = "sha256:9eec1e36f45c818d9bf307c8948eb03b2b56cd44087b3cdc989abca1f20b9176", size = 10481, upload-time = "2025-12-21T09:29:42.27Z" }, + { url = "https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl", hash = "sha256:79ce39246eddbde4b3a03b77ea5f0f7878dc669b166a66cf3fa8e266aa3fa2f4", size = 10594, upload-time = "2026-05-15T21:34:08.595Z" }, ] [[package]] @@ -546,14 +546,14 @@ wheels = [ [[package]] name = "markdown-it-py" -version = "4.0.0" +version = "4.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/ff/7841249c247aa650a76b9ee4bbaeae59370dc8bfd2f6c01f3630c35eb134/markdown_it_py-4.2.0.tar.gz", hash = "sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49", size = 82454, upload-time = "2026-05-07T12:08:28.36Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" }, + { url = "https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl", hash = "sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a", size = 91687, upload-time = "2026-05-07T12:08:27.182Z" }, ] [[package]] @@ -567,7 +567,7 @@ wheels = [ [[package]] name = "mistapi" -version = "0.62.0" +version = "0.63.0" source = { editable = "." } dependencies = [ { name = "deprecation" }, @@ -620,54 +620,54 @@ dev = [ [[package]] name = "more-itertools" -version = "10.8.0" +version = "11.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/1d/f4da6f02cdffe04d6362210b807146a26044c88d839208aec273bb0d9184/more_itertools-11.1.0.tar.gz", hash = "sha256:48e8f4d9e7e5878571ecf6f2b4e57634f93cd474cc8cfbd2376f2d11b396e30d", size = 145772, upload-time = "2026-05-22T14:14:29.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" }, + { url = "https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl", hash = "sha256:4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192", size = 72226, upload-time = "2026-05-22T14:14:28.824Z" }, ] [[package]] name = "nh3" -version = "0.3.3" +version = "0.3.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/37/ab55eb2b05e334ff9a1ad52c556ace1f9c20a3f63613a165d384d5387657/nh3-0.3.3.tar.gz", hash = "sha256:185ed41b88c910b9ca8edc89ca3b4be688a12cb9de129d84befa2f74a0039fee", size = 18968, upload-time = "2026-02-14T09:35:15.664Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/5f/1d19bdc7d27238e37f3672cdc02cb77c56a4a86d140cd4f4f23c90df6e16/nh3-0.3.5.tar.gz", hash = "sha256:45855e14ff056064fec77133bfcf7cd691838168e5e17bbef075394954dc9dc8", size = 20743, upload-time = "2026-04-25T10:44:16.066Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/a4/834f0ebd80844ce67e1bdb011d6f844f61cdb4c1d7cdc56a982bc054cc00/nh3-0.3.3-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:21b058cd20d9f0919421a820a2843fdb5e1749c0bf57a6247ab8f4ba6723c9fc", size = 1428680, upload-time = "2026-02-14T09:34:33.015Z" }, - { url = "https://files.pythonhosted.org/packages/7f/1a/a7d72e750f74c6b71befbeebc4489579fe783466889d41f32e34acde0b6b/nh3-0.3.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f4400a73c2a62859e769f9d36d1b5a7a5c65c4179d1dddd2f6f3095b2db0cbfc", size = 799003, upload-time = "2026-02-14T09:34:35.108Z" }, - { url = "https://files.pythonhosted.org/packages/58/d5/089eb6d65da139dc2223b83b2627e00872eccb5e1afdf5b1d76eb6ad3fcc/nh3-0.3.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1ef87f8e916321a88b45f2d597f29bd56e560ed4568a50f0f1305afab86b7189", size = 846818, upload-time = "2026-02-14T09:34:37Z" }, - { url = "https://files.pythonhosted.org/packages/9b/c6/44a0b65fc7b213a3a725f041ef986534b100e58cd1a2e00f0fd3c9603893/nh3-0.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:a446eae598987f49ee97ac2f18eafcce4e62e7574bd1eb23782e4702e54e217d", size = 1012537, upload-time = "2026-02-14T09:34:38.515Z" }, - { url = "https://files.pythonhosted.org/packages/94/3a/91bcfcc0a61b286b8b25d39e288b9c0ba91c3290d402867d1cd705169844/nh3-0.3.3-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:0d5eb734a78ac364af1797fef718340a373f626a9ff6b4fb0b4badf7927e7b81", size = 1095435, upload-time = "2026-02-14T09:34:40.022Z" }, - { url = "https://files.pythonhosted.org/packages/fd/fd/4617a19d80cf9f958e65724ff5e97bc2f76f2f4c5194c740016606c87bd1/nh3-0.3.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:92a958e6f6d0100e025a5686aafd67e3c98eac67495728f8bb64fbeb3e474493", size = 1056344, upload-time = "2026-02-14T09:34:41.469Z" }, - { url = "https://files.pythonhosted.org/packages/bd/7d/5bcbbc56e71b7dda7ef1d6008098da9c5426d6334137ef32bb2b9c496984/nh3-0.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9ed40cf8449a59a03aa465114fedce1ff7ac52561688811d047917cc878b19ca", size = 1034533, upload-time = "2026-02-14T09:34:43.313Z" }, - { url = "https://files.pythonhosted.org/packages/3f/9c/054eff8a59a8b23b37f0f4ac84cdd688ee84cf5251664c0e14e5d30a8a67/nh3-0.3.3-cp314-cp314t-win32.whl", hash = "sha256:b50c3770299fb2a7c1113751501e8878d525d15160a4c05194d7fe62b758aad8", size = 608305, upload-time = "2026-02-14T09:34:44.622Z" }, - { url = "https://files.pythonhosted.org/packages/d7/b0/64667b8d522c7b859717a02b1a66ba03b529ca1df623964e598af8db1ed5/nh3-0.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:21a63ccb18ddad3f784bb775955839b8b80e347e597726f01e43ca1abcc5c808", size = 620633, upload-time = "2026-02-14T09:34:46.069Z" }, - { url = "https://files.pythonhosted.org/packages/91/b5/ae9909e4ddfd86ee076c4d6d62ba69e9b31061da9d2f722936c52df8d556/nh3-0.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f508ddd4e2433fdcb78c790fc2d24e3a349ba775e5fa904af89891321d4844a3", size = 607027, upload-time = "2026-02-14T09:34:47.91Z" }, - { url = "https://files.pythonhosted.org/packages/13/3e/aef8cf8e0419b530c95e96ae93a5078e9b36c1e6613eeb1df03a80d5194e/nh3-0.3.3-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:e8ee96156f7dfc6e30ecda650e480c5ae0a7d38f0c6fafc3c1c655e2500421d9", size = 1448640, upload-time = "2026-02-14T09:34:49.316Z" }, - { url = "https://files.pythonhosted.org/packages/ca/43/d2011a4f6c0272cb122eeff40062ee06bb2b6e57eabc3a5e057df0d582df/nh3-0.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45fe0d6a607264910daec30360c8a3b5b1500fd832d21b2da608256287bcb92d", size = 839405, upload-time = "2026-02-14T09:34:50.779Z" }, - { url = "https://files.pythonhosted.org/packages/f8/f3/965048510c1caf2a34ed04411a46a04a06eb05563cd06f1aa57b71eb2bc8/nh3-0.3.3-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5bc1d4b30ba1ba896669d944b6003630592665974bd11a3dc2f661bde92798a7", size = 825849, upload-time = "2026-02-14T09:34:52.622Z" }, - { url = "https://files.pythonhosted.org/packages/78/99/b4bbc6ad16329d8db2c2c320423f00b549ca3b129c2b2f9136be2606dbb0/nh3-0.3.3-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f433a2dd66545aad4a720ad1b2150edcdca75bfff6f4e6f378ade1ec138d5e77", size = 1068303, upload-time = "2026-02-14T09:34:54.179Z" }, - { url = "https://files.pythonhosted.org/packages/3f/34/3420d97065aab1b35f3e93ce9c96c8ebd423ce86fe84dee3126790421a2a/nh3-0.3.3-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52e973cb742e95b9ae1b35822ce23992428750f4b46b619fe86eba4205255b30", size = 1029316, upload-time = "2026-02-14T09:34:56.186Z" }, - { url = "https://files.pythonhosted.org/packages/f1/9a/99eda757b14e596fdb2ca5f599a849d9554181aa899274d0d183faef4493/nh3-0.3.3-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c730617bdc15d7092dcc0469dc2826b914c8f874996d105b4bc3842a41c1cd9", size = 919944, upload-time = "2026-02-14T09:34:57.886Z" }, - { url = "https://files.pythonhosted.org/packages/6f/84/c0dc75c7fb596135f999e59a410d9f45bdabb989f1cb911f0016d22b747b/nh3-0.3.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e98fa3dbfd54e25487e36ba500bc29bca3a4cab4ffba18cfb1a35a2d02624297", size = 811461, upload-time = "2026-02-14T09:34:59.65Z" }, - { url = "https://files.pythonhosted.org/packages/7e/ec/b1bf57cab6230eec910e4863528dc51dcf21b57aaf7c88ee9190d62c9185/nh3-0.3.3-cp38-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:3a62b8ae7c235481715055222e54c682422d0495a5c73326807d4e44c5d14691", size = 840360, upload-time = "2026-02-14T09:35:01.444Z" }, - { url = "https://files.pythonhosted.org/packages/37/5e/326ae34e904dde09af1de51219a611ae914111f0970f2f111f4f0188f57e/nh3-0.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fc305a2264868ec8fa16548296f803d8fd9c1fa66cd28b88b605b1bd06667c0b", size = 859872, upload-time = "2026-02-14T09:35:03.348Z" }, - { url = "https://files.pythonhosted.org/packages/09/38/7eba529ce17ab4d3790205da37deabb4cb6edcba15f27b8562e467f2fc97/nh3-0.3.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90126a834c18af03bfd6ff9a027bfa6bbf0e238527bc780a24de6bd7cc1041e2", size = 1023550, upload-time = "2026-02-14T09:35:04.829Z" }, - { url = "https://files.pythonhosted.org/packages/05/a2/556fdecd37c3681b1edee2cf795a6799c6ed0a5551b2822636960d7e7651/nh3-0.3.3-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:24769a428e9e971e4ccfb24628f83aaa7dc3c8b41b130c8ddc1835fa1c924489", size = 1105212, upload-time = "2026-02-14T09:35:06.821Z" }, - { url = "https://files.pythonhosted.org/packages/dd/e3/5db0b0ad663234967d83702277094687baf7c498831a2d3ad3451c11770f/nh3-0.3.3-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:b7a18ee057761e455d58b9d31445c3e4b2594cff4ddb84d2e331c011ef46f462", size = 1069970, upload-time = "2026-02-14T09:35:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/79/b2/2ea21b79c6e869581ce5f51549b6e185c4762233591455bf2a326fb07f3b/nh3-0.3.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5a4b2c1f3e6f3cbe7048e17f4fefad3f8d3e14cc0fd08fb8599e0d5653f6b181", size = 1047588, upload-time = "2026-02-14T09:35:09.911Z" }, - { url = "https://files.pythonhosted.org/packages/e2/92/2e434619e658c806d9c096eed2cdff9a883084299b7b19a3f0824eb8e63d/nh3-0.3.3-cp38-abi3-win32.whl", hash = "sha256:e974850b131fdffa75e7ad8e0d9c7a855b96227b093417fdf1bd61656e530f37", size = 616179, upload-time = "2026-02-14T09:35:11.366Z" }, - { url = "https://files.pythonhosted.org/packages/73/88/1ce287ef8649dc51365b5094bd3713b76454838140a32ab4f8349973883c/nh3-0.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:2efd17c0355d04d39e6d79122b42662277ac10a17ea48831d90b46e5ef7e4fc0", size = 631159, upload-time = "2026-02-14T09:35:12.77Z" }, - { url = "https://files.pythonhosted.org/packages/31/f1/b4835dbde4fb06f29db89db027576d6014081cd278d9b6751facc3e69e43/nh3-0.3.3-cp38-abi3-win_arm64.whl", hash = "sha256:b838e619f483531483d26d889438e53a880510e832d2aafe73f93b7b1ac2bce2", size = 616645, upload-time = "2026-02-14T09:35:14.062Z" }, + { url = "https://files.pythonhosted.org/packages/63/b0/8587ac42a9627ab88e7e221601f1dfccbf4db80b2a29222ea63266dc9abc/nh3-0.3.5-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:23a312224875f72cd16bde417f49071451877e29ef646a60e50fcb69407cc18a", size = 1420126, upload-time = "2026-04-25T10:43:39.834Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1b/1dbc4d0c43f12e8c1784ede17eaee6f061d4fbe5505757c65c49b2ceab95/nh3-0.3.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:387abd011e81959d5a35151a11350a0795c6edeb53ebfa02d2e882dc01299263", size = 793943, upload-time = "2026-04-25T10:43:41.363Z" }, + { url = "https://files.pythonhosted.org/packages/47/9f/d6758d7a14ee964bf439cc35ae4fa24a763a93399c8ef6f22bd11d532d29/nh3-0.3.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48f45e3e914be93a596431aa143dedf1582557bf41a58153c296048d6e3798c9", size = 841150, upload-time = "2026-04-25T10:43:43.007Z" }, + { url = "https://files.pythonhosted.org/packages/b6/36/d5d1ae8374612c98f390e1ea7c610fa6c9716259a03bbf4d15b269f40073/nh3-0.3.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:0a09f51806fd51b4fedbf9ea2b61fef388f19aef0d62fe51199d41648be14588", size = 1008415, upload-time = "2026-04-25T10:43:44.324Z" }, + { url = "https://files.pythonhosted.org/packages/ba/8f/d13a9c3fd2d9c131a2a281737380e9379eb0f8c33fea24c2b923aaafbb15/nh3-0.3.5-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:c357f1d042c67f135a5e6babb2b0e3b9d9224ff4a3543240f597767b01384ffd", size = 1092706, upload-time = "2026-04-25T10:43:45.653Z" }, + { url = "https://files.pythonhosted.org/packages/bb/57/2f3add7f8680fcc896afa6a675cb2bab09982853ee8af40bad621f6b61c4/nh3-0.3.5-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:38748140bf76383ab7ce2dce0ad4cb663855d8fbc9098f7f3483673d09616a17", size = 1048346, upload-time = "2026-04-25T10:43:46.974Z" }, + { url = "https://files.pythonhosted.org/packages/c1/c3/2f9e4ffa82863074d1361bfe949bc46393d91b3411579dfbbd090b24cac5/nh3-0.3.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:84bdeb082544fbcb77a12c034dd77d7da0556fdc0727b787eb6214b958c15e29", size = 1029038, upload-time = "2026-04-25T10:43:48.569Z" }, + { url = "https://files.pythonhosted.org/packages/e8/10/2804deb3f3315184c9cae41702e293c87524b5a21f766b07d7fe3ffbcfbb/nh3-0.3.5-cp314-cp314t-win32.whl", hash = "sha256:c3aae321f67ae66cff2a627115f106a377d4475d10b0e13d97959a13486b9a88", size = 603263, upload-time = "2026-04-25T10:43:49.851Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/f6685248b49f7548fc9a8c335ab3a52f68610b72e8a61576447151e4e2e6/nh3-0.3.5-cp314-cp314t-win_amd64.whl", hash = "sha256:c88605d8d468f7fc1b31e06129bc91d6c96f6c621776c9b504a0da9beac9df5f", size = 616866, upload-time = "2026-04-25T10:43:51.005Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b6/d8c9018635d4acfefde6b68470daa510eed715a350cbaa2f928ba0609f81/nh3-0.3.5-cp314-cp314t-win_arm64.whl", hash = "sha256:72c5bdedec27fa33de6a5326346ea8aa3fe54f6ac294d54c4b204fb66a9f1e79", size = 602566, upload-time = "2026-04-25T10:43:52.283Z" }, + { url = "https://files.pythonhosted.org/packages/85/30/d162e99746a2fb1d98bb0ef23af3e201b156cf09f7de867c7390c8fe1c06/nh3-0.3.5-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3bb854485c9b33e5bb143ff3e49e577073bc6bc320f0ff8fc316dd89c0d3c101", size = 1442393, upload-time = "2026-04-25T10:43:53.556Z" }, + { url = "https://files.pythonhosted.org/packages/25/8c/072120d506978ab053e1732d0efa7c86cb478fee0ee098fda0ac0d31cb34/nh3-0.3.5-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50d401ab2d8e86d59e2126e3ab2a2f45840c405842b626d9a51624b3a33b6878", size = 837722, upload-time = "2026-04-25T10:43:55.073Z" }, + { url = "https://files.pythonhosted.org/packages/52/86/d4e06e28c5ad1c4b065f89737d02631bd49f1660b6ebcf17a87ffcd201da/nh3-0.3.5-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:acfd354e61accbe4c74f8017c6e397a776916dfe47c48643cf7fd84ade826f93", size = 822872, upload-time = "2026-04-25T10:43:56.581Z" }, + { url = "https://files.pythonhosted.org/packages/0a/62/50659255213f241ec5797ae7427464c969397373e83b3659372b341ae869/nh3-0.3.5-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:52d877980d7ca01dc3baf3936bf844828bc6f332962227a684ed79c18cce14c3", size = 1100031, upload-time = "2026-04-25T10:43:58.098Z" }, + { url = "https://files.pythonhosted.org/packages/00/7a/a12ae77593b2fcf3be25df7bc1c01967d0de448bdb4b6c7ec80fe4f5a74f/nh3-0.3.5-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:207c01801d3e9bb8ec08f08689346bdd30ce15b8bf60013a925d08b5388962a4", size = 1057669, upload-time = "2026-04-25T10:43:59.328Z" }, + { url = "https://files.pythonhosted.org/packages/2d/71/5647dc04c0233192a3956fc91708822b21403a06508cacf78083c68e7bf0/nh3-0.3.5-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea232933394d1d58bf7c4bb348dc4660eae6604e1ae81cd2ba6d9ed80d390f3b", size = 914795, upload-time = "2026-04-25T10:44:00.52Z" }, + { url = "https://files.pythonhosted.org/packages/1b/0e/bf298920729f216adcb002acf7ea01b90842603d2e4e2ce9b900d9ee8fab/nh3-0.3.5-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3a787dc76b50de6bee54ef242f26c41dfe47654428e3e94f0fae5bb6dd2cc1", size = 806976, upload-time = "2026-04-25T10:44:01.743Z" }, + { url = "https://files.pythonhosted.org/packages/85/01/26761e1dc2b848e65a62c19e5d39ad446283287cd4afddc89f364ab86bc9/nh3-0.3.5-cp38-abi3-manylinux_2_31_riscv64.whl", hash = "sha256:488928988caad25ba14b1eb5bc74e25e21f3b5e40341d956f3ce4a8bc19460dc", size = 834904, upload-time = "2026-04-25T10:44:03.454Z" }, + { url = "https://files.pythonhosted.org/packages/33/53/0766113e679540ac1edc1b82b1295aecd321eeb75d6fead70109a838b6ee/nh3-0.3.5-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c069570b06aa848457713ad7af4a9905691291548c4466a9ad78ee95808382b", size = 857159, upload-time = "2026-04-25T10:44:05.003Z" }, + { url = "https://files.pythonhosted.org/packages/58/36/734d353dfaf292fed574b8b3092f0ef79dc6404f3879f7faaa61a4701fad/nh3-0.3.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:eeedc90ed8c42c327e8e10e621ccfa314fc6cce35d5929f4297ff1cdb89667c4", size = 1018600, upload-time = "2026-04-25T10:44:06.18Z" }, + { url = "https://files.pythonhosted.org/packages/6b/aa/d9c59c1b49669fcb7bababa55df82385f029ad5c2651f583c3a1141cfdd1/nh3-0.3.5-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:de8e8621853b6470fe928c684ee0d3f39ea8086cebafe4c416486488dea7b68d", size = 1103530, upload-time = "2026-04-25T10:44:07.68Z" }, + { url = "https://files.pythonhosted.org/packages/90/b0/cdd210bfb8d9d43fb02fc3c868336b9955934d8e15e66eb1d15a147b8af0/nh3-0.3.5-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:6ea58cc44d274c643b83547ca9654a0b1a817609b160601356f76a2b744c49ad", size = 1061754, upload-time = "2026-04-25T10:44:09.362Z" }, + { url = "https://files.pythonhosted.org/packages/ce/cb/7a39e72e668c8445bdd95e494b3e21cfdddc68329be8ea3522c8befb46c4/nh3-0.3.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e49c9b564e6bcb03ecd2f057213df9a0de15a95812ac9db9600b590db23d3ae9", size = 1040938, upload-time = "2026-04-25T10:44:10.775Z" }, + { url = "https://files.pythonhosted.org/packages/af/4c/fc2f9ed208a3801a319f59b5fea03cdc20cf3bd8af14be930d3a8de01224/nh3-0.3.5-cp38-abi3-win32.whl", hash = "sha256:559e4c73b689e9a7aa97ac9760b1bc488038d7c1a575aa4ab5a0e19ee9630c0f", size = 611445, upload-time = "2026-04-25T10:44:12.317Z" }, + { url = "https://files.pythonhosted.org/packages/db/1a/e4c9b5e2ae13e6092c9ec16d8ca30646cb01fcdea245f36c5b08fd21fbd5/nh3-0.3.5-cp38-abi3-win_amd64.whl", hash = "sha256:45e6a65dc88a300a2e3502cb9c8e6d1d6b831d6fba7470643333609c6aab1f30", size = 626502, upload-time = "2026-04-25T10:44:13.682Z" }, + { url = "https://files.pythonhosted.org/packages/80/7c/19cd0671d1ba2762fb388fc149697d20d0568ccfeef833b11280a619e526/nh3-0.3.5-cp38-abi3-win_arm64.whl", hash = "sha256:8f85285700a18e9f3fc5bff41fe573fa84f81542ef13b48a89f9fecca0474d3b", size = 611069, upload-time = "2026-04-25T10:44:14.934Z" }, ] [[package]] name = "packaging" -version = "26.0" +version = "26.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, + { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" }, ] [[package]] @@ -690,11 +690,11 @@ wheels = [ [[package]] name = "pygments" -version = "2.19.2" +version = "2.20.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, ] [[package]] @@ -708,7 +708,7 @@ wheels = [ [[package]] name = "pytest" -version = "9.0.2" +version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -719,23 +719,23 @@ dependencies = [ { name = "pygments" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, + { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" }, ] [[package]] name = "pytest-cov" -version = "7.0.0" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage", extra = ["toml"] }, { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/51/a849f96e117386044471c8ec2bd6cfebacda285da9525c9106aeb28da671/pytest_cov-7.1.0.tar.gz", hash = "sha256:30674f2b5f6351aa09702a9c8c364f6a01c27aae0c1366ae8016160d1efc56b2", size = 55592, upload-time = "2026-03-21T20:11:16.284Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7a/d968e294073affff457b041c2be9868a40c1c71f4a35fcc1e45e5493067b/pytest_cov-7.1.0-py3-none-any.whl", hash = "sha256:a0461110b7865f9a271aa1b51e516c9a95de9d696734a2f71e3e78f46e1d4678", size = 22876, upload-time = "2026-03-21T20:11:14.438Z" }, ] [[package]] @@ -822,21 +822,21 @@ wheels = [ [[package]] name = "readme-renderer" -version = "44.0" +version = "45.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "docutils" }, { name = "nh3" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5a/a9/104ec9234c8448c4379768221ea6df01260cd6c2ce13182d4eac531c8342/readme_renderer-44.0.tar.gz", hash = "sha256:8712034eabbfa6805cacf1402b4eeb2a73028f72d1166d6f5cb7f9c047c5d1e1", size = 32056, upload-time = "2024-07-08T15:00:57.805Z" } +sdist = { url = "https://files.pythonhosted.org/packages/02/51/d3a6ea424652c60f05600d8c2e01a55c913755e7cdad64afabbd1aa16f44/readme_renderer-45.0.tar.gz", hash = "sha256:030a8fac74904f8fba11ad1bb6964e3f76e896dc7e5e71f16af190c9056696d1", size = 36172, upload-time = "2026-06-09T21:05:17.37Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/67/921ec3024056483db83953ae8e48079ad62b92db7880013ca77632921dd0/readme_renderer-44.0-py3-none-any.whl", hash = "sha256:2fbca89b81a08526aadf1357a8c2ae889ec05fb03f5da67f9769c9a592166151", size = 13310, upload-time = "2024-07-08T15:00:56.577Z" }, + { url = "https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl", hash = "sha256:3385ed220117104a2bceb4a9dac8c5fdf6d1f96890d7ea2a9c7174fd5c84091f", size = 14134, upload-time = "2026-06-09T21:05:15.85Z" }, ] [[package]] name = "requests" -version = "2.32.5" +version = "2.34.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -844,9 +844,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/c3/e2a2b89f2d3e2179abd6d00ebd70bff6273f37fb3e0cc209f48b39d00cbf/requests-2.34.2.tar.gz", hash = "sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed", size = 142856, upload-time = "2026-05-14T19:25:27.735Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, + { url = "https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl", hash = "sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0", size = 73075, upload-time = "2026-05-14T19:25:26.443Z" }, ] [[package]] @@ -863,16 +863,16 @@ wheels = [ [[package]] name = "responses" -version = "0.26.0" +version = "0.26.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, { name = "requests" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/b4/b7e040379838cc71bf5aabdb26998dfbe5ee73904c92c1c161faf5de8866/responses-0.26.0.tar.gz", hash = "sha256:c7f6923e6343ef3682816ba421c006626777893cb0d5e1434f674b649bac9eb4", size = 81303, upload-time = "2026-02-19T14:38:05.574Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c2/58/1fb6de3503428196df78638f991ec8095274f1ee9723e272ee4d9ff0092b/responses-0.26.1.tar.gz", hash = "sha256:2eb3218553cc8f79b57d257bac23af5e1bf381f5b9390b1767816f0843e01dc2", size = 83088, upload-time = "2026-05-21T19:56:39.747Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/04/7f73d05b556da048923e31a0cc878f03be7c5425ed1f268082255c75d872/responses-0.26.0-py3-none-any.whl", hash = "sha256:03ec4409088cd5c66b71ecbbbd27fe2c58ddfad801c66203457b3e6a04868c37", size = 35099, upload-time = "2026-02-19T14:38:03.847Z" }, + { url = "https://files.pythonhosted.org/packages/3a/31/6a620b4427d546b9e7cca8b3b8c5f0559d9cef2bb9eedcda7f73c1473c19/responses-0.26.1-py3-none-any.whl", hash = "sha256:8aacc4586eb08fb2208ef64a9eb4258d9b0c6e6f4260845f2f018ab847495345", size = 35502, upload-time = "2026-05-21T19:56:38.046Z" }, ] [[package]] @@ -886,40 +886,40 @@ wheels = [ [[package]] name = "rich" -version = "14.3.3" +version = "15.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/c6/f3b320c27991c46f43ee9d856302c70dc2d0fb2dba4842ff739d5f46b393/rich-14.3.3.tar.gz", hash = "sha256:b8daa0b9e4eef54dd8cf7c86c03713f53241884e814f4e2f5fb342fe520f639b", size = 230582, upload-time = "2026-02-19T17:23:12.474Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/8f/0722ca900cc807c13a6a0c696dacf35430f72e0ec571c4275d2371fca3e9/rich-15.0.0.tar.gz", hash = "sha256:edd07a4824c6b40189fb7ac9bc4c52536e9780fbbfbddf6f1e2502c31b068c36", size = 230680, upload-time = "2026-04-12T08:24:00.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/25/b208c5683343959b670dc001595f2f3737e051da617f66c31f7c4fa93abc/rich-14.3.3-py3-none-any.whl", hash = "sha256:793431c1f8619afa7d3b52b2cdec859562b950ea0d4b6b505397612db8d5362d", size = 310458, upload-time = "2026-02-19T17:23:13.732Z" }, + { url = "https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl", hash = "sha256:33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb", size = 310654, upload-time = "2026-04-12T08:24:02.83Z" }, ] [[package]] name = "ruff" -version = "0.15.6" +version = "0.15.17" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/df/f8629c19c5318601d3121e230f74cbee7a3732339c52b21daa2b82ef9c7d/ruff-0.15.6.tar.gz", hash = "sha256:8394c7bb153a4e3811a4ecdacd4a8e6a4fa8097028119160dffecdcdf9b56ae4", size = 4597916, upload-time = "2026-03-12T23:05:47.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/a9/3abdf488f1bf3d24c699415e454ed554a6350d5d89ce183be1ee0a3361ac/ruff-0.15.17.tar.gz", hash = "sha256:2ec446937fd16c8c4de2674a209cc5af64d9c6f17d21fbf1151054fa0bcf5219", size = 4743346, upload-time = "2026-06-11T17:54:47.663Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/2f/4e03a7e5ce99b517e98d3b4951f411de2b0fa8348d39cf446671adcce9a2/ruff-0.15.6-py3-none-linux_armv6l.whl", hash = "sha256:7c98c3b16407b2cf3d0f2b80c80187384bc92c6774d85fefa913ecd941256fff", size = 10508953, upload-time = "2026-03-12T23:05:17.246Z" }, - { url = "https://files.pythonhosted.org/packages/70/60/55bcdc3e9f80bcf39edf0cd272da6fa511a3d94d5a0dd9e0adf76ceebdb4/ruff-0.15.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ee7dcfaad8b282a284df4aa6ddc2741b3f4a18b0555d626805555a820ea181c3", size = 10942257, upload-time = "2026-03-12T23:05:23.076Z" }, - { url = "https://files.pythonhosted.org/packages/e7/f9/005c29bd1726c0f492bfa215e95154cf480574140cb5f867c797c18c790b/ruff-0.15.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3bd9967851a25f038fc8b9ae88a7fbd1b609f30349231dffaa37b6804923c4bb", size = 10322683, upload-time = "2026-03-12T23:05:33.738Z" }, - { url = "https://files.pythonhosted.org/packages/5f/74/2f861f5fd7cbb2146bddb5501450300ce41562da36d21868c69b7a828169/ruff-0.15.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13f4594b04e42cd24a41da653886b04d2ff87adbf57497ed4f728b0e8a4866f8", size = 10660986, upload-time = "2026-03-12T23:05:53.245Z" }, - { url = "https://files.pythonhosted.org/packages/c1/a1/309f2364a424eccb763cdafc49df843c282609f47fe53aa83f38272389e0/ruff-0.15.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2ed8aea2f3fe57886d3f00ea5b8aae5bf68d5e195f487f037a955ff9fbaac9e", size = 10332177, upload-time = "2026-03-12T23:05:56.145Z" }, - { url = "https://files.pythonhosted.org/packages/30/41/7ebf1d32658b4bab20f8ac80972fb19cd4e2c6b78552be263a680edc55ac/ruff-0.15.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70789d3e7830b848b548aae96766431c0dc01a6c78c13381f423bf7076c66d15", size = 11170783, upload-time = "2026-03-12T23:06:01.742Z" }, - { url = "https://files.pythonhosted.org/packages/76/be/6d488f6adca047df82cd62c304638bcb00821c36bd4881cfca221561fdfc/ruff-0.15.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:542aaf1de3154cea088ced5a819ce872611256ffe2498e750bbae5247a8114e9", size = 12044201, upload-time = "2026-03-12T23:05:28.697Z" }, - { url = "https://files.pythonhosted.org/packages/71/68/e6f125df4af7e6d0b498f8d373274794bc5156b324e8ab4bf5c1b4fc0ec7/ruff-0.15.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c22e6f02c16cfac3888aa636e9eba857254d15bbacc9906c9689fdecb1953ab", size = 11421561, upload-time = "2026-03-12T23:05:31.236Z" }, - { url = "https://files.pythonhosted.org/packages/f1/9f/f85ef5fd01a52e0b472b26dc1b4bd228b8f6f0435975442ffa4741278703/ruff-0.15.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98893c4c0aadc8e448cfa315bd0cc343a5323d740fe5f28ef8a3f9e21b381f7e", size = 11310928, upload-time = "2026-03-12T23:05:45.288Z" }, - { url = "https://files.pythonhosted.org/packages/8c/26/b75f8c421f5654304b89471ed384ae8c7f42b4dff58fa6ce1626d7f2b59a/ruff-0.15.6-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:70d263770d234912374493e8cc1e7385c5d49376e41dfa51c5c3453169dc581c", size = 11235186, upload-time = "2026-03-12T23:05:50.677Z" }, - { url = "https://files.pythonhosted.org/packages/fc/d4/d5a6d065962ff7a68a86c9b4f5500f7d101a0792078de636526c0edd40da/ruff-0.15.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:55a1ad63c5a6e54b1f21b7514dfadc0c7fb40093fa22e95143cf3f64ebdcd512", size = 10635231, upload-time = "2026-03-12T23:05:37.044Z" }, - { url = "https://files.pythonhosted.org/packages/d6/56/7c3acf3d50910375349016cf33de24be021532042afbed87942858992491/ruff-0.15.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8dc473ba093c5ec238bb1e7429ee676dca24643c471e11fbaa8a857925b061c0", size = 10340357, upload-time = "2026-03-12T23:06:04.748Z" }, - { url = "https://files.pythonhosted.org/packages/06/54/6faa39e9c1033ff6a3b6e76b5df536931cd30caf64988e112bbf91ef5ce5/ruff-0.15.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:85b042377c2a5561131767974617006f99f7e13c63c111b998f29fc1e58a4cfb", size = 10860583, upload-time = "2026-03-12T23:05:58.978Z" }, - { url = "https://files.pythonhosted.org/packages/cb/1e/509a201b843b4dfb0b32acdedf68d951d3377988cae43949ba4c4133a96a/ruff-0.15.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cef49e30bc5a86a6a92098a7fbf6e467a234d90b63305d6f3ec01225a9d092e0", size = 11410976, upload-time = "2026-03-12T23:05:39.955Z" }, - { url = "https://files.pythonhosted.org/packages/6c/25/3fc9114abf979a41673ce877c08016f8e660ad6cf508c3957f537d2e9fa9/ruff-0.15.6-py3-none-win32.whl", hash = "sha256:bbf67d39832404812a2d23020dda68fee7f18ce15654e96fb1d3ad21a5fe436c", size = 10616872, upload-time = "2026-03-12T23:05:42.451Z" }, - { url = "https://files.pythonhosted.org/packages/89/7a/09ece68445ceac348df06e08bf75db72d0e8427765b96c9c0ffabc1be1d9/ruff-0.15.6-py3-none-win_amd64.whl", hash = "sha256:aee25bc84c2f1007ecb5037dff75cef00414fdf17c23f07dc13e577883dca406", size = 11787271, upload-time = "2026-03-12T23:05:20.168Z" }, - { url = "https://files.pythonhosted.org/packages/7f/d0/578c47dd68152ddddddf31cd7fc67dc30b7cdf639a86275fda821b0d9d98/ruff-0.15.6-py3-none-win_arm64.whl", hash = "sha256:c34de3dd0b0ba203be50ae70f5910b17188556630e2178fd7d79fc030eb0d837", size = 11060497, upload-time = "2026-03-12T23:05:25.968Z" }, + { url = "https://files.pythonhosted.org/packages/db/4d/e11259f5da07cb6afb2d074c31bf09da9671993f7329d4f15d2fdc458301/ruff-0.15.17-py3-none-linux_armv6l.whl", hash = "sha256:d9feddb927fc68bd295f5eebc587a7e42cfaf9b65f60ca4a2386febff575da8f", size = 10856677, upload-time = "2026-06-11T17:54:49.533Z" }, + { url = "https://files.pythonhosted.org/packages/29/3e/772d679e1a0dc058e58875bd2c0cb713a0530877b4a76fee3c7966df0d49/ruff-0.15.17-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:25805a226d741c47d274a35ad5c10a7dde175fcddfa511d7cf3da0a21eb3eab7", size = 11223443, upload-time = "2026-06-11T17:55:00.573Z" }, + { url = "https://files.pythonhosted.org/packages/68/58/bd41f7688b2fd5623012605130ed70e60aa7f2244baa3d5066bdd61530c8/ruff-0.15.17-py3-none-macosx_11_0_arm64.whl", hash = "sha256:f6ad73b14c2d18a3bf8ad7cb6974294d7f613a7898604826058e6ac64918ef4d", size = 10566458, upload-time = "2026-06-11T17:55:07.52Z" }, + { url = "https://files.pythonhosted.org/packages/d8/5b/733371013fcf1ec339e477ece6ab42bfe10bdd9bba8ee88a9516aa56bfc0/ruff-0.15.17-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ba0c1e4f95bcb3869d0d30cbd5917071ef2e28665abfec970cdab0492c713ed", size = 10914483, upload-time = "2026-06-11T17:55:05.501Z" }, + { url = "https://files.pythonhosted.org/packages/bd/cc/6f24251cc0252f7239391ccb85833f320efad14ebe5b443943f37ced6332/ruff-0.15.17-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81647960f10bff57d2e51cadd0c3950fe598400c852863a038720ef5b8cca91e", size = 10647497, upload-time = "2026-06-11T17:54:57.733Z" }, + { url = "https://files.pythonhosted.org/packages/68/dd/0d10c17ce1a1624d6fc3156309c3f834fdb5dfaad026ec90c85684f3990e/ruff-0.15.17-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e01a84ddbc8c16c23055ba3924476850f1bbc1917cebbb9376665a63e74260d", size = 11416967, upload-time = "2026-06-11T17:54:51.461Z" }, + { url = "https://files.pythonhosted.org/packages/2f/91/556bfb156f6144f355e831c23db00b2fc4120f86b3ce81cc5f7fd2df51f3/ruff-0.15.17-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fe9f653152f8f294f9f7e03bf3a453d8b4a27f7a59c78c8666167f2b17b96c", size = 12335770, upload-time = "2026-06-11T17:54:45.793Z" }, + { url = "https://files.pythonhosted.org/packages/88/82/8b5999aa13355e926f06d9f42a32dcca862f623bf0363785ff89d607dffd/ruff-0.15.17-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c0fe88a7676e7a05b73174d4d4a59cb2ac21ff8263583f87a81a6018475a978", size = 11575441, upload-time = "2026-06-11T17:54:32.661Z" }, + { url = "https://files.pythonhosted.org/packages/11/93/f10377bb04109ca0e8cbc483ff1982c54b6d418210041776f93e8cdc7fa9/ruff-0.15.17-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecfc3c7878fff94633ab0348524e093f9ce3243080416dd7d14f8ba400174719", size = 11557614, upload-time = "2026-06-11T17:54:34.698Z" }, + { url = "https://files.pythonhosted.org/packages/c7/a6/eeeae7f7d5493df41649ab3db92f086b2d0a30199e4efdf8e3dd7a033f24/ruff-0.15.17-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:b8461180b22420b1bdc289909410930761629fddf2a5aaf60fae1ab26cedc4c4", size = 11544450, upload-time = "2026-06-11T17:54:39.042Z" }, + { url = "https://files.pythonhosted.org/packages/32/88/5991ce565129a24dd4a00db1254b3b5db2e53018cbe4018ea5a89738e727/ruff-0.15.17-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6eccbe50a038b503e7140b441aa9c7fc8c1f36edf23ebef9f4165c2f28f568b7", size = 10892524, upload-time = "2026-06-11T17:55:09.432Z" }, + { url = "https://files.pythonhosted.org/packages/f5/1d/0fdd248313425f55223968af04b0a42125466a8d88d21c1d99c6af0a51e8/ruff-0.15.17-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:382fc0521025f5a8ad447d8bdd523545d0d7646adb718eb1c2dac5065ec27c0f", size = 10659573, upload-time = "2026-06-11T17:54:36.824Z" }, + { url = "https://files.pythonhosted.org/packages/9e/0e/072e8260deb9461062ce9311ced27a8e541229a6ffd483013dd37661e43e/ruff-0.15.17-py3-none-musllinux_1_2_i686.whl", hash = "sha256:456d41fcd1b2777ad63f09a6e7121d43f7b688bbc76a800c10f7f8fb1f912c3f", size = 11127818, upload-time = "2026-06-11T17:55:03.124Z" }, + { url = "https://files.pythonhosted.org/packages/ab/b4/55060a34163121498014696b5f656db5b8c6963768f227dbf0d76b311073/ruff-0.15.17-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b1a04bcc94ae6194e9db05d16ad31f298a7194bfbcb08258bbe589cee1d587b8", size = 11655901, upload-time = "2026-06-11T17:54:53.562Z" }, + { url = "https://files.pythonhosted.org/packages/49/71/9b29d6b87cef468d697f43c6a91e3fae4a80185779d7d5a4ef27d173439f/ruff-0.15.17-py3-none-win32.whl", hash = "sha256:596065960ab1ff593f744220c9fe6580eda00a95003cffa9f4048bb5b1bf0392", size = 10925574, upload-time = "2026-06-11T17:54:55.723Z" }, + { url = "https://files.pythonhosted.org/packages/3d/b2/8fc77f3723228836fa5d12497eb71c808f83782e10d058d2b15cfa14640b/ruff-0.15.17-py3-none-win_amd64.whl", hash = "sha256:6769e5fa1710b179b92e0bfa5a51735b35baea9013dadb06d5f44cbcf9547084", size = 12058788, upload-time = "2026-06-11T17:54:41.042Z" }, + { url = "https://files.pythonhosted.org/packages/2d/c7/c53e8dbff9c9dc4b7928773421ae294a5d28fcb8dcda1a089579d3a7e510/ruff-0.15.17-py3-none-win_arm64.whl", hash = "sha256:f3be1fbb34bcdfd146240d8fb92a709d4c2c8191348580a3c044ec60fa0b4456", size = 11355275, upload-time = "2026-06-11T17:54:43.635Z" }, ] [[package]] @@ -955,56 +955,56 @@ wheels = [ [[package]] name = "tomli" -version = "2.4.0" +version = "2.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/de/48c59722572767841493b26183a0d1cc411d54fd759c5607c4590b6563a6/tomli-2.4.1.tar.gz", hash = "sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f", size = 17543, upload-time = "2026-03-25T20:22:03.828Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, - { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, - { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, - { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, - { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, - { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, - { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, - { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, - { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, - { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, - { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, - { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, - { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, - { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, - { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, - { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, - { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, - { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, - { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, - { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, - { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, - { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, - { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, - { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, - { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, - { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, - { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, - { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, - { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, - { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, - { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, - { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, - { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, - { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, - { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, - { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, - { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, - { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, - { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, - { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, + { url = "https://files.pythonhosted.org/packages/f4/11/db3d5885d8528263d8adc260bb2d28ebf1270b96e98f0e0268d32b8d9900/tomli-2.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f8f0fc26ec2cc2b965b7a3b87cd19c5c6b8c5e5f436b984e85f486d652285c30", size = 154704, upload-time = "2026-03-25T20:21:10.473Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f7/675db52c7e46064a9aa928885a9b20f4124ecb9bc2e1ce74c9106648d202/tomli-2.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4ab97e64ccda8756376892c53a72bd1f964e519c77236368527f758fbc36a53a", size = 149454, upload-time = "2026-03-25T20:21:12.036Z" }, + { url = "https://files.pythonhosted.org/packages/61/71/81c50943cf953efa35bce7646caab3cf457a7d8c030b27cfb40d7235f9ee/tomli-2.4.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96481a5786729fd470164b47cdb3e0e58062a496f455ee41b4403be77cb5a076", size = 237561, upload-time = "2026-03-25T20:21:13.098Z" }, + { url = "https://files.pythonhosted.org/packages/48/c1/f41d9cb618acccca7df82aaf682f9b49013c9397212cb9f53219e3abac37/tomli-2.4.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a881ab208c0baf688221f8cecc5401bd291d67e38a1ac884d6736cbcd8247e9", size = 243824, upload-time = "2026-03-25T20:21:14.569Z" }, + { url = "https://files.pythonhosted.org/packages/22/e4/5a816ecdd1f8ca51fb756ef684b90f2780afc52fc67f987e3c61d800a46d/tomli-2.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47149d5bd38761ac8be13a84864bf0b7b70bc051806bc3669ab1cbc56216b23c", size = 242227, upload-time = "2026-03-25T20:21:15.712Z" }, + { url = "https://files.pythonhosted.org/packages/6b/49/2b2a0ef529aa6eec245d25f0c703e020a73955ad7edf73e7f54ddc608aa5/tomli-2.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ec9bfaf3ad2df51ace80688143a6a4ebc09a248f6ff781a9945e51937008fcbc", size = 247859, upload-time = "2026-03-25T20:21:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/83/bd/6c1a630eaca337e1e78c5903104f831bda934c426f9231429396ce3c3467/tomli-2.4.1-cp311-cp311-win32.whl", hash = "sha256:ff2983983d34813c1aeb0fa89091e76c3a22889ee83ab27c5eeb45100560c049", size = 97204, upload-time = "2026-03-25T20:21:18.079Z" }, + { url = "https://files.pythonhosted.org/packages/42/59/71461df1a885647e10b6bb7802d0b8e66480c61f3f43079e0dcd315b3954/tomli-2.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ee18d9ebdb417e384b58fe414e8d6af9f4e7a0ae761519fb50f721de398dd4e", size = 108084, upload-time = "2026-03-25T20:21:18.978Z" }, + { url = "https://files.pythonhosted.org/packages/b8/83/dceca96142499c069475b790e7913b1044c1a4337e700751f48ed723f883/tomli-2.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:c2541745709bad0264b7d4705ad453b76ccd191e64aa6f0fc66b69a293a45ece", size = 95285, upload-time = "2026-03-25T20:21:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ba/42f134a3fe2b370f555f44b1d72feebb94debcab01676bf918d0cb70e9aa/tomli-2.4.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c742f741d58a28940ce01d58f0ab2ea3ced8b12402f162f4d534dfe18ba1cd6a", size = 155924, upload-time = "2026-03-25T20:21:21.626Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c7/62d7a17c26487ade21c5422b646110f2162f1fcc95980ef7f63e73c68f14/tomli-2.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7f86fd587c4ed9dd76f318225e7d9b29cfc5a9d43de44e5754db8d1128487085", size = 150018, upload-time = "2026-03-25T20:21:23.002Z" }, + { url = "https://files.pythonhosted.org/packages/5c/05/79d13d7c15f13bdef410bdd49a6485b1c37d28968314eabee452c22a7fda/tomli-2.4.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ff18e6a727ee0ab0388507b89d1bc6a22b138d1e2fa56d1ad494586d61d2eae9", size = 244948, upload-time = "2026-03-25T20:21:24.04Z" }, + { url = "https://files.pythonhosted.org/packages/10/90/d62ce007a1c80d0b2c93e02cab211224756240884751b94ca72df8a875ca/tomli-2.4.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:136443dbd7e1dee43c68ac2694fde36b2849865fa258d39bf822c10e8068eac5", size = 253341, upload-time = "2026-03-25T20:21:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/1a/7e/caf6496d60152ad4ed09282c1885cca4eea150bfd007da84aea07bcc0a3e/tomli-2.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e262d41726bc187e69af7825504c933b6794dc3fbd5945e41a79bb14c31f585", size = 248159, upload-time = "2026-03-25T20:21:26.364Z" }, + { url = "https://files.pythonhosted.org/packages/99/e7/c6f69c3120de34bbd882c6fba7975f3d7a746e9218e56ab46a1bc4b42552/tomli-2.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5cb41aa38891e073ee49d55fbc7839cfdb2bc0e600add13874d048c94aadddd1", size = 253290, upload-time = "2026-03-25T20:21:27.46Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2f/4a3c322f22c5c66c4b836ec58211641a4067364f5dcdd7b974b4c5da300c/tomli-2.4.1-cp312-cp312-win32.whl", hash = "sha256:da25dc3563bff5965356133435b757a795a17b17d01dbc0f42fb32447ddfd917", size = 98141, upload-time = "2026-03-25T20:21:28.492Z" }, + { url = "https://files.pythonhosted.org/packages/24/22/4daacd05391b92c55759d55eaee21e1dfaea86ce5c571f10083360adf534/tomli-2.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:52c8ef851d9a240f11a88c003eacb03c31fc1c9c4ec64a99a0f922b93874fda9", size = 108847, upload-time = "2026-03-25T20:21:29.386Z" }, + { url = "https://files.pythonhosted.org/packages/68/fd/70e768887666ddd9e9f5d85129e84910f2db2796f9096aa02b721a53098d/tomli-2.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:f758f1b9299d059cc3f6546ae2af89670cb1c4d48ea29c3cacc4fe7de3058257", size = 95088, upload-time = "2026-03-25T20:21:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/07/06/b823a7e818c756d9a7123ba2cda7d07bc2dd32835648d1a7b7b7a05d848d/tomli-2.4.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:36d2bd2ad5fb9eaddba5226aa02c8ec3fa4f192631e347b3ed28186d43be6b54", size = 155866, upload-time = "2026-03-25T20:21:31.65Z" }, + { url = "https://files.pythonhosted.org/packages/14/6f/12645cf7f08e1a20c7eb8c297c6f11d31c1b50f316a7e7e1e1de6e2e7b7e/tomli-2.4.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:eb0dc4e38e6a1fd579e5d50369aa2e10acfc9cace504579b2faabb478e76941a", size = 149887, upload-time = "2026-03-25T20:21:33.028Z" }, + { url = "https://files.pythonhosted.org/packages/5c/e0/90637574e5e7212c09099c67ad349b04ec4d6020324539297b634a0192b0/tomli-2.4.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c7f2c7f2b9ca6bdeef8f0fa897f8e05085923eb091721675170254cbc5b02897", size = 243704, upload-time = "2026-03-25T20:21:34.51Z" }, + { url = "https://files.pythonhosted.org/packages/10/8f/d3ddb16c5a4befdf31a23307f72828686ab2096f068eaf56631e136c1fdd/tomli-2.4.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f3c6818a1a86dd6dca7ddcaaf76947d5ba31aecc28cb1b67009a5877c9a64f3f", size = 251628, upload-time = "2026-03-25T20:21:36.012Z" }, + { url = "https://files.pythonhosted.org/packages/e3/f1/dbeeb9116715abee2485bf0a12d07a8f31af94d71608c171c45f64c0469d/tomli-2.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d312ef37c91508b0ab2cee7da26ec0b3ed2f03ce12bd87a588d771ae15dcf82d", size = 247180, upload-time = "2026-03-25T20:21:37.136Z" }, + { url = "https://files.pythonhosted.org/packages/d3/74/16336ffd19ed4da28a70959f92f506233bd7cfc2332b20bdb01591e8b1d1/tomli-2.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:51529d40e3ca50046d7606fa99ce3956a617f9b36380da3b7f0dd3dd28e68cb5", size = 251674, upload-time = "2026-03-25T20:21:38.298Z" }, + { url = "https://files.pythonhosted.org/packages/16/f9/229fa3434c590ddf6c0aa9af64d3af4b752540686cace29e6281e3458469/tomli-2.4.1-cp313-cp313-win32.whl", hash = "sha256:2190f2e9dd7508d2a90ded5ed369255980a1bcdd58e52f7fe24b8162bf9fedbd", size = 97976, upload-time = "2026-03-25T20:21:39.316Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1e/71dfd96bcc1c775420cb8befe7a9d35f2e5b1309798f009dca17b7708c1e/tomli-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d65a2fbf9d2f8352685bc1364177ee3923d6baf5e7f43ea4959d7d8bc326a36", size = 108755, upload-time = "2026-03-25T20:21:40.248Z" }, + { url = "https://files.pythonhosted.org/packages/83/7a/d34f422a021d62420b78f5c538e5b102f62bea616d1d75a13f0a88acb04a/tomli-2.4.1-cp313-cp313-win_arm64.whl", hash = "sha256:4b605484e43cdc43f0954ddae319fb75f04cc10dd80d830540060ee7cd0243cd", size = 95265, upload-time = "2026-03-25T20:21:41.219Z" }, + { url = "https://files.pythonhosted.org/packages/3c/fb/9a5c8d27dbab540869f7c1f8eb0abb3244189ce780ba9cd73f3770662072/tomli-2.4.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:fd0409a3653af6c147209d267a0e4243f0ae46b011aa978b1080359fddc9b6cf", size = 155726, upload-time = "2026-03-25T20:21:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/62/05/d2f816630cc771ad836af54f5001f47a6f611d2d39535364f148b6a92d6b/tomli-2.4.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a120733b01c45e9a0c34aeef92bf0cf1d56cfe81ed9d47d562f9ed591a9828ac", size = 149859, upload-time = "2026-03-25T20:21:43.386Z" }, + { url = "https://files.pythonhosted.org/packages/ce/48/66341bdb858ad9bd0ceab5a86f90eddab127cf8b046418009f2125630ecb/tomli-2.4.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:559db847dc486944896521f68d8190be1c9e719fced785720d2216fe7022b662", size = 244713, upload-time = "2026-03-25T20:21:44.474Z" }, + { url = "https://files.pythonhosted.org/packages/df/6d/c5fad00d82b3c7a3ab6189bd4b10e60466f22cfe8a08a9394185c8a8111c/tomli-2.4.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01f520d4f53ef97964a240a035ec2a869fe1a37dde002b57ebc4417a27ccd853", size = 252084, upload-time = "2026-03-25T20:21:45.62Z" }, + { url = "https://files.pythonhosted.org/packages/00/71/3a69e86f3eafe8c7a59d008d245888051005bd657760e96d5fbfb0b740c2/tomli-2.4.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7f94b27a62cfad8496c8d2513e1a222dd446f095fca8987fceef261225538a15", size = 247973, upload-time = "2026-03-25T20:21:46.937Z" }, + { url = "https://files.pythonhosted.org/packages/67/50/361e986652847fec4bd5e4a0208752fbe64689c603c7ae5ea7cb16b1c0ca/tomli-2.4.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ede3e6487c5ef5d28634ba3f31f989030ad6af71edfb0055cbbd14189ff240ba", size = 256223, upload-time = "2026-03-25T20:21:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/8c/9a/b4173689a9203472e5467217e0154b00e260621caa227b6fa01feab16998/tomli-2.4.1-cp314-cp314-win32.whl", hash = "sha256:3d48a93ee1c9b79c04bb38772ee1b64dcf18ff43085896ea460ca8dec96f35f6", size = 98973, upload-time = "2026-03-25T20:21:49.526Z" }, + { url = "https://files.pythonhosted.org/packages/14/58/640ac93bf230cd27d002462c9af0d837779f8773bc03dee06b5835208214/tomli-2.4.1-cp314-cp314-win_amd64.whl", hash = "sha256:88dceee75c2c63af144e456745e10101eb67361050196b0b6af5d717254dddf7", size = 109082, upload-time = "2026-03-25T20:21:50.506Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2f/702d5e05b227401c1068f0d386d79a589bb12bf64c3d2c72ce0631e3bc49/tomli-2.4.1-cp314-cp314-win_arm64.whl", hash = "sha256:b8c198f8c1805dc42708689ed6864951fd2494f924149d3e4bce7710f8eb5232", size = 96490, upload-time = "2026-03-25T20:21:51.474Z" }, + { url = "https://files.pythonhosted.org/packages/45/4b/b877b05c8ba62927d9865dd980e34a755de541eb65fffba52b4cc495d4d2/tomli-2.4.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:d4d8fe59808a54658fcc0160ecfb1b30f9089906c50b23bcb4c69eddc19ec2b4", size = 164263, upload-time = "2026-03-25T20:21:52.543Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/6ab420d37a270b89f7195dec5448f79400d9e9c1826df982f3f8e97b24fd/tomli-2.4.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7008df2e7655c495dd12d2a4ad038ff878d4ca4b81fccaf82b714e07eae4402c", size = 160736, upload-time = "2026-03-25T20:21:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/02/e0/3630057d8eb170310785723ed5adcdfb7d50cb7e6455f85ba8a3deed642b/tomli-2.4.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1d8591993e228b0c930c4bb0db464bdad97b3289fb981255d6c9a41aedc84b2d", size = 270717, upload-time = "2026-03-25T20:21:55.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/b4/1613716072e544d1a7891f548d8f9ec6ce2faf42ca65acae01d76ea06bb0/tomli-2.4.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:734e20b57ba95624ecf1841e72b53f6e186355e216e5412de414e3c51e5e3c41", size = 278461, upload-time = "2026-03-25T20:21:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/05/38/30f541baf6a3f6df77b3df16b01ba319221389e2da59427e221ef417ac0c/tomli-2.4.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8a650c2dbafa08d42e51ba0b62740dae4ecb9338eefa093aa5c78ceb546fcd5c", size = 274855, upload-time = "2026-03-25T20:21:57.653Z" }, + { url = "https://files.pythonhosted.org/packages/77/a3/ec9dd4fd2c38e98de34223b995a3b34813e6bdadf86c75314c928350ed14/tomli-2.4.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:504aa796fe0569bb43171066009ead363de03675276d2d121ac1a4572397870f", size = 283144, upload-time = "2026-03-25T20:21:59.089Z" }, + { url = "https://files.pythonhosted.org/packages/ef/be/605a6261cac79fba2ec0c9827e986e00323a1945700969b8ee0b30d85453/tomli-2.4.1-cp314-cp314t-win32.whl", hash = "sha256:b1d22e6e9387bf4739fbe23bfa80e93f6b0373a7f1b96c6227c32bef95a4d7a8", size = 108683, upload-time = "2026-03-25T20:22:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/da524626d3b9cc40c168a13da8335fe1c51be12c0a63685cc6db7308daae/tomli-2.4.1-cp314-cp314t-win_amd64.whl", hash = "sha256:2c1c351919aca02858f740c6d33adea0c5deea37f9ecca1cc1ef9e884a619d26", size = 121196, upload-time = "2026-03-25T20:22:01.169Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cd/e80b62269fc78fc36c9af5a6b89c835baa8af28ff5ad28c7028d60860320/tomli-2.4.1-cp314-cp314t-win_arm64.whl", hash = "sha256:eab21f45c7f66c13f2a9e0e1535309cee140182a9cdae1e041d02e47291e8396", size = 100393, upload-time = "2026-03-25T20:22:02.137Z" }, + { url = "https://files.pythonhosted.org/packages/7b/61/cceae43728b7de99d9b847560c262873a1f6c98202171fd5ed62640b494b/tomli-2.4.1-py3-none-any.whl", hash = "sha256:0d85819802132122da43cb86656f8d1f8c6587d54ae7dcaf30e90533028b49fe", size = 14583, upload-time = "2026-03-25T20:22:03.012Z" }, ] [[package]] @@ -1038,20 +1038,20 @@ wheels = [ [[package]] name = "tzdata" -version = "2025.3" +version = "2026.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 198254, upload-time = "2026-04-24T15:22:08.651Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size = 349321, upload-time = "2026-04-24T15:22:05.876Z" }, ] [[package]] name = "urllib3" -version = "2.6.3" +version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, + { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" }, ] [[package]] @@ -1065,9 +1065,9 @@ wheels = [ [[package]] name = "zipp" -version = "3.23.0" +version = "4.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/d8/eab98a517c14134c0b2eb4e2387bc5f457334293ec5d2dd3857ec2966802/zipp-4.1.0.tar.gz", hash = "sha256:4cb57381f544315db7688e976e922a2b18cdb513d21cc194eb42232ba2a3e602", size = 26214, upload-time = "2026-05-18T20:08:57.967Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/3a/13/547360d81e6d88d58492968ffda9f9542854f11310ee556fef14260cc886/zipp-4.1.0-py3-none-any.whl", hash = "sha256:25ad4e16390cd314347dd8f1de67a2ac538ae658ed4ab9db16029c07c188e97f", size = 10238, upload-time = "2026-05-18T20:08:57.045Z" }, ]