diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d7275d2b..dee11b3f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,4 +4,4 @@ # These owners will be the default owners for everything in # the repo. Unless a later match takes precedence -* @kagrski @JimOverholt @igosoft @sbasan @bboot2 @jkrajew +@natalisucks @JimOverholt @sbasan diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 8566b040..6d052b43 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -6,9 +6,9 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 - name: Set Up Poetry @@ -20,7 +20,7 @@ jobs: - name: Build HTML run: poetry run sphinx-build -M html docs/source docs/build - name: Upload artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: html-docs path: docs/build/html/ diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index a5265807..f728daa4 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -19,9 +19,9 @@ jobs: run: | curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Set Up Poetry diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a0d7dca9..60028090 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,9 +17,9 @@ jobs: run: | curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 - name: Set Up Poetry diff --git a/.github/workflows/unittests.yml b/.github/workflows/unittests.yml index 1518436b..6ed6ee6a 100644 --- a/.github/workflows/unittests.yml +++ b/.github/workflows/unittests.yml @@ -19,9 +19,9 @@ jobs: run: | curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash - sudo apt-get install -y nodejs - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Set Up Poetry diff --git a/.github/workflows/version.yml b/.github/workflows/version.yml index b9e5bf11..6bb66cc5 100644 --- a/.github/workflows/version.yml +++ b/.github/workflows/version.yml @@ -12,9 +12,9 @@ jobs: shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.8 - name: Set Up Poetry diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3b20bd13..c1e77ac4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,7 @@ repos: args: ["-l", "120", "--profile", "black"] - repo: https://github.com/hadialqattan/pycln - rev: v1.3.3 + rev: v2.4.0 hooks: - id: pycln args: ["--all"] diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000..3fcbe770 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,4 @@ +# See https://help.github.com/articles/about-codeowners/ +# for more info about CODEOWNERS file + +@natalisucks @JimOverholt @sbasan @cicharka @jpkrajewski @smialy diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 657f57e6..528ff290 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,15 +3,15 @@ We're really glad you want to help. ## Here are some important resources: - * Want to add something from yourself? [Make a PR](https://github.com/CiscoDevNet/catalystwan/pulls) - remember to follow [code guidelines](#code-guidelines). + * Want to add something from yourself? [Make a PR](https://github.com/cisco-open/cisco-catalyst-wan-sdk/pulls) - remember to follow [code guidelines](#code-guidelines). ### Contributors from CiscoDevNet organization: To make a PR - pull the repository, create branch for your changes, make said changes and make the pull request. Now just wait for the review and feedback from our developers. ### Contributors outside CiscoDevNet organization To make a PR - fork our repository, make your changes and make the pull request. Now just wait for the review and feedback from our developers. - * Feel free to review existing [PR](https://github.com/CiscoDevNet/catalystwan/pulls)s, any suggestion is welcome. - * Want to help but you don't have any new ideas for improvement or feature? Take any [issue](https://github.com/CiscoDevNet/catalystwan/issues) and fix it. - * Bugs? [Report it here](https://github.com/CiscoDevNet/catalystwan/issues/new?assignees=&labels=needs+review&template=bug_report.yml) - remember to provide as much information as you can. - * Need some additional feature? [Let us know here](https://github.com/CiscoDevNet/catalystwan/issues/new?assignees=&labels=enhancement&template=feature_request.yml) + * Feel free to review existing [PR](https://github.com/cisco-open/cisco-catalyst-wan-sdk/pulls)s, any suggestion is welcome. + * Want to help but you don't have any new ideas for improvement or feature? Take any [issue](https://github.com/cisco-open/cisco-catalyst-wan-sdk/issues) and fix it. + * Bugs? [Report it here](https://github.com/cisco-open/cisco-catalyst-wan-sdk/issues/new?assignees=&labels=needs+review&template=bug_report.yml) - remember to provide as much information as you can. + * Need some additional feature? [Let us know here](https://github.com/cisco-open/cisco-catalyst-wan-sdk/issues/new?assignees=&labels=enhancement&template=feature_request.yml) ## Testing @@ -37,7 +37,7 @@ Always write a clear log message for your commits. 1. Download Python3.8 or higher. 2. Download repository ``` - git clone https://github.com/CiscoDevNet/catalystwan.git + git clone https://github.com/cisco-open/cisco-catalyst-wan-sdk.git ``` 3. Install and configure poetry (v1.3.1 or higher) https://python-poetry.org/docs/#installation diff --git a/ENDPOINTS.md b/ENDPOINTS.md index ca0433dc..08b1ffba 100644 --- a/ENDPOINTS.md +++ b/ENDPOINTS.md @@ -1,602 +1,611 @@ **THIS FILE WAS AUTO-GENERATED DO NOT EDIT** -Generated for: catalystwan-0.31.0 +Generated for: catalystwan-0.33.5 All URIs are relative to */dataservice* HTTP request | Supported Versions | Method | Payload Type | Return Type | Tenancy Mode ------------ | ------------------ | ------ | ------------ | ----------- | ------------ -POST /admin/user||[**AdministrationUserAndGroup.create_user**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L209)|[**User**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L13)|None| -POST /admin/usergroup||[**AdministrationUserAndGroup.create_user_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L213)|[**UserGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L84)|None| -DELETE /admin/user/{username}||[**AdministrationUserAndGroup.delete_user**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L225)||None| -DELETE /admin/usergroup/{group_name}||[**AdministrationUserAndGroup.delete_user_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L229)||None| -GET /admin/user/userAuthType||[**AdministrationUserAndGroup.find_user_auth_type**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L245)||[**UserAuthType**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L72)| -GET /admin/usergroup||[**AdministrationUserAndGroup.find_user_groups**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L249)||DataSequence[[**UserGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L84)]| -GET /admin/user/role||[**AdministrationUserAndGroup.find_user_role**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L257)||[**UserRole**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L67)| -GET /admin/user||[**AdministrationUserAndGroup.find_users**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L261)||DataSequence[[**User**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L13)]| -GET /admin/user/activeSessions||[**AdministrationUserAndGroup.get_active_sessions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L265)||DataSequence[[**ActiveSession**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L127)]| -DELETE /admin/user/removeSessions||[**AdministrationUserAndGroup.remove_sessions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L277)|[**SessionsDeleteRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L150)|[**InvalidateSessionMessage**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L163)| -POST /admin/user/reset||[**AdministrationUserAndGroup.reset_user**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L281)|[**UserResetRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L122)|None| -GET /admin/resourcegroup|<20.13,>20.4|[**AdministrationUserAndGroup.find_resource_groups**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L285)||DataSequence[[**ResourceGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L172)]| -POST /admin/resourcegroup/switch|<20.13,>20.4|[**AdministrationUserAndGroup.switch_resource_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L290)|[**ResourceGroupSwitchRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L195)|None| -PUT /admin/resourcegroup/{group_id}|<20.13,>20.4|[**AdministrationUserAndGroup.update_resource_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L295)|[**ResourceGroupUpdateRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L187)|None| -DELETE /admin/resourcegroup/{group_id}|<20.13,>20.4|[**AdministrationUserAndGroup.delete_resource_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L300)||None| -POST /admin/resourcegroup|<20.13,>20.4|[**AdministrationUserAndGroup.create_resource_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L305)|[**ResourceGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L172)|None| -PUT /admin/user/password/{username}||[**AdministrationUserAndGroup.update_password**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L319)|[**UserUpdateRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L34)|None| -PUT /admin/user/profile/password||[**AdministrationUserAndGroup.update_profile_password**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L327)|[**ProfilePasswordUpdateRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L167)|None| -PUT /admin/user/{username}||[**AdministrationUserAndGroup.update_user**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L331)|[**UserUpdateRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L34)|None| -PUT /admin/usergroup/{group_name}||[**AdministrationUserAndGroup.update_user_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L335)|[**UserGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/administration_user_and_group.py#L84)|None| -DELETE /certificate/{uuid}||[**CertificateManagementDevice.delete_configuration**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L112)||[**DeviceDeletionResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L15)| -POST /certificate/generate/csr||[**CertificateManagementDevice.generate_csr**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L116)|[**TargetDevice**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L22)|DataSequence[[**DeviceCsrGenerationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L28)]| -POST /certificate/save/vedge/list||[**CertificateManagementDevice.change_vedge_list_validity**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L120)|list[[**VedgeListValidityPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L99)]|[**CertActionResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L107)| -POST /certificate/vedge/list?action={action}||[**CertificateManagementDevice.send_to_controllers**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L124)||[**CertActionResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L107)| -POST /certificate/vsmart/list||[**CertificateManagementDevice.send_to_vbond**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L128)||[**CertActionResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_device.py#L107)| -GET /setting/configuration/webserver/certificate||[**CertificateManagementVManage.show_info**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_vmanage.py#L45)||[**WebServerCertificateInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/certificate_management_vmanage.py#L11)| -GET /client/server||[**Client.server**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/client.py#L67)||[**ServerInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/client.py#L23)| -GET /client/server/ready||[**Client.server_ready**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/client.py#L71)||[**ServerReady**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/client.py#L62)| -GET /client/about||[**Client.about**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/client.py#L75)||[**AboutInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/client.py#L51)| -GET /clusterManagement/tenancy/mode||[**ClusterManagement.get_tenancy_mode**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/cluster_management.py#L69)||[**TenancyMode**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/cluster_management.py#L19)| -GET /clusterManagement/vManage/details/{vmanageIP}||[**ClusterManagement.get_vmanage_details**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/cluster_management.py#L77)||DataSequence[[**VManageDetails**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/cluster_management.py#L26)]| -POST /system/device/{device_uuid}/unlock|>=20.9|[**ConfigurationDeviceInventory.unlock**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L275)|[**DeviceUnlockPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L20)|[**DeviceUnlockResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L25)| -POST /system/device||[**ConfigurationDeviceInventory.create_device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L280)|[**DeviceCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L32)|None| -DELETE /system/device/{uuid}||[**ConfigurationDeviceInventory.delete_device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L284)||[**DeviceDeletionResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L44)| -GET /system/device/{device_category}||[**ConfigurationDeviceInventory.get_device_details**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L291)||DataSequence[[**DeviceDetailsResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L57)]| -POST /system/device/smartaccount/sync||[**ConfigurationDeviceInventory.sync_devices_from_smart_account**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L297)|[**SmartAccountSyncParams**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L212)|[**ProcessId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L220)| -POST /system/device/fileupload||[**ConfigurationDeviceInventory.upload_wan_edge_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L301)|[**SerialFilePayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L224)|[**UploadSerialFileResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L256)| -GET /system/device/bootstrap/device/{uuid}||[**ConfigurationDeviceInventory.generate_bootstrap_configuration**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L305)||[**BoostrapConfiguration**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L248)| -POST /device/action/software/package||[**ConfigurationDeviceSoftwareUpdate.upload_software_to_manager**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/device/software_update.py#L25)|[**SoftwarePackageUploadPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/utils/upgrades_helper.py#L77)|None| -POST /disasterrecovery/activate||[**ConfigurationDisasterRecovery.activate**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L147)||[**ActivateDisasterRecoveryTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L26)| -POST /disasterrecovery/deregister||[**ConfigurationDisasterRecovery.delete**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L151)||[**DeregisterDisasterRecoveryTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L22)| -GET /disasterrecovery/details||[**ConfigurationDisasterRecovery.get_details**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L195)||[**DisasterRecoveryDetailsResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L44)| -GET /disasterrecovery/schedule||[**ConfigurationDisasterRecovery.get_disaster_recovery_local_replication_schedule**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L199)||[**DisasterRecoveryScheduleResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L113)| -GET /disasterrecovery/drstatus||[**ConfigurationDisasterRecovery.get_disaster_recovery_status**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L203)||DataSequence[[**DisasterRecoveryDataCenterStatus**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L129)]| -GET /disasterrecovery/localLatestHistory||[**ConfigurationDisasterRecovery.get_local_history**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L215)||[**LastestLocalHistory**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L136)| -POST /disasterrecovery/validateNodes||[**ConfigurationDisasterRecovery.get_reachability_info**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L219)|list[[**ValidateNodePayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L48)]|DataSequence[[**ValidatedNodeEntry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L54)]| -GET /disasterrecovery/remotedc||[**ConfigurationDisasterRecovery.get_remote_data_center_details**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L223)||DataSequence[[**RemoteDataCenterDetails**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L121)]| -GET /disasterrecovery/remotedc/swversion||[**ConfigurationDisasterRecovery.get_remote_data_center_version**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L227)||[**RemoteDataCentervManageVersionResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L117)| -GET /disasterrecovery/status||[**ConfigurationDisasterRecovery.get_dr_status**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L235)||[**DisasterRecoveryStatusResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L107)| -POST /disasterrecovery/pause||[**ConfigurationDisasterRecovery.pause_dr**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L239)||[**DisasterRecoveryPauseResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L59)| -POST /disasterrecovery/register||[**ConfigurationDisasterRecovery.register**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L255)|[**DisasterRecoveryRegisterPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L89)|[**RegisterDisasterRecoveryTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L18)| -POST /disasterrecovery/unpause||[**ConfigurationDisasterRecovery.unpause_dr**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L267)||[**UnpauseDisasterRecoveryTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L30)| -GET /v1/feature-profile/sdwan/system/aaa/schema|>=20.9|[**SystemFeatureProfile.get_sdwan_system_aaa_parcel_schema**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L20)||None| -GET /v1/feature-profile/sdwan/system|>=20.9|[**SystemFeatureProfile.get_sdwan_system_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L25)|Optional[[**GetFeatureProfilesPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L176)]|DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -POST /v1/feature-profile/sdwan/system|>=20.9|[**SystemFeatureProfile.create_sdwan_system_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L32)|[**FeatureProfileCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -DELETE /v1/feature-profile/sdwan/system/{system_id}|>=20.9|[**SystemFeatureProfile.delete_sdwan_system_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L39)||None| -POST /v1/feature-profile/sdwan/system/{system_id}/aaa|>=20.9|[**SystemFeatureProfile.create_aaa_profile_parcel_for_system**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L44)|[**_ParcelBase**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L172)| -PUT /v1/feature-profile/sdwan/system/{system_id}/aaa/{parcel_id}|>=20.9|[**SystemFeatureProfile.edit_aaa_profile_parcel_for_system**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L49)|[**_ParcelBase**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L172)| -POST /v1/feature-profile/sdwan/transport|>=20.13|[**TransportFeatureProfile.create_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L25)|[**FeatureProfileCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -GET /v1/feature-profile/sdwan/transport|>=20.13|[**TransportFeatureProfile.get_transport_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L32)||DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -GET /v1/feature-profile/sdwan/transport/{profile_id}|>=20.13|[**TransportFeatureProfile.get_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L37)||[**FeatureProfileDetail**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L91)| -PUT /v1/feature-profile/sdwan/transport/{profile_id}|>=20.13|[**TransportFeatureProfile.edit_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L42)|[**FeatureProfileEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L117)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -DELETE /v1/feature-profile/sdwan/transport/{profile_id}|>=20.13|[**TransportFeatureProfile.delete_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L49)||None| -POST /v1/feature-profile/sdwan/transport/{profile_id}/management/vpn|>=20.13|[**TransportFeatureProfile.create_management_vpn_parcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L57)|[**_ParcelBase**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L126)| -PUT /v1/feature-profile/sdwan/transport/{profile_id}/management/vpn/{parcel_id}|>=20.13|[**TransportFeatureProfile.edit_management_vpn_parcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L72)|[**ManagementVPN**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py#L17)|[**ParcelCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L126)| -DELETE /v1/feature-profile/sdwan/transport/{profile_id}/management/vpn/{parcel_id}|>=20.13|[**TransportFeatureProfile.delete_management_vpn_parcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L79)||None| -GET /v1/feature-profile/sdwan/transport|>=20.9|[**TransportFeatureProfile.get_sdwan_transport_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L84)|Optional[[**GetFeatureProfilesPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L176)]|DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -GET /v1/feature-profile/sdwan/transport/cellular-controller/schema|>=20.9|[**TransportFeatureProfile.get_sdwan_transport_cellular_controller_parcel_schema**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L91)||None| -POST /v1/feature-profile/sdwan/transport|>=20.9|[**TransportFeatureProfile.create_sdwan_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L96)|[**FeatureProfileCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -DELETE /v1/feature-profile/sdwan/transport/{transport_id}|>=20.9|[**TransportFeatureProfile.delete_sdwan_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L103)||None| -POST /v1/feature-profile/sdwan/transport/{transport_id}/cellular-controller|>=20.9|[**TransportFeatureProfile.create_cellular_controller_profile_parcel_for_transport**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L108)|[**CellularController**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py#L42)|[**ParcelId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L172)| -POST /template/policy/definition/acl||[**ConfigurationPolicyAclDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L28)|[**AclPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/access_control_list.py#L145)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/acl/{id}||[**ConfigurationPolicyAclDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L32)||None| -PUT /template/policy/definition/acl/{id}||[**ConfigurationPolicyAclDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L40)|[**AclPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/acl||[**ConfigurationPolicyAclDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/acl/{id}||[**ConfigurationPolicyAclDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L48)||[**AclPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L23)| -POST /template/policy/definition/acl/preview||[**ConfigurationPolicyAclDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L52)|[**AclPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/access_control_list.py#L145)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/acl/preview/{id}||[**ConfigurationPolicyAclDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/aclv6||[**ConfigurationPolicyAclIPv6Definition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L28)|[**AclIPv6Policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/access_control_list_ipv6.py#L145)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/aclv6/{id}||[**ConfigurationPolicyAclIPv6Definition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L32)||None| -PUT /template/policy/definition/aclv6/{id}||[**ConfigurationPolicyAclIPv6Definition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L40)|[**AclIPv6PolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/aclv6||[**ConfigurationPolicyAclIPv6Definition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/aclv6/{id}||[**ConfigurationPolicyAclIPv6Definition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L48)||[**AclIPv6PolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L23)| -POST /template/policy/definition/aclv6/preview||[**ConfigurationPolicyAclIPv6Definition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L52)|[**AclIPv6Policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/access_control_list_ipv6.py#L145)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/aclv6/preview/{id}||[**ConfigurationPolicyAclIPv6Definition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/control||[**ConfigurationPolicyControlDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L28)|[**ControlPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/control.py#L314)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/control/{id}||[**ConfigurationPolicyControlDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L32)||None| -PUT /template/policy/definition/control/{id}||[**ConfigurationPolicyControlDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L40)|[**ControlPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/control||[**ConfigurationPolicyControlDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/control/{id}||[**ConfigurationPolicyControlDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L48)||[**ControlPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L23)| -POST /template/policy/definition/control/preview||[**ConfigurationPolicyControlDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L52)|[**ControlPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/control.py#L314)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/control/preview/{id}||[**ConfigurationPolicyControlDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/deviceaccesspolicy||[**ConfigurationPolicyDeviceAccessDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L28)|[**DeviceAccessPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/device_access.py#L83)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/deviceaccesspolicy/{id}||[**ConfigurationPolicyDeviceAccessDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L32)||None| -PUT /template/policy/definition/deviceaccesspolicy/{id}||[**ConfigurationPolicyDeviceAccessDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L40)|[**DeviceAccessPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/deviceaccesspolicy||[**ConfigurationPolicyDeviceAccessDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/deviceaccesspolicy/{id}||[**ConfigurationPolicyDeviceAccessDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L48)||[**DeviceAccessPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L23)| -POST /template/policy/definition/deviceaccesspolicy/preview||[**ConfigurationPolicyDeviceAccessDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L52)|[**DeviceAccessPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/device_access.py#L83)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/deviceaccesspolicy/preview/{id}||[**ConfigurationPolicyDeviceAccessDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/deviceaccesspolicyv6||[**ConfigurationPolicyDeviceAccessIPv6Definition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L28)|[**DeviceAccessIPv6Policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/device_access_ipv6.py#L83)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/deviceaccesspolicyv6/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L32)||None| -PUT /template/policy/definition/deviceaccesspolicyv6/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L40)|[**DeviceAccessIPv6PolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/deviceaccesspolicyv6||[**ConfigurationPolicyDeviceAccessIPv6Definition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L46)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/deviceaccesspolicyv6/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L50)||[**DeviceAccessIPv6PolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L23)| -POST /template/policy/definition/deviceaccesspolicyv6/preview||[**ConfigurationPolicyDeviceAccessIPv6Definition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L54)|[**DeviceAccessIPv6Policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/device_access_ipv6.py#L83)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/deviceaccesspolicyv6/preview/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L58)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/hubandspoke||[**ConfigurationPolicyHubAndSpokeDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L28)|[**HubAndSpokePolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/hub_and_spoke.py#L46)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/hubandspoke/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L32)||None| -PUT /template/policy/definition/hubandspoke/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L40)|[**HubAndSpokePolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/hubandspoke||[**ConfigurationPolicyHubAndSpokeDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/hubandspoke/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L48)||[**HubAndSpokePolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L23)| -POST /template/policy/definition/hubandspoke/preview||[**ConfigurationPolicyHubAndSpokeDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L52)|[**HubAndSpokePolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/hub_and_spoke.py#L46)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/hubandspoke/preview/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/mesh||[**ConfigurationPolicyMeshDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L28)|[**MeshPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/mesh.py#L23)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/mesh/{id}||[**ConfigurationPolicyMeshDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L32)||None| -PUT /template/policy/definition/mesh/{id}||[**ConfigurationPolicyMeshDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L40)|[**MeshPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/mesh||[**ConfigurationPolicyMeshDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/mesh/{id}||[**ConfigurationPolicyMeshDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L48)||[**MeshPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L23)| -POST /template/policy/definition/mesh/preview||[**ConfigurationPolicyMeshDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L52)|[**MeshPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/mesh.py#L23)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/mesh/preview/{id}||[**ConfigurationPolicyMeshDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/qosmap||[**ConfigurationPolicyQoSMapDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L28)|[**QoSMapPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/qos_map.py#L72)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/qosmap/{id}||[**ConfigurationPolicyQoSMapDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L32)||None| -PUT /template/policy/definition/qosmap/{id}||[**ConfigurationPolicyQoSMapDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L40)|[**QoSMapPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/qosmap||[**ConfigurationPolicyQoSMapDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/qosmap/{id}||[**ConfigurationPolicyQoSMapDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L48)||[**QoSMapPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L23)| -POST /template/policy/definition/qosmap/preview||[**ConfigurationPolicyQoSMapDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L52)|[**QoSMapPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/qos_map.py#L72)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/qosmap/preview/{id}||[**ConfigurationPolicyQoSMapDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/rewriterule||[**ConfigurationPolicyRewriteRuleDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L28)|[**RewritePolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/rewrite.py#L31)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/rewriterule/{id}||[**ConfigurationPolicyRewriteRuleDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L32)||None| -PUT /template/policy/definition/rewriterule/{id}||[**ConfigurationPolicyRewriteRuleDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L40)|[**RewritePolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/rewriterule||[**ConfigurationPolicyRewriteRuleDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/rewriterule/{id}||[**ConfigurationPolicyRewriteRuleDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L48)||[**RewritePolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L23)| -POST /template/policy/definition/rewriterule/preview||[**ConfigurationPolicyRewriteRuleDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L52)|[**RewritePolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/rewrite.py#L31)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/rewriterule/preview/{id}||[**ConfigurationPolicyRewriteRuleDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/ruleset||[**ConfigurationPolicyRuleSetDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L28)|[**RuleSet**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/rule_set.py#L154)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/ruleset/{id}||[**ConfigurationPolicyRuleSetDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L32)||None| -PUT /template/policy/definition/ruleset/{id}||[**ConfigurationPolicyRuleSetDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L40)|[**RuleSetEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/ruleset||[**ConfigurationPolicyRuleSetDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/ruleset/{id}||[**ConfigurationPolicyRuleSetDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L48)||[**RuleSetGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L23)| -POST /template/policy/definition/ruleset/preview||[**ConfigurationPolicyRuleSetDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L52)|[**RuleSet**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/rule_set.py#L154)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/ruleset/preview/{id}||[**ConfigurationPolicyRuleSetDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/securitygroup||[**ConfigurationPolicySecurityGroupDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L28)|[**SecurityGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/security_group.py#L53)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/securitygroup/{id}||[**ConfigurationPolicySecurityGroupDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L32)||None| -PUT /template/policy/definition/securitygroup/{id}||[**ConfigurationPolicySecurityGroupDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L40)|[**SecurityGroupEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/securitygroup||[**ConfigurationPolicySecurityGroupDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/securitygroup/{id}||[**ConfigurationPolicySecurityGroupDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L48)||[**SecurityGroupGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L23)| -POST /template/policy/definition/securitygroup/preview||[**ConfigurationPolicySecurityGroupDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L52)|[**SecurityGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/security_group.py#L53)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/securitygroup/preview/{id}||[**ConfigurationPolicySecurityGroupDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/data||[**ConfigurationPolicyDataDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L29)|[**TrafficDataPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/traffic_data.py#L360)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/data/{id}||[**ConfigurationPolicyDataDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L33)||None| -PUT /template/policy/definition/data/{id}||[**ConfigurationPolicyDataDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L41)|[**TrafficDataPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L20)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/data||[**ConfigurationPolicyDataDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L45)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/data/{id}||[**ConfigurationPolicyDataDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L49)||[**TrafficDataPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L24)| -POST /template/policy/definition/data/preview||[**ConfigurationPolicyDataDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L53)|[**TrafficDataPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/traffic_data.py#L360)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/data/preview/{id}||[**ConfigurationPolicyDataDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L57)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/vpnmembershipgroup||[**ConfigurationPolicyVPNMembershipGroupDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L28)|[**VPNMembershipPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/vpn_membership.py#L22)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/vpnmembershipgroup/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L32)||None| -PUT /template/policy/definition/vpnmembershipgroup/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L40)|[**VPNMembershipPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/vpnmembershipgroup||[**ConfigurationPolicyVPNMembershipGroupDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/vpnmembershipgroup/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L48)||[**VPNMembershipPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L23)| -POST /template/policy/definition/vpnmembershipgroup/preview||[**ConfigurationPolicyVPNMembershipGroupDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L52)|[**VPNMembershipPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/vpn_membership.py#L22)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/vpnmembershipgroup/preview/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/definition/zonebasedfw||[**ConfigurationPolicyZoneBasedFirewallDefinition.create_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L28)|[**ZoneBasedFWPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/zone_based_firewall.py#L192)|[**PolicyDefinitionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| -DELETE /template/policy/definition/zonebasedfw/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.delete_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L32)||None| -PUT /template/policy/definition/zonebasedfw/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.edit_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L40)|[**ZoneBasedFWPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| -GET /template/policy/definition/zonebasedfw||[**ConfigurationPolicyZoneBasedFirewallDefinition.get_definitions**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| -GET /template/policy/definition/zonebasedfw/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.get_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L48)||[**ZoneBasedFWPolicyGetResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L23)| -POST /template/policy/definition/zonebasedfw/preview||[**ConfigurationPolicyZoneBasedFirewallDefinition.preview_policy_definition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L52)|[**ZoneBasedFWPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/definitions/zone_based_firewall.py#L192)|[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -GET /template/policy/definition/zonebasedfw/preview/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.preview_policy_definition_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L56)||[**PolicyDefinitionPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| -POST /template/policy/list/app||[**ConfigurationPolicyApplicationList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L27)|[**AppList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L131)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/app/{id}||[**ConfigurationPolicyApplicationList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L31)||None| -DELETE /template/policy/list/app||[**ConfigurationPolicyApplicationList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L35)||None| -PUT /template/policy/list/app/{id}||[**ConfigurationPolicyApplicationList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L39)|[**AppListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L18)|None| -GET /template/policy/list/app/{id}||[**ConfigurationPolicyApplicationList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L43)||[**AppListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L22)| -GET /template/policy/list/app||[**ConfigurationPolicyApplicationList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L47)||DataSequence[[**AppListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L22)]| -GET /template/policy/list/app/filtered||[**ConfigurationPolicyApplicationList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L51)||DataSequence[[**AppListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L22)]| -POST /template/policy/list/app/preview||[**ConfigurationPolicyApplicationList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L55)|[**AppList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L131)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/app/preview/{id}||[**ConfigurationPolicyApplicationList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/appprobe||[**ConfigurationPolicyAppProbeClassList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L27)|[**AppProbeClassList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L226)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/appprobe/{id}||[**ConfigurationPolicyAppProbeClassList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L31)||None| -DELETE /template/policy/list/appprobe||[**ConfigurationPolicyAppProbeClassList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L35)||None| -PUT /template/policy/list/appprobe/{id}||[**ConfigurationPolicyAppProbeClassList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L39)|[**AppProbeClassListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L18)|None| -GET /template/policy/list/appprobe/{id}||[**ConfigurationPolicyAppProbeClassList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L43)||[**AppProbeClassListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L22)| -GET /template/policy/list/appprobe||[**ConfigurationPolicyAppProbeClassList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L47)||DataSequence[[**AppProbeClassListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L22)]| -GET /template/policy/list/appprobe/filtered||[**ConfigurationPolicyAppProbeClassList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L51)||DataSequence[[**AppProbeClassListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L22)]| -POST /template/policy/list/appprobe/preview||[**ConfigurationPolicyAppProbeClassList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L55)|[**AppProbeClassList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L226)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/appprobe/preview/{id}||[**ConfigurationPolicyAppProbeClassList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/aspath||[**ConfigurationPolicyASPathList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L27)|[**ASPathList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L206)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/aspath/{id}||[**ConfigurationPolicyASPathList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L31)||None| -DELETE /template/policy/list/aspath||[**ConfigurationPolicyASPathList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L35)||None| -PUT /template/policy/list/aspath/{id}||[**ConfigurationPolicyASPathList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L39)|[**ASPathListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L18)|None| -GET /template/policy/list/aspath/{id}||[**ConfigurationPolicyASPathList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L43)||[**ASPathListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L22)| -GET /template/policy/list/aspath||[**ConfigurationPolicyASPathList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L47)||DataSequence[[**ASPathListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L22)]| -GET /template/policy/list/aspath/filtered||[**ConfigurationPolicyASPathList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L51)||DataSequence[[**ASPathListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L22)]| -POST /template/policy/list/aspath/preview||[**ConfigurationPolicyASPathList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L55)|[**ASPathList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L206)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/aspath/preview/{id}||[**ConfigurationPolicyASPathList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/class||[**ConfigurationPolicyForwardingClassList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L27)|[**ClassMapList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L211)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/class/{id}||[**ConfigurationPolicyForwardingClassList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L31)||None| -DELETE /template/policy/list/class||[**ConfigurationPolicyForwardingClassList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L35)||None| -PUT /template/policy/list/class/{id}||[**ConfigurationPolicyForwardingClassList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L39)|[**ClassMapListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L18)|None| -GET /template/policy/list/class/{id}||[**ConfigurationPolicyForwardingClassList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L43)||[**ClassMapListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L22)| -GET /template/policy/list/class||[**ConfigurationPolicyForwardingClassList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L47)||DataSequence[[**ClassMapListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L22)]| -GET /template/policy/list/class/filtered||[**ConfigurationPolicyForwardingClassList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L51)||DataSequence[[**ClassMapListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L22)]| -POST /template/policy/list/class/preview||[**ConfigurationPolicyForwardingClassList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L55)|[**ClassMapList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L211)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/class/preview/{id}||[**ConfigurationPolicyForwardingClassList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/color||[**ConfigurationPolicyColorList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L27)|[**ColorList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L142)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/color/{id}||[**ConfigurationPolicyColorList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L31)||None| -DELETE /template/policy/list/color||[**ConfigurationPolicyColorList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L35)||None| -PUT /template/policy/list/color/{id}||[**ConfigurationPolicyColorList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L39)|[**ColorListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L18)|None| -GET /template/policy/list/color/{id}||[**ConfigurationPolicyColorList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L43)||[**ColorListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L22)| -GET /template/policy/list/color||[**ConfigurationPolicyColorList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L47)||DataSequence[[**ColorListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L22)]| -GET /template/policy/list/color/filtered||[**ConfigurationPolicyColorList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L51)||DataSequence[[**ColorListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L22)]| -POST /template/policy/list/color/preview||[**ConfigurationPolicyColorList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L55)|[**ColorList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L142)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/color/preview/{id}||[**ConfigurationPolicyColorList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/community||[**ConfigurationPolicyCommunityList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L27)|[**CommunityList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L188)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/community/{id}||[**ConfigurationPolicyCommunityList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L31)||None| -DELETE /template/policy/list/community||[**ConfigurationPolicyCommunityList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L35)||None| -PUT /template/policy/list/community/{id}||[**ConfigurationPolicyCommunityList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L39)|[**CommunityListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L18)|None| -GET /template/policy/list/community/{id}||[**ConfigurationPolicyCommunityList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L43)||[**CommunityListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L22)| -GET /template/policy/list/community||[**ConfigurationPolicyCommunityList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L47)||DataSequence[[**CommunityListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L22)]| -GET /template/policy/list/community/filtered||[**ConfigurationPolicyCommunityList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L51)||DataSequence[[**CommunityListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L22)]| -POST /template/policy/list/community/preview||[**ConfigurationPolicyCommunityList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L55)|[**CommunityList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L188)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/community/preview/{id}||[**ConfigurationPolicyCommunityList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/dataipv6prefix||[**ConfigurationPolicyDataIPv6PrefixList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L27)|[**DataIPv6PrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L150)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/dataipv6prefix/{id}||[**ConfigurationPolicyDataIPv6PrefixList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L31)||None| -DELETE /template/policy/list/dataipv6prefix||[**ConfigurationPolicyDataIPv6PrefixList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L35)||None| -PUT /template/policy/list/dataipv6prefix/{id}||[**ConfigurationPolicyDataIPv6PrefixList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L39)|[**DataIPv6PrefixListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L18)|None| -GET /template/policy/list/dataipv6prefix/{id}||[**ConfigurationPolicyDataIPv6PrefixList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L43)||[**DataIPv6PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L22)| -GET /template/policy/list/dataipv6prefix||[**ConfigurationPolicyDataIPv6PrefixList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L47)||DataSequence[[**DataIPv6PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L22)]| -GET /template/policy/list/dataipv6prefix/filtered||[**ConfigurationPolicyDataIPv6PrefixList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L51)||DataSequence[[**DataIPv6PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L22)]| -POST /template/policy/list/dataipv6prefix/preview||[**ConfigurationPolicyDataIPv6PrefixList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L55)|[**DataIPv6PrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L150)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/dataipv6prefix/preview/{id}||[**ConfigurationPolicyDataIPv6PrefixList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/dataprefix||[**ConfigurationPolicyDataPrefixList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L27)|[**DataPrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L61)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/dataprefix/{id}||[**ConfigurationPolicyDataPrefixList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L31)||None| -DELETE /template/policy/list/dataprefix||[**ConfigurationPolicyDataPrefixList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L35)||None| -PUT /template/policy/list/dataprefix/{id}||[**ConfigurationPolicyDataPrefixList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L39)|[**DataPrefixListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L18)|None| -GET /template/policy/list/dataprefix/{id}||[**ConfigurationPolicyDataPrefixList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L43)||[**DataPrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L22)| -GET /template/policy/list/dataprefix||[**ConfigurationPolicyDataPrefixList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L47)||DataSequence[[**DataPrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L22)]| -GET /template/policy/list/dataprefix/filtered||[**ConfigurationPolicyDataPrefixList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L51)||DataSequence[[**DataPrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L22)]| -POST /template/policy/list/dataprefix/preview||[**ConfigurationPolicyDataPrefixList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L55)|[**DataPrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L61)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/dataprefix/preview/{id}||[**ConfigurationPolicyDataPrefixList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/expandedcommunity||[**ConfigurationPolicyExpandedCommunityList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L27)|[**ExpandedCommunityList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L192)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/expandedcommunity/{id}||[**ConfigurationPolicyExpandedCommunityList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L31)||None| -DELETE /template/policy/list/expandedcommunity||[**ConfigurationPolicyExpandedCommunityList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L35)||None| -PUT /template/policy/list/expandedcommunity/{id}||[**ConfigurationPolicyExpandedCommunityList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L39)|[**ExpandedCommunityListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L18)|None| -GET /template/policy/list/expandedcommunity/{id}||[**ConfigurationPolicyExpandedCommunityList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L43)||[**ExpandedCommunityListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L22)| -GET /template/policy/list/expandedcommunity||[**ConfigurationPolicyExpandedCommunityList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L47)||DataSequence[[**ExpandedCommunityListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L22)]| -GET /template/policy/list/expandedcommunity/filtered||[**ConfigurationPolicyExpandedCommunityList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L51)||DataSequence[[**ExpandedCommunityListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L22)]| -POST /template/policy/list/expandedcommunity/preview||[**ConfigurationPolicyExpandedCommunityList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L55)|[**ExpandedCommunityList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L192)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/expandedcommunity/preview/{id}||[**ConfigurationPolicyExpandedCommunityList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/fqdn||[**ConfigurationPolicyFQDNList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L27)|[**FQDNList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L106)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/fqdn/{id}||[**ConfigurationPolicyFQDNList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L31)||None| -DELETE /template/policy/list/fqdn||[**ConfigurationPolicyFQDNList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L35)||None| -PUT /template/policy/list/fqdn/{id}||[**ConfigurationPolicyFQDNList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L39)|[**FQDNListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L18)|None| -GET /template/policy/list/fqdn/{id}||[**ConfigurationPolicyFQDNList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L43)||[**FQDNListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L22)| -GET /template/policy/list/fqdn||[**ConfigurationPolicyFQDNList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L47)||DataSequence[[**FQDNListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L22)]| -GET /template/policy/list/fqdn/filtered||[**ConfigurationPolicyFQDNList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L51)||DataSequence[[**FQDNListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L22)]| -POST /template/policy/list/fqdn/preview||[**ConfigurationPolicyFQDNList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L55)|[**FQDNList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L106)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/fqdn/preview/{id}||[**ConfigurationPolicyFQDNList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/geolocation||[**ConfigurationPolicyGeoLocationList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L27)|[**GeoLocationList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L111)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/geolocation/{id}||[**ConfigurationPolicyGeoLocationList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L31)||None| -DELETE /template/policy/list/geolocation||[**ConfigurationPolicyGeoLocationList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L35)||None| -PUT /template/policy/list/geolocation/{id}||[**ConfigurationPolicyGeoLocationList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L39)|[**GeoLocationListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L18)|None| -GET /template/policy/list/geolocation/{id}||[**ConfigurationPolicyGeoLocationList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L43)||[**GeoLocationListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L22)| -GET /template/policy/list/geolocation||[**ConfigurationPolicyGeoLocationList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L47)||DataSequence[[**GeoLocationListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L22)]| -GET /template/policy/list/geolocation/filtered||[**ConfigurationPolicyGeoLocationList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L51)||DataSequence[[**GeoLocationListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L22)]| -POST /template/policy/list/geolocation/preview||[**ConfigurationPolicyGeoLocationList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L55)|[**GeoLocationList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L111)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/geolocation/preview/{id}||[**ConfigurationPolicyGeoLocationList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/ipssignature||[**ConfigurationPolicyIPSSignatureList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L27)|[**IPSSignatureList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L163)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/ipssignature/{id}||[**ConfigurationPolicyIPSSignatureList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L31)||None| -DELETE /template/policy/list/ipssignature||[**ConfigurationPolicyIPSSignatureList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L35)||None| -PUT /template/policy/list/ipssignature/{id}||[**ConfigurationPolicyIPSSignatureList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L39)|[**IPSSignatureListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L18)|None| -GET /template/policy/list/ipssignature/{id}||[**ConfigurationPolicyIPSSignatureList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L43)||[**IPSSignatureListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L22)| -GET /template/policy/list/ipssignature||[**ConfigurationPolicyIPSSignatureList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L47)||DataSequence[[**IPSSignatureListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L22)]| -GET /template/policy/list/ipssignature/filtered||[**ConfigurationPolicyIPSSignatureList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L51)||DataSequence[[**IPSSignatureListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L22)]| -POST /template/policy/list/ipssignature/preview||[**ConfigurationPolicyIPSSignatureList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L55)|[**IPSSignatureList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L163)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/ipssignature/preview/{id}||[**ConfigurationPolicyIPSSignatureList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/ipv6prefix||[**ConfigurationPolicyIPv6PrefixList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L27)|[**IPv6PrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L315)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/ipv6prefix/{id}||[**ConfigurationPolicyIPv6PrefixList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L31)||None| -DELETE /template/policy/list/ipv6prefix||[**ConfigurationPolicyIPv6PrefixList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L35)||None| -PUT /template/policy/list/ipv6prefix/{id}||[**ConfigurationPolicyIPv6PrefixList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L39)|[**IPv6PrefixListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L18)|None| -GET /template/policy/list/ipv6prefix/{id}||[**ConfigurationPolicyIPv6PrefixList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L43)||[**IPv6PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L22)| -GET /template/policy/list/ipv6prefix||[**ConfigurationPolicyIPv6PrefixList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L47)||DataSequence[[**IPv6PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L22)]| -GET /template/policy/list/ipv6prefix/filtered||[**ConfigurationPolicyIPv6PrefixList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L51)||DataSequence[[**IPv6PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L22)]| -POST /template/policy/list/ipv6prefix/preview||[**ConfigurationPolicyIPv6PrefixList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L55)|[**IPv6PrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L315)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/ipv6prefix/preview/{id}||[**ConfigurationPolicyIPv6PrefixList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/localapp||[**ConfigurationPolicyLocalAppList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L27)|[**LocalAppList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L126)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/localapp/{id}||[**ConfigurationPolicyLocalAppList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L31)||None| -DELETE /template/policy/list/localapp||[**ConfigurationPolicyLocalAppList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L35)||None| -PUT /template/policy/list/localapp/{id}||[**ConfigurationPolicyLocalAppList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L39)|[**LocalAppListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L18)|None| -GET /template/policy/list/localapp/{id}||[**ConfigurationPolicyLocalAppList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L43)||[**LocalAppListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L22)| -GET /template/policy/list/localapp||[**ConfigurationPolicyLocalAppList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L47)||DataSequence[[**LocalAppListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L22)]| -GET /template/policy/list/localapp/filtered||[**ConfigurationPolicyLocalAppList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L51)||DataSequence[[**LocalAppListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L22)]| -POST /template/policy/list/localapp/preview||[**ConfigurationPolicyLocalAppList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L55)|[**LocalAppList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L126)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/localapp/preview/{id}||[**ConfigurationPolicyLocalAppList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/localdomain||[**ConfigurationPolicyLocalDomainList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L27)|[**LocalDomainList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L158)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/localdomain/{id}||[**ConfigurationPolicyLocalDomainList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L31)||None| -DELETE /template/policy/list/localdomain||[**ConfigurationPolicyLocalDomainList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L35)||None| -PUT /template/policy/list/localdomain/{id}||[**ConfigurationPolicyLocalDomainList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L39)|[**LocalDomainListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L18)|None| -GET /template/policy/list/localdomain/{id}||[**ConfigurationPolicyLocalDomainList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L43)||[**LocalDomainListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L22)| -GET /template/policy/list/localdomain||[**ConfigurationPolicyLocalDomainList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L47)||DataSequence[[**LocalDomainListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L22)]| -GET /template/policy/list/localdomain/filtered||[**ConfigurationPolicyLocalDomainList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L51)||DataSequence[[**LocalDomainListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L22)]| -POST /template/policy/list/localdomain/preview||[**ConfigurationPolicyLocalDomainList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L55)|[**LocalDomainList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L158)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/localdomain/preview/{id}||[**ConfigurationPolicyLocalDomainList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/mirror||[**ConfigurationPolicyMirrorList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L27)|[**MirrorList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L221)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/mirror/{id}||[**ConfigurationPolicyMirrorList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L31)||None| -DELETE /template/policy/list/mirror||[**ConfigurationPolicyMirrorList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L35)||None| -PUT /template/policy/list/mirror/{id}||[**ConfigurationPolicyMirrorList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L39)|[**MirrorListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L18)|None| -GET /template/policy/list/mirror/{id}||[**ConfigurationPolicyMirrorList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L43)||[**MirrorListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L22)| -GET /template/policy/list/mirror||[**ConfigurationPolicyMirrorList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L47)||DataSequence[[**MirrorListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L22)]| -GET /template/policy/list/mirror/filtered||[**ConfigurationPolicyMirrorList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L51)||DataSequence[[**MirrorListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L22)]| -POST /template/policy/list/mirror/preview||[**ConfigurationPolicyMirrorList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L55)|[**MirrorList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L221)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/mirror/preview/{id}||[**ConfigurationPolicyMirrorList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/policer||[**ConfigurationPolicyPolicerClassList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L27)|[**PolicerList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L196)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/policer/{id}||[**ConfigurationPolicyPolicerClassList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L31)||None| -DELETE /template/policy/list/policer||[**ConfigurationPolicyPolicerClassList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L35)||None| -PUT /template/policy/list/policer/{id}||[**ConfigurationPolicyPolicerClassList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L39)|[**PolicerListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L18)|None| -GET /template/policy/list/policer/{id}||[**ConfigurationPolicyPolicerClassList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L43)||[**PolicerListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L22)| -GET /template/policy/list/policer||[**ConfigurationPolicyPolicerClassList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L47)||DataSequence[[**PolicerListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L22)]| -GET /template/policy/list/policer/filtered||[**ConfigurationPolicyPolicerClassList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L51)||DataSequence[[**PolicerListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L22)]| -POST /template/policy/list/policer/preview||[**ConfigurationPolicyPolicerClassList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L55)|[**PolicerList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L196)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/policer/preview/{id}||[**ConfigurationPolicyPolicerClassList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/port||[**ConfigurationPolicyPortList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L27)|[**PortList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L116)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/port/{id}||[**ConfigurationPolicyPortList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L31)||None| -DELETE /template/policy/list/port||[**ConfigurationPolicyPortList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L35)||None| -PUT /template/policy/list/port/{id}||[**ConfigurationPolicyPortList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L39)|[**PortListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L18)|None| -GET /template/policy/list/port/{id}||[**ConfigurationPolicyPortList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L43)||[**PortListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L22)| -GET /template/policy/list/port||[**ConfigurationPolicyPortList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L47)||DataSequence[[**PortListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L22)]| -GET /template/policy/list/port/filtered||[**ConfigurationPolicyPortList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L51)||DataSequence[[**PortListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L22)]| -POST /template/policy/list/port/preview||[**ConfigurationPolicyPortList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L55)|[**PortList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L116)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/port/preview/{id}||[**ConfigurationPolicyPortList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/preferredcolorgroup||[**ConfigurationPreferredColorGroupList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L27)|[**PreferredColorGroupList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L278)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/preferredcolorgroup/{id}||[**ConfigurationPreferredColorGroupList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L31)||None| -DELETE /template/policy/list/preferredcolorgroup||[**ConfigurationPreferredColorGroupList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L35)||None| -PUT /template/policy/list/preferredcolorgroup/{id}||[**ConfigurationPreferredColorGroupList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L39)|[**PreferredColorGroupListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L18)|None| -GET /template/policy/list/preferredcolorgroup/{id}||[**ConfigurationPreferredColorGroupList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L43)||[**PreferredColorGroupListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L22)| -GET /template/policy/list/preferredcolorgroup||[**ConfigurationPreferredColorGroupList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L47)||DataSequence[[**PreferredColorGroupListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L22)]| -GET /template/policy/list/preferredcolorgroup/filtered||[**ConfigurationPreferredColorGroupList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L51)||DataSequence[[**PreferredColorGroupListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L22)]| -POST /template/policy/list/preferredcolorgroup/preview||[**ConfigurationPreferredColorGroupList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L55)|[**PreferredColorGroupList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L278)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/preferredcolorgroup/preview/{id}||[**ConfigurationPreferredColorGroupList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/prefix||[**ConfigurationPolicyPrefixList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L27)|[**PrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L305)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/prefix/{id}||[**ConfigurationPolicyPrefixList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L31)||None| -DELETE /template/policy/list/prefix||[**ConfigurationPolicyPrefixList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L35)||None| -PUT /template/policy/list/prefix/{id}||[**ConfigurationPolicyPrefixList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L39)|[**PrefixListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L18)|None| -GET /template/policy/list/prefix/{id}||[**ConfigurationPolicyPrefixList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L43)||[**PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L22)| -GET /template/policy/list/prefix||[**ConfigurationPolicyPrefixList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L47)||DataSequence[[**PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L22)]| -GET /template/policy/list/prefix/filtered||[**ConfigurationPolicyPrefixList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L51)||DataSequence[[**PrefixListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L22)]| -POST /template/policy/list/prefix/preview||[**ConfigurationPolicyPrefixList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L55)|[**PrefixList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L305)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/prefix/preview/{id}||[**ConfigurationPolicyPrefixList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/protocolname||[**ConfigurationPolicyProtocolNameList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L27)|[**ProtocolNameList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L121)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/protocolname/{id}||[**ConfigurationPolicyProtocolNameList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L31)||None| -DELETE /template/policy/list/protocolname||[**ConfigurationPolicyProtocolNameList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L35)||None| -PUT /template/policy/list/protocolname/{id}||[**ConfigurationPolicyProtocolNameList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L39)|[**ProtocolNameListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L18)|None| -GET /template/policy/list/protocolname/{id}||[**ConfigurationPolicyProtocolNameList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L43)||[**ProtocolNameListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L22)| -GET /template/policy/list/protocolname||[**ConfigurationPolicyProtocolNameList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L47)||DataSequence[[**ProtocolNameListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L22)]| -GET /template/policy/list/protocolname/filtered||[**ConfigurationPolicyProtocolNameList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L51)||DataSequence[[**ProtocolNameListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L22)]| -POST /template/policy/list/protocolname/preview||[**ConfigurationPolicyProtocolNameList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L55)|[**ProtocolNameList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L121)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/protocolname/preview/{id}||[**ConfigurationPolicyProtocolNameList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/region||[**ConfigurationPolicyRegionList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L21)|[**RegionList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L320)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/region/{id}||[**ConfigurationPolicyRegionList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L25)||None| -DELETE /template/policy/list/region||[**ConfigurationPolicyRegionList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L29)||None| -PUT /template/policy/list/region/{id}||[**ConfigurationPolicyRegionList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L33)|[**RegionListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L12)|None| -GET /template/policy/list/region/{id}||[**ConfigurationPolicyRegionList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L37)||[**RegionListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L16)| -GET /template/policy/list/region||[**ConfigurationPolicyRegionList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L41)||DataSequence[[**RegionListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L16)]| -GET /template/policy/list/region/filtered||[**ConfigurationPolicyRegionList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L45)||DataSequence[[**RegionListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L16)]| -POST /template/policy/list/region/preview||[**ConfigurationPolicyRegionList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L49)|[**RegionList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L320)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/region/preview/{id}||[**ConfigurationPolicyRegionList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L53)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/site/defaultsite||[**ConfigurationPolicySiteList.create_default_site_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L27)|[**SiteList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L69)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -POST /template/policy/list/site||[**ConfigurationPolicySiteList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L31)|[**SiteList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L69)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/site/{id}||[**ConfigurationPolicySiteList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L35)||None| -DELETE /template/policy/list/site||[**ConfigurationPolicySiteList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L39)||None| -PUT /template/policy/list/site/{id}||[**ConfigurationPolicySiteList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L43)|[**SiteListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L18)|None| -GET /template/policy/list/site/{id}||[**ConfigurationPolicySiteList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L47)||[**SiteListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L22)| -GET /template/policy/list/site||[**ConfigurationPolicySiteList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L51)||DataSequence[[**SiteListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L22)]| -GET /template/policy/list/site/filtered||[**ConfigurationPolicySiteList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L55)||DataSequence[[**SiteListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L22)]| -POST /template/policy/list/site/preview||[**ConfigurationPolicySiteList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L59)|[**SiteList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L69)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/site/preview/{id}||[**ConfigurationPolicySiteList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L63)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/sla||[**ConfigurationPolicySLAClassList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L27)|[**SLAClassList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L237)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/sla/{id}||[**ConfigurationPolicySLAClassList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L31)||None| -DELETE /template/policy/list/sla||[**ConfigurationPolicySLAClassList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L35)||None| -PUT /template/policy/list/sla/{id}||[**ConfigurationPolicySLAClassList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L39)|[**SLAClassListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L18)|None| -GET /template/policy/list/sla/{id}||[**ConfigurationPolicySLAClassList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L43)||[**SLAClassListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L22)| -GET /template/policy/list/sla||[**ConfigurationPolicySLAClassList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L47)||DataSequence[[**SLAClassListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L22)]| -GET /template/policy/list/sla/filtered||[**ConfigurationPolicySLAClassList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L51)||DataSequence[[**SLAClassListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L22)]| -POST /template/policy/list/sla/preview||[**ConfigurationPolicySLAClassList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L55)|[**SLAClassList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L237)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/sla/preview/{id}||[**ConfigurationPolicySLAClassList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/tloc||[**ConfigurationPolicyTLOCList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L27)|[**TLOCList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L269)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/tloc/{id}||[**ConfigurationPolicyTLOCList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L31)||None| -DELETE /template/policy/list/tloc||[**ConfigurationPolicyTLOCList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L35)||None| -PUT /template/policy/list/tloc/{id}||[**ConfigurationPolicyTLOCList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L39)|[**TLOCListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L18)|None| -GET /template/policy/list/tloc/{id}||[**ConfigurationPolicyTLOCList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L43)||[**TLOCListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L22)| -GET /template/policy/list/tloc||[**ConfigurationPolicyTLOCList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L47)||DataSequence[[**TLOCListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L22)]| -GET /template/policy/list/tloc/filtered||[**ConfigurationPolicyTLOCList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L51)||DataSequence[[**TLOCListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L22)]| -POST /template/policy/list/tloc/preview||[**ConfigurationPolicyTLOCList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L55)|[**TLOCList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L269)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/tloc/preview/{id}||[**ConfigurationPolicyTLOCList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/urlwhitelist||[**ConfigurationPolicyURLAllowList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L27)|[**URLAllowList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L168)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/urlwhitelist/{id}||[**ConfigurationPolicyURLAllowList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L31)||None| -DELETE /template/policy/list/urlwhitelist||[**ConfigurationPolicyURLAllowList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L35)||None| -PUT /template/policy/list/urlwhitelist/{id}||[**ConfigurationPolicyURLAllowList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L39)|[**URLAllowListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L18)|None| -GET /template/policy/list/urlwhitelist/{id}||[**ConfigurationPolicyURLAllowList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L43)||[**URLAllowListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L22)| -GET /template/policy/list/urlwhitelist||[**ConfigurationPolicyURLAllowList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L47)||DataSequence[[**URLAllowListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L22)]| -GET /template/policy/list/urlwhitelist/filtered||[**ConfigurationPolicyURLAllowList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L51)||DataSequence[[**URLAllowListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L22)]| -POST /template/policy/list/urlwhitelist/preview||[**ConfigurationPolicyURLAllowList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L55)|[**URLAllowList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L168)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/urlwhitelist/preview/{id}||[**ConfigurationPolicyURLAllowList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/urlblacklist||[**ConfigurationPolicyURLBlockList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L27)|[**URLBlockList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L173)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/urlblacklist/{id}||[**ConfigurationPolicyURLBlockList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L31)||None| -DELETE /template/policy/list/urlblacklist||[**ConfigurationPolicyURLBlockList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L35)||None| -PUT /template/policy/list/urlblacklist/{id}||[**ConfigurationPolicyURLBlockList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L39)|[**URLBlockListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L18)|None| -GET /template/policy/list/urlblacklist/{id}||[**ConfigurationPolicyURLBlockList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L43)||[**URLBlockListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L22)| -GET /template/policy/list/urlblacklist||[**ConfigurationPolicyURLBlockList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L47)||DataSequence[[**URLBlockListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L22)]| -GET /template/policy/list/urlblacklist/filtered||[**ConfigurationPolicyURLBlockList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L51)||DataSequence[[**URLBlockListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L22)]| -POST /template/policy/list/urlblacklist/preview||[**ConfigurationPolicyURLBlockList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L55)|[**URLBlockList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L173)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/urlblacklist/preview/{id}||[**ConfigurationPolicyURLBlockList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/vpn||[**ConfigurationPolicyVPNList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L29)|[**VPNList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L82)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/vpn/{id}||[**ConfigurationPolicyVPNList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L33)||None| -DELETE /template/policy/list/vpn||[**ConfigurationPolicyVPNList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L37)||None| -PUT /template/policy/list/vpn/{id}||[**ConfigurationPolicyVPNList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L41)|[**VPNListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L20)|None| -GET /template/policy/list/vpn/{id}||[**ConfigurationPolicyVPNList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L45)||[**VPNListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L24)| -GET /template/policy/list/vpn||[**ConfigurationPolicyVPNList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L49)||DataSequence[[**VPNListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L24)]| -GET /template/policy/list/vpn/filtered||[**ConfigurationPolicyVPNList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L53)||DataSequence[[**VPNListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L24)]| -POST /template/policy/list/vpn/preview||[**ConfigurationPolicyVPNList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L57)|[**VPNList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L82)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/vpn/preview/{id}||[**ConfigurationPolicyVPNList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L61)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/list/zone||[**ConfigurationPolicyZoneList.create_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L27)|[**ZoneList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L95)|[**PolicyListId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L17)| -DELETE /template/policy/list/zone/{id}||[**ConfigurationPolicyZoneList.delete_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L31)||None| -DELETE /template/policy/list/zone||[**ConfigurationPolicyZoneList.delete_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L35)||None| -PUT /template/policy/list/zone/{id}||[**ConfigurationPolicyZoneList.edit_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L39)|[**ZoneListEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L18)|None| -GET /template/policy/list/zone/{id}||[**ConfigurationPolicyZoneList.get_lists_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L43)||[**ZoneListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L22)| -GET /template/policy/list/zone||[**ConfigurationPolicyZoneList.get_policy_lists**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L47)||DataSequence[[**ZoneListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L22)]| -GET /template/policy/list/zone/filtered||[**ConfigurationPolicyZoneList.get_policy_lists_with_info_tag**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L51)||DataSequence[[**ZoneListInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L22)]| -POST /template/policy/list/zone/preview||[**ConfigurationPolicyZoneList.preview_policy_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L55)|[**ZoneList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/lists.py#L95)|[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -GET /template/policy/list/zone/preview/{id}||[**ConfigurationPolicyZoneList.preview_policy_list_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L59)||[**PolicyListPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy_list.py#L31)| -POST /template/policy/security||[**ConfigurationSecurityTemplatePolicy.create_security_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L17)|[**SecurityPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L101), [**UnifiedSecurityPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L136)|None| -DELETE /template/policy/security/{id}||[**ConfigurationSecurityTemplatePolicy.delete_security_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L21)|None|None| -PUT /template/policy/security/{id}||[**ConfigurationSecurityTemplatePolicy.edit_security_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L25)|[**SecurityPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L101), [**UnifiedSecurityPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L136)|[**SecurityPolicyEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L170)| -GET /template/policy/security||[**ConfigurationSecurityTemplatePolicy.generate_security_template_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L38)||DataSequence[[**SecurityPolicyInfoRoot**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L189)]| -GET /template/policy/security/definition/{id}||[**ConfigurationSecurityTemplatePolicy.get_security_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L50)||[**SecurityPolicyRoot**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/security.py#L166)| -POST /template/policy/vedge||[**ConfigurationVEdgeTemplatePolicy.create_vedge_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L22)|[**LocalizedPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L75)|[**PolicyId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy.py#L10)| -DELETE /template/policy/vedge/{id}||[**ConfigurationVEdgeTemplatePolicy.delete_vedge_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L26)||None| -PUT /template/policy/vedge/{id}||[**ConfigurationVEdgeTemplatePolicy.edit_vedge_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L30)|[**LocalizedPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L75)|[**LocalizedPolicyEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L125)| -GET /template/policy/vedge||[**ConfigurationVEdgeTemplatePolicy.generate_policy_template_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L34)||DataSequence[[**LocalizedPolicyInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L121)]| -GET /template/policy/vedge/devices/{id}||[**ConfigurationVEdgeTemplatePolicy.get_device_list_by_policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L38)||DataSequence[[**LocalizedPolicyDeviceInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L131)]| -GET /template/policy/vedge/devices||[**ConfigurationVEdgeTemplatePolicy.get_vedge_policy_device_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L42)||DataSequence[[**LocalizedPolicyDeviceInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L131)]| -GET /template/policy/vedge/definition/{id}||[**ConfigurationVEdgeTemplatePolicy.get_vedge_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L46)||[**LocalizedPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/localized.py#L75)| -GET /template/policy/assembly/vedge/{id}||[**ConfigurationVEdgeTemplatePolicy.preview_by_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L50)||[**PolicyPreview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy.py#L94)| -POST /template/policy/vsmart/activate/{id}||[**ConfigurationVSmartTemplatePolicy.activate_policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L32)|None|[**ActivateDeactivateTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L27)| -GET /template/policy/vsmart/connectivity/status||[**ConfigurationVSmartTemplatePolicy.check_vsmart_connectivity_status**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L42)||DataSequence[[**VSmartConnectivityStatus**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L15)]| -POST /template/policy/vsmart||[**ConfigurationVSmartTemplatePolicy.create_vsmart_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L46)|[**CentralizedPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/centralized.py#L183)|[**PolicyId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/policy.py#L10)| -POST /template/policy/vsmart/deactivate/{id}||[**ConfigurationVSmartTemplatePolicy.deactivate_policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L50)|None|[**ActivateDeactivateTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L27)| -DELETE /template/policy/vsmart/{id}||[**ConfigurationVSmartTemplatePolicy.delete_vsmart_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L56)||None| -PUT /template/policy/vsmart/central/{id}||[**ConfigurationVSmartTemplatePolicy.edit_template_without_lock_checks**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L60)|[**CentralizedPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/centralized.py#L220)|None| -PUT /template/policy/vsmart/{id}||[**ConfigurationVSmartTemplatePolicy.edit_vsmart_template**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L64)|[**CentralizedPolicyEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/centralized.py#L220)|None| -GET /template/policy/vsmart||[**ConfigurationVSmartTemplatePolicy.generate_vsmart_policy_template_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L68)||DataSequence[[**CentralizedPolicyInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/centralized.py#L224)]| -GET /template/policy/vsmart/definition/{id}||[**ConfigurationVSmartTemplatePolicy.get_template_by_policy_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L72)||[**CentralizedPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/policy/centralized.py#L183)| -GET /device/action/remote-server||[**ConfigurationSoftwareActions.get_list_of_remote_servers**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L165)||DataSequence[[**RemoteServerInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L70)]| -POST /device/action/remote-server||[**ConfigurationSoftwareActions.add_new_remote_server**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L169)|[**RemoteServer**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L45)|None| -GET /device/action/remote-server/{id}||[**ConfigurationSoftwareActions.get_remote_server**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L173)||[**RemoteServerInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L70)| -PUT /device/action/remote-server/{id}||[**ConfigurationSoftwareActions.update_remote_server**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L177)|[**SoftwareRemoteServer**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L100)|None| -DELETE /device/action/remote-server/{id}||[**ConfigurationSoftwareActions.remove_remote_server**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L181)||None| -GET /device/action/software||[**ConfigurationSoftwareActions.get_software_images**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L185)||DataSequence[[**SoftwareImageDetails**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L111)]| -POST /device/action/software||[**ConfigurationSoftwareActions.upload_software_from_remote_server**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L189)|[**SoftwareRemoteServer**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L100)|None| -DELETE /device/action/software/{version_id}||[**ConfigurationSoftwareActions.delete_software_from_software_repository**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L193)||None| -GET /device/action/software/images||[**ConfigurationSoftwareActions.get_list_of_all_images**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L197)||DataSequence[[**SoftwareImageDetails**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration/software_actions.py#L111)]| -GET /device/action/status/{task_id}||[**ConfigurationDashboardStatus.find_status**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L91)||[**TaskData**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L78)| -GET /device/action/status/tasks||[**ConfigurationDashboardStatus.find_running_tasks**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L95)||[**TasksData**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L86)| -GET /device/action/install/devices/{device_type}||[**ConfigurationDeviceActions.get_list_of_installed_devices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L182)||DataSequence[[**InstalledDeviceData**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L118)]| -GET /device/action/ztp/upgrade/setting||[**ConfigurationDeviceActions.get_ztp_upgrade_config_setting**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L216)||DataSequence[[**ZTPUpgradeSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L33)]| -POST /device/action/changepartition||[**ConfigurationDeviceActions.process_mark_change_partition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L232)|[**PartitionActionPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L61)|[**ActionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L25)| -POST /device/action/defaultpartition||[**ConfigurationDeviceActions.process_mark_default_partition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L240)|[**PartitionActionPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L61)|[**ActionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L25)| -POST /device/action/install||[**ConfigurationDeviceActions.process_install_operation**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L248)|[**InstallActionPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L109)|[**ActionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L25)| -POST /device/action/removepartition||[**ConfigurationDeviceActions.process_remove_partition**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L280)|[**RemovePartitionActionPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L69)|[**ActionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_actions.py#L25)| -POST /template/device/config/config/||[**ConfigurationDeviceTemplate.get_device_configuration_preview**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_template.py#L21)|[**FeatureToCLIPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_device_template.py#L12)|str|PROVIDER -GET /v1/feature-profile/sdwan/system/aaa/schema|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_system_aaa_parcel_schema**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L41)||None| -GET /v1/feature-profile/sdwan/transport/cellular-controller/schema|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_transport_cellular_controller_parcel_schema**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L46)||None| -GET /v1/feature-profile/sdwan/transport|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_transport_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L51)|Optional[[**GetFeatureProfilesPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L35)]|DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -POST /v1/feature-profile/sdwan/transport|>=20.9|[**ConfigurationFeatureProfile.create_sdwan_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L58)|[**FeatureProfileCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -DELETE /v1/feature-profile/sdwan/transport/{transport_id}|>=20.9|[**ConfigurationFeatureProfile.delete_sdwan_transport_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L65)||None| -GET /v1/feature-profile/sdwan/system|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_system_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L70)|Optional[[**GetFeatureProfilesPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L35)]|DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -POST /v1/feature-profile/sdwan/system|>=20.9|[**ConfigurationFeatureProfile.create_sdwan_system_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L77)|[**FeatureProfileCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -DELETE /v1/feature-profile/sdwan/system/{system_id}|>=20.9|[**ConfigurationFeatureProfile.delete_sdwan_system_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L84)||None| -POST /v1/feature-profile/sdwan/system/{system_id}/aaa|>=20.9|[**ConfigurationFeatureProfile.create_aaa_profile_parcel_for_system**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L89)|[**_ParcelBase**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L31)| -POST /v1/feature-profile/sdwan/transport/{transport_id}/cellular-controller|>=20.9|[**ConfigurationFeatureProfile.create_cellular_controller_profile_parcel_for_transport**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L94)|[**_ParcelBase**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L31)| -GET /v1/feature-profile/sdwan|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L101)||DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -POST /v1/feature-profile/sd-routing/cli|>=20.13|[**SDRoutingConfigurationFeatureProfile.create_cli_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L108)|[**FeatureProfileCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| -POST /v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config|>=20.13|[**SDRoutingConfigurationFeatureProfile.create_cli_full_config_parcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L113)|[**FullConfigParcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/feature_profile_parcel.py#L12)|[**ParcelId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L31)| -DELETE /v1/feature-profile/sd-routing/cli/{cli_fp_id}|>=20.13|[**SDRoutingConfigurationFeatureProfile.delete_cli_feature_profile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L118)||None| -DELETE /v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config/{parcel_id}|>=20.13|[**SDRoutingConfigurationFeatureProfile.delete_cli_full_config_parcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L123)||None| -PUT /v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config/{parcel_id}|>=20.13|[**SDRoutingConfigurationFeatureProfile.edit_cli_full_config_parcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L128)|[**FullConfigParcel**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/feature_profile_parcel.py#L12)|None| -GET /v1/feature-profile/sd-routing/cli|>=20.13|[**SDRoutingConfigurationFeatureProfile.get_cli_feature_profiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L133)|Optional[[**GetFeatureProfilesPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L35)]|DataSequence[[**FeatureProfileInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| -PUT /v1/config-group/{config_group_id}/device/associate|>=20.9|[**ConfigurationGroup.associate**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L122)|[**ConfigGroupAssociatePayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L61)|None| -POST /v1/config-group|>=20.9|[**ConfigurationGroup.create_config_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L127)|[**ConfigGroupCreationPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L20)|[**ConfigGroupCreationResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L108)| -POST /v1/config-group/{config_group_id}/device/variables|>=20.9|[**ConfigurationGroup.create_variables**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L132)|[**ConfigGroupVariablesCreatePayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L65)|[**ConfigGroupVariablesCreateResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L85)| -DELETE /v1/config-group/{config_group_id}|>=20.9|[**ConfigurationGroup.delete_config_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L139)||None| -POST /v1/config-group/{config_group_id}/device/deploy|>=20.9|[**ConfigurationGroup.deploy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L144)|[**ConfigGroupDeployPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L96)|[**ConfigGroupDeployResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L100)| -DELETE /v1/config-group/{config_group_id}/device/associate|>=20.9|[**ConfigurationGroup.disassociate**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L149)|[**ConfigGroupAssociatePayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L61)|[**ConfigGroupDisassociateResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L104)| -PUT /v1/config-group/{config_group_id}|>=20.9|[**ConfigurationGroup.edit_config_group**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L156)|[**ConfigGroupEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L50)|[**ConfigGroupEditResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L116)| -GET /v1/config-group|>=20.9|[**ConfigurationGroup.get**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L161)||DataSequence[[**ConfigGroup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L39)]| -PUT /v1/config-group/{config_group_id}/device/variables|>=20.9|[**ConfigurationGroup.update_variables**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L166)|[**ConfigGroupVariablesEditPayload**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_group.py#L91)|None| -GET /settings/configuration/{setting_type}||[**ConfigurationSettings.get_configuration_by_setting_type**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L357)||None| -GET /settings/configuration/organization||[**ConfigurationSettings.get_organizations**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L361)||DataSequence[[**Organization**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L44)]| -GET /settings/configuration/device||[**ConfigurationSettings.get_devices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L365)||DataSequence[[**Device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L53)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/emailNotificationSettings||[**ConfigurationSettings.get_email_notification_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L370)||DataSequence[[**EmailNotificationSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L61)]| -GET /settings/configuration/hardwarerootca||[**ConfigurationSettings.get_hardware_root_cas**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L374)||DataSequence[[**HardwareRootCA**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L65)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/certificate||[**ConfigurationSettings.get_certificates**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L379)||DataSequence[[**Certificate**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L73)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/vedgecloud||[**ConfigurationSettings.get_vedge_cloud**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L384)||DataSequence[[**VEdgeCloud**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L85)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/crlSetting||[**ConfigurationSettings.get_clr_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L389)||DataSequence[[**CRLSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L316)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/banner||[**ConfigurationSettings.get_banner**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L394)||DataSequence[[**Banner**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L89)]| -GET /settings/configuration/proxyHttpServer||[**ConfigurationSettings.get_proxy_http_servers**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L398)||DataSequence[[**ProxyHTTPServer**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L97)]| -GET /settings/configuration/reverseproxy||[**ConfigurationSettings.get_reverse_proxies**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L402)||DataSequence[[**ReverseProxy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L106)]| -GET /settings/configuration/cloudx||[**ConfigurationSettings.get_cloudx**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L406)||DataSequence[[**CloudX**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L110)]| -GET /settings/configuration/manageEncryptedPassword||[**ConfigurationSettings.get_manage_encrypted_password**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L410)||DataSequence[[**ManageEncryptedPassword**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L114)]| -GET /settings/configuration/cloudservices||[**ConfigurationSettings.get_cloudservices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L414)||DataSequence[[**CloudServices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L121)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/clientSessionTimeout||[**ConfigurationSettings.get_client_session_timeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L419)||DataSequence[[**ClientSessionTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L134)]| -GET /settings/configuration/sessionLifeTime||[**ConfigurationSettings.get_session_life_time**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L423)||DataSequence[[**SessionLifeTime**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L142)]| -GET /settings/configuration/serverSessionTimeout||[**ConfigurationSettings.get_server_session_timeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L427)||DataSequence[[**ServerSessionTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L149)]| -GET /settings/configuration/maxSessionsPerUser||[**ConfigurationSettings.get_max_sessions_per_user**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L431)||DataSequence[[**MaxSessionsPerUser**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L156)]| -GET /settings/configuration/passwordPolicy||[**ConfigurationSettings.get_password_policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L435)||DataSequence[[**PasswordPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L163)]| -GET /settings/configuration/vmanagedatastream||[**ConfigurationSettings.get_vmanage_data_stream**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L439)||DataSequence[[**VManageDataStream**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L173)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/dataCollectionOnNotification||[**ConfigurationSettings.get_data_collection_on_notification**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L444)||DataSequence[[**DataCollectionOnNotification**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L183)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/sdWanTelemetry||[**ConfigurationSettings.get_sdwan_telemetry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L449)||DataSequence[[**SDWANTelemetry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L187)]|PROVIDER, SINGLE_TENANT -GET /management/statsconfig||[**ConfigurationSettings.get_stats_config**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L454)||DataSequence[[**StatsOperation**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L191)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/spMetadata||[**ConfigurationSettings.get_sp_metadata**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L459)||str| -GET /management/elasticsearch/index/size||[**ConfigurationSettings.get_elasticsearch_db_size**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L463)||DataSequence[[**ElasticSearchDBSize**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L211)]| -GET /settings/configuration/googleMapKey||[**ConfigurationSettings.get_google_map_key**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L467)||DataSequence[[**GoogleMapKey**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L219)]| -GET /settings/configuration/maintenanceWindow||[**ConfigurationSettings.get_maintenance_window**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L471)||DataSequence[[**MaintenanceWindow**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L201)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/softwareMaintenance||[**ConfigurationSettings.get_software_install_timeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L476)||DataSequence[[**SoftwareInstallTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L223)]| -GET /settings/configuration/credentials||[**ConfigurationSettings.get_ips_signature_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L480)||DataSequence[[**IPSSignatureSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L253)]| -GET /settings/configuration/smartaccountcredentials||[**ConfigurationSettings.get_smart_account_credentials**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L484)||DataSequence[[**SmartAccountCredentials**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L264)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/pnpConnectSync||[**ConfigurationSettings.get_pnp_connect_sync**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L489)||DataSequence[[**PnPConnectSync**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L269)]|PROVIDER, SINGLE_TENANT -GET /settings/configuration/claimDevice||[**ConfigurationSettings.get_claim_device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L494)||DataSequence[[**ClaimDevice**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L273)]| -GET /settings/configuration/walkme||[**ConfigurationSettings.get_walkme**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L498)||DataSequence[[**WalkMe**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L277)]| -GET /settings/configuration/smartLicensing||[**ConfigurationSettings.get_smart_licensing_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L502)||DataSequence[[**SmartLicensingSetting**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L285)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/{setting_type}||[**ConfigurationSettings.edit_configuration_by_setting_type**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L515)|None|None| -PUT /settings/configuration/organization||[**ConfigurationSettings.edit_organizations**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L519)|[**Organization**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L44)|DataSequence[[**Organization**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L44)]| -PUT /settings/configuration/device||[**ConfigurationSettings.edit_devices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L523)|[**Device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L53)|DataSequence[[**Device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L53)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/emailNotificationSettings||[**ConfigurationSettings.edit_email_notification_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L528)|[**EmailNotificationSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L61)|DataSequence[[**EmailNotificationSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L61)]| -PUT /settings/configuration/hardwarerootca||[**ConfigurationSettings.edit_hardware_root_cas**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L534)|[**HardwareRootCA**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L65)|DataSequence[[**HardwareRootCA**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L65)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/certificate||[**ConfigurationSettings.edit_certificates**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L539)|[**Certificate**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L73)|DataSequence[[**Certificate**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L73)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/vedgecloud||[**ConfigurationSettings.edit_vedge_cloud**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L544)|[**VEdgeCloud**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L85)|DataSequence[[**VEdgeCloud**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L85)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/banner||[**ConfigurationSettings.edit_banner**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L549)|[**Banner**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L89)|DataSequence[[**Banner**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L89)]| -PUT /settings/configuration/proxyHttpServer||[**ConfigurationSettings.edit_proxy_http_servers**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L553)|[**ProxyHTTPServer**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L97)|DataSequence[[**ProxyHTTPServer**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L97)]| -PUT /settings/configuration/reverseproxy||[**ConfigurationSettings.edit_reverse_proxies**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L557)|[**ReverseProxy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L106)|DataSequence[[**ReverseProxy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L106)]| -PUT /settings/configuration/cloudx||[**ConfigurationSettings.edit_cloudx**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L561)|[**CloudX**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L110)|DataSequence[[**CloudX**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L110)]| -PUT /settings/configuration/manageEncryptedPassword||[**ConfigurationSettings.edit_manage_encrypted_password**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L565)|[**ManageEncryptedPassword**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L114)|DataSequence[[**ManageEncryptedPassword**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L114)]| -PUT /settings/configuration/cloudservices||[**ConfigurationSettings.edit_cloudservices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L569)|[**CloudServices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L121)|DataSequence[[**CloudServices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L121)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/clientSessionTimeout||[**ConfigurationSettings.edit_client_session_timeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L574)|[**ClientSessionTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L134)|DataSequence[[**ClientSessionTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L134)]| -PUT /settings/configuration/sessionLifeTime||[**ConfigurationSettings.edit_session_life_time**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L578)|[**SessionLifeTime**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L142)|DataSequence[[**SessionLifeTime**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L142)]| -PUT /settings/configuration/serverSessionTimeout||[**ConfigurationSettings.edit_server_session_timeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L582)|[**ServerSessionTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L149)|DataSequence[[**ServerSessionTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L149)]| -PUT /settings/configuration/maxSessionsPerUser||[**ConfigurationSettings.edit_max_sessions_per_user**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L586)|[**MaxSessionsPerUser**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L156)|DataSequence[[**MaxSessionsPerUser**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L156)]| -PUT /settings/configuration/passwordPolicy||[**ConfigurationSettings.edit_password_policy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L590)|[**PasswordPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L163)|DataSequence[[**PasswordPolicy**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L163)]| -PUT /settings/configuration/vmanagedatastream||[**ConfigurationSettings.edit_vmanage_data_stream**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L594)|[**VManageDataStream**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L173)|DataSequence[[**VManageDataStream**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L173)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/dataCollectionOnNotification||[**ConfigurationSettings.edit_data_collection_on_notification**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L599)|[**DataCollectionOnNotification**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L183)|DataSequence[[**DataCollectionOnNotification**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L183)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/sdWanTelemetry||[**ConfigurationSettings.edit_sdwan_telemetry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L606)|[**SDWANTelemetry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L187)|DataSequence[[**SDWANTelemetry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L187)]|PROVIDER, SINGLE_TENANT -POST /management/statsconfig||[**ConfigurationSettings.edit_stats_config**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L611)|[**StatsConfig**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L308)|DataSequence[[**StatsOperation**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L191)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/spMetadata||[**ConfigurationSettings.edit_sp_metadata**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L616)|str|str| -PUT /management/elasticsearch/index/size||[**ConfigurationSettings.edit_elasticsearch_db_size**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L620)|[**ElasticSearchDBSize**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L211)|DataSequence[[**ElasticSearchDBSize**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L211)]| -PUT /settings/configuration/googleMapKey||[**ConfigurationSettings.edit_google_map_key**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L624)|[**GoogleMapKey**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L219)|DataSequence[[**GoogleMapKey**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L219)]| -PUT /settings/configuration/maintenanceWindow||[**ConfigurationSettings.edit_maintenance_window**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L628)|[**MaintenanceWindow**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L201)|DataSequence[[**MaintenanceWindow**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L201)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/softwareMaintenance||[**ConfigurationSettings.edit_software_install_timeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L633)|[**SoftwareInstallTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L223)|DataSequence[[**SoftwareInstallTimeout**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L223)]| -PUT /settings/configuration/credentials||[**ConfigurationSettings.edit_ips_signature_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L637)|[**IPSSignatureSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L253)|DataSequence[[**IPSSignatureSettings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L253)]| -PUT /settings/configuration/smartaccountcredentials||[**ConfigurationSettings.edit_smart_account_credentials**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L641)|[**SmartAccountCredentials**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L264)|DataSequence[[**SmartAccountCredentials**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L264)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/pnpConnectSync||[**ConfigurationSettings.edit_pnp_connect_sync**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L646)|[**PnPConnectSync**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L269)|DataSequence[[**PnPConnectSync**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L269)]|PROVIDER, SINGLE_TENANT -PUT /settings/configuration/claimDevice||[**ConfigurationSettings.edit_claim_device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L651)|[**ClaimDevice**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L273)|DataSequence[[**ClaimDevice**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L273)]| -PUT /settings/configuration/walkme||[**ConfigurationSettings.edit_walkme**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L655)|[**WalkMe**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L277)|DataSequence[[**WalkMe**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L277)]| -PUT /settings/configuration/smartLicensing||[**ConfigurationSettings.edit_smart_licensing_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L659)|[**SmartLicensingSetting**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L285)|DataSequence[[**SmartLicensingSetting**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/configuration_settings.py#L285)]|PROVIDER, SINGLE_TENANT -GET /app/json/application_protocol.json||[**MiscellaneousEndpoints.get_application_protocols**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/misc.py#L14)||DataSequence[[**ApplicationProtocolMap**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/misc/application_protocols.py#L28)]| -GET /device/tier||[**MonitoringDeviceDetails.get_tiers**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_device_details.py#L159)||DataSequence[[**Tier**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_device_details.py#L17)]| -GET /device||[**MonitoringDeviceDetails.list_all_devices**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_device_details.py#L183)||DataSequence[[**DeviceData**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_device_details.py#L37)]| -GET /statistics/settings/disable/devicelist/{indexName}||[**MonitoringStatus.get_disabled_device_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L58)||[**DisabledDeviceListResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L45)| -PUT /statistics/settings/disable/devicelist/{indexName}||[**MonitoringStatus.update_statistics_device_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L62)|[**DisabledDeviceList**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L41)|[**UpdateIndexResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L49)| -GET /statistics/settings/status||[**MonitoringStatus.get_statistics_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L66)||DataSequence[[**Status**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L23)]| -PUT /statistics/settings/status||[**MonitoringStatus.update_statistics_settings**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L70)|list[[**UpdateStatus**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L29)]|DataSequence[[**Status**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L23)]| -GET /statistics/settings/status/device||[**MonitoringStatus.get_enabled_index_for_device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L74)||[**EnabledIndexDeviceListResponse**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/monitoring_status.py#L53)| -GET /device/reboothistory||[**RealTimeMonitoringRebootHistory.create_reboot_history_list**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/real_time_monitoring/reboot_history.py#L25)||DataSequence[[**RebootEntry**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/real_time_monitoring/reboot_history.py#L13)]| -GET /sdavc/cloudconnector||[**SDAVCCloudConnector.get_cloud_connector**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/sdavc_cloud_connector.py#L30)||[**CloudConnector**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/sdavc_cloud_connector.py#L12)| -GET /tenantbackup/list||[**TenantBackupRestore.list_tenant_backup**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_backup_restore.py#L37)||[**BackupFiles**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_backup_restore.py#L12)|PROVIDER_AS_TENANT, TENANT -POST /tenant||[**TenantManagement.create_tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L120)|[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)|[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)|PROVIDER -POST /tenant/async||[**TenantManagement.create_tenant_async**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L125)|[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)|[**TenantTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L23)|PROVIDER -POST /tenant/bulk/async|>=20.4|[**TenantManagement.create_tenant_async_bulk**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L130)|list[[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)]|[**TenantTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L23)|PROVIDER -DELETE /tenant/{tenant_id}/delete||[**TenantManagement.delete_tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L136)|[**TenantDeleteRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L14)|None|PROVIDER -DELETE /tenant/bulk/async|>=20.4|[**TenantManagement.delete_tenant_async_bulk**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L141)|[**TenantBulkDeleteRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L18)|[**TenantTaskId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L23)|PROVIDER -GET /tenantstatus||[**TenantManagement.get_all_tenant_statuses**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L151)||DataSequence[[**TenantStatus**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L56)]|PROVIDER, PROVIDER_AS_TENANT -GET /tenant||[**TenantManagement.get_all_tenants**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L156)||DataSequence[[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)]|PROVIDER, PROVIDER_AS_TENANT -GET /tenant/{tenant_id}||[**TenantManagement.get_tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L161)||[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)|PROVIDER, PROVIDER_AS_TENANT -GET /tenant/vsmart/capacity||[**TenantManagement.get_tenant_hosting_capacity_on_vsmarts**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L166)||DataSequence[[**vSmartTenantCapacity**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L105)]|PROVIDER -GET /tenant/vsmart||[**TenantManagement.get_tenant_vsmart_mapping**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L171)||[**vSmartTenantMap**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L111)|PROVIDER, PROVIDER_AS_TENANT -PUT /tenant/{tenant_id}||[**TenantManagement.update_tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L184)|[**TenantUpdateRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L65)|[**Tenant**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L23)|PROVIDER -PUT /tenant/{tenant_id}/vsmart||[**TenantManagement.update_tenant_vsmart_placement**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L189)|[**vSmartPlacementUpdateRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L100)|None|PROVIDER -POST /tenant/{tenant_id}/vsessionid||[**TenantManagement.vsession_id**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L194)||[**vSessionId**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_management.py#L115)|PROVIDER -GET /tenantmigration/download/{path}|>=20.6|[**TenantMigration.download_tenant_data**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L50)||bytes|PROVIDER, SINGLE_TENANT -POST /tenantmigration/export|>=20.6|[**TenantMigration.export_tenant_data**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L56)|[**TenantExport**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/models/tenant.py#L54)|[**ExportInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L18)|PROVIDER, SINGLE_TENANT -GET /tenantmigration/migrationToken|>=20.6|[**TenantMigration.get_migration_token**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L62)||str|PROVIDER, SINGLE_TENANT -POST /tenantmigration/import|<20.13,>=20.6|[**TenantMigration.import_tenant_data**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L68)|[**MigrationFile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L40)|[**ImportInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L22)|PROVIDER, SINGLE_TENANT -POST /tenantmigration/import/{migration_key}|>=20.13|[**TenantMigration.import_tenant_data_with_key**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L74)|[**MigrationFile**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L40)|[**ImportInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L22)|PROVIDER, SINGLE_TENANT -POST /tenantmigration/networkMigration|>=20.6|[**TenantMigration.migrate_network**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L80)|str|[**MigrationInfo**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/tenant_migration.py#L36)|PROVIDER, SINGLE_TENANT -POST /device/tools/nping/{device_ip}||[**TroubleshootingToolsDeviceConnectivity.nping_device**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py#L94)|[**NPingRequest**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py#L18)|[**NPingResult**](https://github.com/CiscoDevNet/catalystwan/blob/main/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py#L37)| +POST /admin/user||[**AdministrationUserAndGroup.create_user**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L209)|[**User**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L13)|None| +POST /admin/usergroup||[**AdministrationUserAndGroup.create_user_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L213)|[**UserGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L84)|None| +DELETE /admin/user/{username}||[**AdministrationUserAndGroup.delete_user**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L225)||None| +DELETE /admin/usergroup/{group_name}||[**AdministrationUserAndGroup.delete_user_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L229)||None| +GET /admin/user/userAuthType||[**AdministrationUserAndGroup.find_user_auth_type**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L245)||[**UserAuthType**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L72)| +GET /admin/usergroup||[**AdministrationUserAndGroup.find_user_groups**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L249)||DataSequence[[**UserGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L84)]| +GET /admin/user/role||[**AdministrationUserAndGroup.find_user_role**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L257)||[**UserRole**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L67)| +GET /admin/user||[**AdministrationUserAndGroup.find_users**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L261)||DataSequence[[**User**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L13)]| +GET /admin/user/activeSessions||[**AdministrationUserAndGroup.get_active_sessions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L265)||DataSequence[[**ActiveSession**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L127)]| +DELETE /admin/user/removeSessions||[**AdministrationUserAndGroup.remove_sessions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L277)|[**SessionsDeleteRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L150)|[**InvalidateSessionMessage**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L163)| +POST /admin/user/reset||[**AdministrationUserAndGroup.reset_user**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L281)|[**UserResetRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L122)|None| +GET /admin/resourcegroup|<20.13,>20.4|[**AdministrationUserAndGroup.find_resource_groups**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L285)||DataSequence[[**ResourceGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L172)]| +POST /admin/resourcegroup/switch|<20.13,>20.4|[**AdministrationUserAndGroup.switch_resource_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L290)|[**ResourceGroupSwitchRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L195)|None| +PUT /admin/resourcegroup/{group_id}|<20.13,>20.4|[**AdministrationUserAndGroup.update_resource_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L295)|[**ResourceGroupUpdateRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L187)|None| +DELETE /admin/resourcegroup/{group_id}|<20.13,>20.4|[**AdministrationUserAndGroup.delete_resource_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L300)||None| +POST /admin/resourcegroup|<20.13,>20.4|[**AdministrationUserAndGroup.create_resource_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L305)|[**ResourceGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L172)|None| +PUT /admin/user/password/{username}||[**AdministrationUserAndGroup.update_password**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L319)|[**UserUpdateRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L34)|None| +PUT /admin/user/profile/password||[**AdministrationUserAndGroup.update_profile_password**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L327)|[**ProfilePasswordUpdateRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L167)|None| +PUT /admin/user/{username}||[**AdministrationUserAndGroup.update_user**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L331)|[**UserUpdateRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L34)|None| +PUT /admin/usergroup/{group_name}||[**AdministrationUserAndGroup.update_user_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L335)|[**UserGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/administration_user_and_group.py#L84)|None| +DELETE /certificate/{uuid}||[**CertificateManagementDevice.delete_configuration**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L112)||[**DeviceDeletionResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L15)| +POST /certificate/generate/csr||[**CertificateManagementDevice.generate_csr**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L116)|[**TargetDevice**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L22)|DataSequence[[**DeviceCsrGenerationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L28)]| +POST /certificate/save/vedge/list||[**CertificateManagementDevice.change_vedge_list_validity**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L120)|list[[**VedgeListValidityPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L99)]|[**CertActionResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L107)| +POST /certificate/vedge/list?action={action}||[**CertificateManagementDevice.send_to_controllers**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L124)||[**CertActionResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L107)| +POST /certificate/vsmart/list||[**CertificateManagementDevice.send_to_vbond**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L128)||[**CertActionResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_device.py#L107)| +GET /setting/configuration/webserver/certificate||[**CertificateManagementVManage.show_info**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_vmanage.py#L46)||[**WebServerCertificateInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/certificate_management_vmanage.py#L11)| +GET /client/server||[**Client.server**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/client.py#L86)||[**ServerInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/client.py#L23)| +GET /client/server/ready||[**Client.server_ready**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/client.py#L90)||[**ServerReady**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/client.py#L80)| +GET /client/about||[**Client.about**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/client.py#L94)||[**AboutInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/client.py#L64)| +GET /clusterManagement/tenancy/mode||[**ClusterManagement.get_tenancy_mode**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/cluster_management.py#L64)||[**TenancyMode**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/cluster_management.py#L14)| +GET /clusterManagement/vManage/details/{vmanageIP}||[**ClusterManagement.get_vmanage_details**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/cluster_management.py#L72)||DataSequence[[**VManageDetails**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/cluster_management.py#L21)]| +POST /system/device/{device_uuid}/unlock|>=20.9|[**ConfigurationDeviceInventory.unlock**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L275)|[**DeviceUnlockPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L20)|[**DeviceUnlockResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L25)| +POST /system/device||[**ConfigurationDeviceInventory.create_device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L280)|[**DeviceCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L32)|None| +DELETE /system/device/{uuid}||[**ConfigurationDeviceInventory.delete_device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L284)||[**DeviceDeletionResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L44)| +GET /system/device/{device_category}||[**ConfigurationDeviceInventory.get_device_details**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L291)||DataSequence[[**DeviceDetailsResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L57)]| +POST /system/device/smartaccount/sync||[**ConfigurationDeviceInventory.sync_devices_from_smart_account**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L297)|[**SmartAccountSyncParams**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L212)|[**ProcessId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L220)| +POST /system/device/fileupload||[**ConfigurationDeviceInventory.upload_wan_edge_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L301)|[**SerialFilePayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L224)|[**UploadSerialFileResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L256)| +GET /system/device/bootstrap/device/{uuid}||[**ConfigurationDeviceInventory.generate_bootstrap_configuration**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L305)||[**BoostrapConfiguration**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_inventory.py#L248)| +POST /device/action/software/package||[**ConfigurationDeviceSoftwareUpdate.upload_software_to_manager**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/device/software_update.py#L25)|[**SoftwarePackageUploadPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/utils/upgrades_helper.py#L77)|None| +POST /disasterrecovery/activate||[**ConfigurationDisasterRecovery.activate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L147)||[**ActivateDisasterRecoveryTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L26)| +POST /disasterrecovery/deregister||[**ConfigurationDisasterRecovery.delete**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L151)||[**DeregisterDisasterRecoveryTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L22)| +GET /disasterrecovery/details||[**ConfigurationDisasterRecovery.get_details**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L195)||[**DisasterRecoveryDetailsResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L44)| +GET /disasterrecovery/schedule||[**ConfigurationDisasterRecovery.get_disaster_recovery_local_replication_schedule**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L199)||[**DisasterRecoveryScheduleResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L113)| +GET /disasterrecovery/drstatus||[**ConfigurationDisasterRecovery.get_disaster_recovery_status**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L203)||DataSequence[[**DisasterRecoveryDataCenterStatus**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L129)]| +GET /disasterrecovery/localLatestHistory||[**ConfigurationDisasterRecovery.get_local_history**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L215)||[**LastestLocalHistory**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L136)| +POST /disasterrecovery/validateNodes||[**ConfigurationDisasterRecovery.get_reachability_info**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L219)|list[[**ValidateNodePayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L48)]|DataSequence[[**ValidatedNodeEntry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L54)]| +GET /disasterrecovery/remotedc||[**ConfigurationDisasterRecovery.get_remote_data_center_details**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L223)||DataSequence[[**RemoteDataCenterDetails**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L121)]| +GET /disasterrecovery/remotedc/swversion||[**ConfigurationDisasterRecovery.get_remote_data_center_version**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L227)||[**RemoteDataCentervManageVersionResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L117)| +GET /disasterrecovery/status||[**ConfigurationDisasterRecovery.get_dr_status**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L235)||[**DisasterRecoveryStatusResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L107)| +POST /disasterrecovery/pause||[**ConfigurationDisasterRecovery.pause_dr**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L239)||[**DisasterRecoveryPauseResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L59)| +POST /disasterrecovery/register||[**ConfigurationDisasterRecovery.register**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L255)|[**DisasterRecoveryRegisterPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L89)|[**RegisterDisasterRecoveryTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L18)| +POST /disasterrecovery/unpause||[**ConfigurationDisasterRecovery.unpause_dr**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L267)||[**UnpauseDisasterRecoveryTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/disaster_recovery.py#L30)| +GET /v1/feature-profile/sdwan/system/aaa/schema|>=20.9|[**SystemFeatureProfile.get_sdwan_system_aaa_parcel_schema**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L20)||None| +GET /v1/feature-profile/sdwan/system|>=20.9|[**SystemFeatureProfile.get_sdwan_system_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L25)|Optional[[**GetFeatureProfilesPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L176)]|DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +POST /v1/feature-profile/sdwan/system|>=20.9|[**SystemFeatureProfile.create_sdwan_system_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L32)|[**FeatureProfileCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +DELETE /v1/feature-profile/sdwan/system/{system_id}|>=20.9|[**SystemFeatureProfile.delete_sdwan_system_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L39)||None| +POST /v1/feature-profile/sdwan/system/{system_id}/aaa|>=20.9|[**SystemFeatureProfile.create_aaa_profile_parcel_for_system**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L44)|[**_ParcelBase**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L172)| +PUT /v1/feature-profile/sdwan/system/{system_id}/aaa/{parcel_id}|>=20.9|[**SystemFeatureProfile.edit_aaa_profile_parcel_for_system**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/system.py#L49)|[**_ParcelBase**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L172)| +POST /v1/feature-profile/sdwan/transport|>=20.13|[**TransportFeatureProfile.create_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L25)|[**FeatureProfileCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +GET /v1/feature-profile/sdwan/transport|>=20.13|[**TransportFeatureProfile.get_transport_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L32)||DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +GET /v1/feature-profile/sdwan/transport/{profile_id}|>=20.13|[**TransportFeatureProfile.get_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L37)||[**FeatureProfileDetail**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L91)| +PUT /v1/feature-profile/sdwan/transport/{profile_id}|>=20.13|[**TransportFeatureProfile.edit_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L42)|[**FeatureProfileEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L117)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +DELETE /v1/feature-profile/sdwan/transport/{profile_id}|>=20.13|[**TransportFeatureProfile.delete_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L49)||None| +POST /v1/feature-profile/sdwan/transport/{profile_id}/management/vpn|>=20.13|[**TransportFeatureProfile.create_management_vpn_parcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L57)|[**_ParcelBase**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L126)| +PUT /v1/feature-profile/sdwan/transport/{profile_id}/management/vpn/{parcel_id}|>=20.13|[**TransportFeatureProfile.edit_management_vpn_parcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L72)|[**ManagementVPN**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/sdwan/management/vpn.py#L17)|[**ParcelCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L126)| +DELETE /v1/feature-profile/sdwan/transport/{profile_id}/management/vpn/{parcel_id}|>=20.13|[**TransportFeatureProfile.delete_management_vpn_parcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L79)||None| +GET /v1/feature-profile/sdwan/transport|>=20.9|[**TransportFeatureProfile.get_sdwan_transport_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L84)|Optional[[**GetFeatureProfilesPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L176)]|DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +GET /v1/feature-profile/sdwan/transport/cellular-controller/schema|>=20.9|[**TransportFeatureProfile.get_sdwan_transport_cellular_controller_parcel_schema**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L91)||None| +POST /v1/feature-profile/sdwan/transport|>=20.9|[**TransportFeatureProfile.create_sdwan_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L96)|[**FeatureProfileCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +DELETE /v1/feature-profile/sdwan/transport/{transport_id}|>=20.9|[**TransportFeatureProfile.delete_sdwan_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L103)||None| +POST /v1/feature-profile/sdwan/transport/{transport_id}/cellular-controller|>=20.9|[**TransportFeatureProfile.create_cellular_controller_profile_parcel_for_transport**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/feature_profile/sdwan/transport.py#L108)|[**CellularController**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/sdwan/transport/cellular_controller.py#L42)|[**ParcelId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L172)| +POST /template/policy/definition/acl||[**ConfigurationPolicyAclDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L28)|[**AclPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/access_control_list.py#L145)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/acl/{id}||[**ConfigurationPolicyAclDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L32)||None| +PUT /template/policy/definition/acl/{id}||[**ConfigurationPolicyAclDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L40)|[**AclPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/acl||[**ConfigurationPolicyAclDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/acl/{id}||[**ConfigurationPolicyAclDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L48)||[**AclPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L23)| +POST /template/policy/definition/acl/preview||[**ConfigurationPolicyAclDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L52)|[**AclPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/access_control_list.py#L145)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/acl/preview/{id}||[**ConfigurationPolicyAclDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/aclv6||[**ConfigurationPolicyAclIPv6Definition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L28)|[**AclIPv6Policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/access_control_list_ipv6.py#L145)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/aclv6/{id}||[**ConfigurationPolicyAclIPv6Definition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L32)||None| +PUT /template/policy/definition/aclv6/{id}||[**ConfigurationPolicyAclIPv6Definition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L40)|[**AclIPv6PolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/aclv6||[**ConfigurationPolicyAclIPv6Definition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/aclv6/{id}||[**ConfigurationPolicyAclIPv6Definition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L48)||[**AclIPv6PolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L23)| +POST /template/policy/definition/aclv6/preview||[**ConfigurationPolicyAclIPv6Definition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L52)|[**AclIPv6Policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/access_control_list_ipv6.py#L145)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/aclv6/preview/{id}||[**ConfigurationPolicyAclIPv6Definition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/access_control_list_ipv6.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/control||[**ConfigurationPolicyControlDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L28)|[**ControlPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/control.py#L314)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/control/{id}||[**ConfigurationPolicyControlDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L32)||None| +PUT /template/policy/definition/control/{id}||[**ConfigurationPolicyControlDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L40)|[**ControlPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/control||[**ConfigurationPolicyControlDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/control/{id}||[**ConfigurationPolicyControlDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L48)||[**ControlPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L23)| +POST /template/policy/definition/control/preview||[**ConfigurationPolicyControlDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L52)|[**ControlPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/control.py#L314)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/control/preview/{id}||[**ConfigurationPolicyControlDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/control.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/deviceaccesspolicy||[**ConfigurationPolicyDeviceAccessDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L28)|[**DeviceAccessPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/device_access.py#L83)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/deviceaccesspolicy/{id}||[**ConfigurationPolicyDeviceAccessDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L32)||None| +PUT /template/policy/definition/deviceaccesspolicy/{id}||[**ConfigurationPolicyDeviceAccessDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L40)|[**DeviceAccessPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/deviceaccesspolicy||[**ConfigurationPolicyDeviceAccessDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/deviceaccesspolicy/{id}||[**ConfigurationPolicyDeviceAccessDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L48)||[**DeviceAccessPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L23)| +POST /template/policy/definition/deviceaccesspolicy/preview||[**ConfigurationPolicyDeviceAccessDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L52)|[**DeviceAccessPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/device_access.py#L83)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/deviceaccesspolicy/preview/{id}||[**ConfigurationPolicyDeviceAccessDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/deviceaccesspolicyv6||[**ConfigurationPolicyDeviceAccessIPv6Definition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L28)|[**DeviceAccessIPv6Policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/device_access_ipv6.py#L83)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/deviceaccesspolicyv6/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L32)||None| +PUT /template/policy/definition/deviceaccesspolicyv6/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L40)|[**DeviceAccessIPv6PolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/deviceaccesspolicyv6||[**ConfigurationPolicyDeviceAccessIPv6Definition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L46)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/deviceaccesspolicyv6/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L50)||[**DeviceAccessIPv6PolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L23)| +POST /template/policy/definition/deviceaccesspolicyv6/preview||[**ConfigurationPolicyDeviceAccessIPv6Definition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L54)|[**DeviceAccessIPv6Policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/device_access_ipv6.py#L83)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/deviceaccesspolicyv6/preview/{id}||[**ConfigurationPolicyDeviceAccessIPv6Definition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/device_access_ipv6.py#L58)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/hubandspoke||[**ConfigurationPolicyHubAndSpokeDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L28)|[**HubAndSpokePolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/hub_and_spoke.py#L46)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/hubandspoke/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L32)||None| +PUT /template/policy/definition/hubandspoke/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L40)|[**HubAndSpokePolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/hubandspoke||[**ConfigurationPolicyHubAndSpokeDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/hubandspoke/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L48)||[**HubAndSpokePolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L23)| +POST /template/policy/definition/hubandspoke/preview||[**ConfigurationPolicyHubAndSpokeDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L52)|[**HubAndSpokePolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/hub_and_spoke.py#L46)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/hubandspoke/preview/{id}||[**ConfigurationPolicyHubAndSpokeDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/hub_and_spoke.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/mesh||[**ConfigurationPolicyMeshDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L28)|[**MeshPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/mesh.py#L23)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/mesh/{id}||[**ConfigurationPolicyMeshDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L32)||None| +PUT /template/policy/definition/mesh/{id}||[**ConfigurationPolicyMeshDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L40)|[**MeshPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/mesh||[**ConfigurationPolicyMeshDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/mesh/{id}||[**ConfigurationPolicyMeshDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L48)||[**MeshPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L23)| +POST /template/policy/definition/mesh/preview||[**ConfigurationPolicyMeshDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L52)|[**MeshPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/mesh.py#L23)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/mesh/preview/{id}||[**ConfigurationPolicyMeshDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/mesh.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/qosmap||[**ConfigurationPolicyQoSMapDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L28)|[**QoSMapPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/qos_map.py#L72)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/qosmap/{id}||[**ConfigurationPolicyQoSMapDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L32)||None| +PUT /template/policy/definition/qosmap/{id}||[**ConfigurationPolicyQoSMapDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L40)|[**QoSMapPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/qosmap||[**ConfigurationPolicyQoSMapDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/qosmap/{id}||[**ConfigurationPolicyQoSMapDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L48)||[**QoSMapPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L23)| +POST /template/policy/definition/qosmap/preview||[**ConfigurationPolicyQoSMapDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L52)|[**QoSMapPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/qos_map.py#L72)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/qosmap/preview/{id}||[**ConfigurationPolicyQoSMapDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/qos_map.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/rewriterule||[**ConfigurationPolicyRewriteRuleDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L28)|[**RewritePolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/rewrite.py#L31)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/rewriterule/{id}||[**ConfigurationPolicyRewriteRuleDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L32)||None| +PUT /template/policy/definition/rewriterule/{id}||[**ConfigurationPolicyRewriteRuleDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L40)|[**RewritePolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/rewriterule||[**ConfigurationPolicyRewriteRuleDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/rewriterule/{id}||[**ConfigurationPolicyRewriteRuleDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L48)||[**RewritePolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L23)| +POST /template/policy/definition/rewriterule/preview||[**ConfigurationPolicyRewriteRuleDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L52)|[**RewritePolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/rewrite.py#L31)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/rewriterule/preview/{id}||[**ConfigurationPolicyRewriteRuleDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rewrite.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/ruleset||[**ConfigurationPolicyRuleSetDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L28)|[**RuleSet**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/rule_set.py#L154)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/ruleset/{id}||[**ConfigurationPolicyRuleSetDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L32)||None| +PUT /template/policy/definition/ruleset/{id}||[**ConfigurationPolicyRuleSetDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L40)|[**RuleSetEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/ruleset||[**ConfigurationPolicyRuleSetDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/ruleset/{id}||[**ConfigurationPolicyRuleSetDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L48)||[**RuleSetGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L23)| +POST /template/policy/definition/ruleset/preview||[**ConfigurationPolicyRuleSetDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L52)|[**RuleSet**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/rule_set.py#L154)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/ruleset/preview/{id}||[**ConfigurationPolicyRuleSetDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/rule_set.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/securitygroup||[**ConfigurationPolicySecurityGroupDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L28)|[**SecurityGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/security_group.py#L53)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/securitygroup/{id}||[**ConfigurationPolicySecurityGroupDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L32)||None| +PUT /template/policy/definition/securitygroup/{id}||[**ConfigurationPolicySecurityGroupDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L40)|[**SecurityGroupEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/securitygroup||[**ConfigurationPolicySecurityGroupDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/securitygroup/{id}||[**ConfigurationPolicySecurityGroupDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L48)||[**SecurityGroupGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L23)| +POST /template/policy/definition/securitygroup/preview||[**ConfigurationPolicySecurityGroupDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L52)|[**SecurityGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/security_group.py#L53)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/securitygroup/preview/{id}||[**ConfigurationPolicySecurityGroupDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/security_group.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/data||[**ConfigurationPolicyDataDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L29)|[**TrafficDataPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/traffic_data.py#L360)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/data/{id}||[**ConfigurationPolicyDataDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L33)||None| +PUT /template/policy/definition/data/{id}||[**ConfigurationPolicyDataDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L41)|[**TrafficDataPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L20)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/data||[**ConfigurationPolicyDataDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L45)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/data/{id}||[**ConfigurationPolicyDataDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L49)||[**TrafficDataPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L24)| +POST /template/policy/definition/data/preview||[**ConfigurationPolicyDataDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L53)|[**TrafficDataPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/traffic_data.py#L360)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/data/preview/{id}||[**ConfigurationPolicyDataDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/traffic_data.py#L57)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/vpnmembershipgroup||[**ConfigurationPolicyVPNMembershipGroupDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L28)|[**VPNMembershipPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/vpn_membership.py#L22)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/vpnmembershipgroup/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L32)||None| +PUT /template/policy/definition/vpnmembershipgroup/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L40)|[**VPNMembershipPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/vpnmembershipgroup||[**ConfigurationPolicyVPNMembershipGroupDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/vpnmembershipgroup/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L48)||[**VPNMembershipPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L23)| +POST /template/policy/definition/vpnmembershipgroup/preview||[**ConfigurationPolicyVPNMembershipGroupDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L52)|[**VPNMembershipPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/vpn_membership.py#L22)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/vpnmembershipgroup/preview/{id}||[**ConfigurationPolicyVPNMembershipGroupDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/vpn_membership.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/definition/zonebasedfw||[**ConfigurationPolicyZoneBasedFirewallDefinition.create_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L28)|[**ZoneBasedFWPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/zone_based_firewall.py#L192)|[**PolicyDefinitionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1017)| +DELETE /template/policy/definition/zonebasedfw/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.delete_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L32)||None| +PUT /template/policy/definition/zonebasedfw/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.edit_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L40)|[**ZoneBasedFWPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L19)|[**PolicyDefinitionEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1104)| +GET /template/policy/definition/zonebasedfw||[**ConfigurationPolicyZoneBasedFirewallDefinition.get_definitions**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L44)||DataSequence[[**PolicyDefinitionInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1091)]| +GET /template/policy/definition/zonebasedfw/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.get_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L48)||[**ZoneBasedFWPolicyGetResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L23)| +POST /template/policy/definition/zonebasedfw/preview||[**ConfigurationPolicyZoneBasedFirewallDefinition.preview_policy_definition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L52)|[**ZoneBasedFWPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/definitions/zone_based_firewall.py#L192)|[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +GET /template/policy/definition/zonebasedfw/preview/{id}||[**ConfigurationPolicyZoneBasedFirewallDefinition.preview_policy_definition_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/definition/zone_based_firewall.py#L56)||[**PolicyDefinitionPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_definition.py#L1110)| +POST /template/policy/list/app||[**ConfigurationPolicyApplicationList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L27)|[**AppList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L131)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/app/{id}||[**ConfigurationPolicyApplicationList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L31)||None| +DELETE /template/policy/list/app||[**ConfigurationPolicyApplicationList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L35)||None| +PUT /template/policy/list/app/{id}||[**ConfigurationPolicyApplicationList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L39)|[**AppListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L18)|None| +GET /template/policy/list/app/{id}||[**ConfigurationPolicyApplicationList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L43)||[**AppListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L22)| +GET /template/policy/list/app||[**ConfigurationPolicyApplicationList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L47)||DataSequence[[**AppListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L22)]| +GET /template/policy/list/app/filtered||[**ConfigurationPolicyApplicationList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L51)||DataSequence[[**AppListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L22)]| +POST /template/policy/list/app/preview||[**ConfigurationPolicyApplicationList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L55)|[**AppList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L131)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/app/preview/{id}||[**ConfigurationPolicyApplicationList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/appprobe||[**ConfigurationPolicyAppProbeClassList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L27)|[**AppProbeClassList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L226)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/appprobe/{id}||[**ConfigurationPolicyAppProbeClassList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L31)||None| +DELETE /template/policy/list/appprobe||[**ConfigurationPolicyAppProbeClassList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L35)||None| +PUT /template/policy/list/appprobe/{id}||[**ConfigurationPolicyAppProbeClassList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L39)|[**AppProbeClassListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L18)|None| +GET /template/policy/list/appprobe/{id}||[**ConfigurationPolicyAppProbeClassList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L43)||[**AppProbeClassListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L22)| +GET /template/policy/list/appprobe||[**ConfigurationPolicyAppProbeClassList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L47)||DataSequence[[**AppProbeClassListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L22)]| +GET /template/policy/list/appprobe/filtered||[**ConfigurationPolicyAppProbeClassList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L51)||DataSequence[[**AppProbeClassListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L22)]| +POST /template/policy/list/appprobe/preview||[**ConfigurationPolicyAppProbeClassList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L55)|[**AppProbeClassList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L226)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/appprobe/preview/{id}||[**ConfigurationPolicyAppProbeClassList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/app_probe.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/aspath||[**ConfigurationPolicyASPathList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L27)|[**ASPathList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L206)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/aspath/{id}||[**ConfigurationPolicyASPathList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L31)||None| +DELETE /template/policy/list/aspath||[**ConfigurationPolicyASPathList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L35)||None| +PUT /template/policy/list/aspath/{id}||[**ConfigurationPolicyASPathList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L39)|[**ASPathListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L18)|None| +GET /template/policy/list/aspath/{id}||[**ConfigurationPolicyASPathList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L43)||[**ASPathListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L22)| +GET /template/policy/list/aspath||[**ConfigurationPolicyASPathList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L47)||DataSequence[[**ASPathListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L22)]| +GET /template/policy/list/aspath/filtered||[**ConfigurationPolicyASPathList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L51)||DataSequence[[**ASPathListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L22)]| +POST /template/policy/list/aspath/preview||[**ConfigurationPolicyASPathList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L55)|[**ASPathList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L206)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/aspath/preview/{id}||[**ConfigurationPolicyASPathList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/as_path.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/class||[**ConfigurationPolicyForwardingClassList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L27)|[**ClassMapList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L211)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/class/{id}||[**ConfigurationPolicyForwardingClassList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L31)||None| +DELETE /template/policy/list/class||[**ConfigurationPolicyForwardingClassList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L35)||None| +PUT /template/policy/list/class/{id}||[**ConfigurationPolicyForwardingClassList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L39)|[**ClassMapListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L18)|None| +GET /template/policy/list/class/{id}||[**ConfigurationPolicyForwardingClassList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L43)||[**ClassMapListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L22)| +GET /template/policy/list/class||[**ConfigurationPolicyForwardingClassList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L47)||DataSequence[[**ClassMapListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L22)]| +GET /template/policy/list/class/filtered||[**ConfigurationPolicyForwardingClassList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L51)||DataSequence[[**ClassMapListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L22)]| +POST /template/policy/list/class/preview||[**ConfigurationPolicyForwardingClassList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L55)|[**ClassMapList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L211)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/class/preview/{id}||[**ConfigurationPolicyForwardingClassList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/class_map.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/color||[**ConfigurationPolicyColorList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L27)|[**ColorList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L142)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/color/{id}||[**ConfigurationPolicyColorList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L31)||None| +DELETE /template/policy/list/color||[**ConfigurationPolicyColorList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L35)||None| +PUT /template/policy/list/color/{id}||[**ConfigurationPolicyColorList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L39)|[**ColorListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L18)|None| +GET /template/policy/list/color/{id}||[**ConfigurationPolicyColorList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L43)||[**ColorListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L22)| +GET /template/policy/list/color||[**ConfigurationPolicyColorList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L47)||DataSequence[[**ColorListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L22)]| +GET /template/policy/list/color/filtered||[**ConfigurationPolicyColorList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L51)||DataSequence[[**ColorListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L22)]| +POST /template/policy/list/color/preview||[**ConfigurationPolicyColorList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L55)|[**ColorList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L142)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/color/preview/{id}||[**ConfigurationPolicyColorList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/color.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/community||[**ConfigurationPolicyCommunityList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L27)|[**CommunityList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L188)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/community/{id}||[**ConfigurationPolicyCommunityList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L31)||None| +DELETE /template/policy/list/community||[**ConfigurationPolicyCommunityList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L35)||None| +PUT /template/policy/list/community/{id}||[**ConfigurationPolicyCommunityList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L39)|[**CommunityListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L18)|None| +GET /template/policy/list/community/{id}||[**ConfigurationPolicyCommunityList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L43)||[**CommunityListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L22)| +GET /template/policy/list/community||[**ConfigurationPolicyCommunityList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L47)||DataSequence[[**CommunityListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L22)]| +GET /template/policy/list/community/filtered||[**ConfigurationPolicyCommunityList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L51)||DataSequence[[**CommunityListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L22)]| +POST /template/policy/list/community/preview||[**ConfigurationPolicyCommunityList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L55)|[**CommunityList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L188)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/community/preview/{id}||[**ConfigurationPolicyCommunityList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/community.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/dataipv6prefix||[**ConfigurationPolicyDataIPv6PrefixList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L27)|[**DataIPv6PrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L150)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/dataipv6prefix/{id}||[**ConfigurationPolicyDataIPv6PrefixList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L31)||None| +DELETE /template/policy/list/dataipv6prefix||[**ConfigurationPolicyDataIPv6PrefixList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L35)||None| +PUT /template/policy/list/dataipv6prefix/{id}||[**ConfigurationPolicyDataIPv6PrefixList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L39)|[**DataIPv6PrefixListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L18)|None| +GET /template/policy/list/dataipv6prefix/{id}||[**ConfigurationPolicyDataIPv6PrefixList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L43)||[**DataIPv6PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L22)| +GET /template/policy/list/dataipv6prefix||[**ConfigurationPolicyDataIPv6PrefixList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L47)||DataSequence[[**DataIPv6PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L22)]| +GET /template/policy/list/dataipv6prefix/filtered||[**ConfigurationPolicyDataIPv6PrefixList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L51)||DataSequence[[**DataIPv6PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L22)]| +POST /template/policy/list/dataipv6prefix/preview||[**ConfigurationPolicyDataIPv6PrefixList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L55)|[**DataIPv6PrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L150)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/dataipv6prefix/preview/{id}||[**ConfigurationPolicyDataIPv6PrefixList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_ipv6_prefix.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/dataprefix||[**ConfigurationPolicyDataPrefixList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L27)|[**DataPrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L61)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/dataprefix/{id}||[**ConfigurationPolicyDataPrefixList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L31)||None| +DELETE /template/policy/list/dataprefix||[**ConfigurationPolicyDataPrefixList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L35)||None| +PUT /template/policy/list/dataprefix/{id}||[**ConfigurationPolicyDataPrefixList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L39)|[**DataPrefixListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L18)|None| +GET /template/policy/list/dataprefix/{id}||[**ConfigurationPolicyDataPrefixList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L43)||[**DataPrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L22)| +GET /template/policy/list/dataprefix||[**ConfigurationPolicyDataPrefixList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L47)||DataSequence[[**DataPrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L22)]| +GET /template/policy/list/dataprefix/filtered||[**ConfigurationPolicyDataPrefixList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L51)||DataSequence[[**DataPrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L22)]| +POST /template/policy/list/dataprefix/preview||[**ConfigurationPolicyDataPrefixList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L55)|[**DataPrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L61)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/dataprefix/preview/{id}||[**ConfigurationPolicyDataPrefixList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/data_prefix.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/expandedcommunity||[**ConfigurationPolicyExpandedCommunityList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L27)|[**ExpandedCommunityList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L192)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/expandedcommunity/{id}||[**ConfigurationPolicyExpandedCommunityList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L31)||None| +DELETE /template/policy/list/expandedcommunity||[**ConfigurationPolicyExpandedCommunityList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L35)||None| +PUT /template/policy/list/expandedcommunity/{id}||[**ConfigurationPolicyExpandedCommunityList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L39)|[**ExpandedCommunityListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L18)|None| +GET /template/policy/list/expandedcommunity/{id}||[**ConfigurationPolicyExpandedCommunityList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L43)||[**ExpandedCommunityListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L22)| +GET /template/policy/list/expandedcommunity||[**ConfigurationPolicyExpandedCommunityList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L47)||DataSequence[[**ExpandedCommunityListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L22)]| +GET /template/policy/list/expandedcommunity/filtered||[**ConfigurationPolicyExpandedCommunityList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L51)||DataSequence[[**ExpandedCommunityListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L22)]| +POST /template/policy/list/expandedcommunity/preview||[**ConfigurationPolicyExpandedCommunityList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L55)|[**ExpandedCommunityList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L192)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/expandedcommunity/preview/{id}||[**ConfigurationPolicyExpandedCommunityList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/expanded_community.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/fqdn||[**ConfigurationPolicyFQDNList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L27)|[**FQDNList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L106)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/fqdn/{id}||[**ConfigurationPolicyFQDNList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L31)||None| +DELETE /template/policy/list/fqdn||[**ConfigurationPolicyFQDNList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L35)||None| +PUT /template/policy/list/fqdn/{id}||[**ConfigurationPolicyFQDNList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L39)|[**FQDNListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L18)|None| +GET /template/policy/list/fqdn/{id}||[**ConfigurationPolicyFQDNList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L43)||[**FQDNListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L22)| +GET /template/policy/list/fqdn||[**ConfigurationPolicyFQDNList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L47)||DataSequence[[**FQDNListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L22)]| +GET /template/policy/list/fqdn/filtered||[**ConfigurationPolicyFQDNList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L51)||DataSequence[[**FQDNListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L22)]| +POST /template/policy/list/fqdn/preview||[**ConfigurationPolicyFQDNList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L55)|[**FQDNList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L106)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/fqdn/preview/{id}||[**ConfigurationPolicyFQDNList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/fqdn.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/geolocation||[**ConfigurationPolicyGeoLocationList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L27)|[**GeoLocationList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L111)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/geolocation/{id}||[**ConfigurationPolicyGeoLocationList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L31)||None| +DELETE /template/policy/list/geolocation||[**ConfigurationPolicyGeoLocationList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L35)||None| +PUT /template/policy/list/geolocation/{id}||[**ConfigurationPolicyGeoLocationList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L39)|[**GeoLocationListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L18)|None| +GET /template/policy/list/geolocation/{id}||[**ConfigurationPolicyGeoLocationList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L43)||[**GeoLocationListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L22)| +GET /template/policy/list/geolocation||[**ConfigurationPolicyGeoLocationList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L47)||DataSequence[[**GeoLocationListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L22)]| +GET /template/policy/list/geolocation/filtered||[**ConfigurationPolicyGeoLocationList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L51)||DataSequence[[**GeoLocationListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L22)]| +POST /template/policy/list/geolocation/preview||[**ConfigurationPolicyGeoLocationList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L55)|[**GeoLocationList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L111)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/geolocation/preview/{id}||[**ConfigurationPolicyGeoLocationList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/geo_location.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/ipssignature||[**ConfigurationPolicyIPSSignatureList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L27)|[**IPSSignatureList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L163)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/ipssignature/{id}||[**ConfigurationPolicyIPSSignatureList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L31)||None| +DELETE /template/policy/list/ipssignature||[**ConfigurationPolicyIPSSignatureList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L35)||None| +PUT /template/policy/list/ipssignature/{id}||[**ConfigurationPolicyIPSSignatureList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L39)|[**IPSSignatureListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L18)|None| +GET /template/policy/list/ipssignature/{id}||[**ConfigurationPolicyIPSSignatureList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L43)||[**IPSSignatureListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L22)| +GET /template/policy/list/ipssignature||[**ConfigurationPolicyIPSSignatureList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L47)||DataSequence[[**IPSSignatureListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L22)]| +GET /template/policy/list/ipssignature/filtered||[**ConfigurationPolicyIPSSignatureList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L51)||DataSequence[[**IPSSignatureListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L22)]| +POST /template/policy/list/ipssignature/preview||[**ConfigurationPolicyIPSSignatureList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L55)|[**IPSSignatureList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L163)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/ipssignature/preview/{id}||[**ConfigurationPolicyIPSSignatureList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ips_signature.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/ipv6prefix||[**ConfigurationPolicyIPv6PrefixList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L27)|[**IPv6PrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L315)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/ipv6prefix/{id}||[**ConfigurationPolicyIPv6PrefixList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L31)||None| +DELETE /template/policy/list/ipv6prefix||[**ConfigurationPolicyIPv6PrefixList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L35)||None| +PUT /template/policy/list/ipv6prefix/{id}||[**ConfigurationPolicyIPv6PrefixList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L39)|[**IPv6PrefixListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L18)|None| +GET /template/policy/list/ipv6prefix/{id}||[**ConfigurationPolicyIPv6PrefixList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L43)||[**IPv6PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L22)| +GET /template/policy/list/ipv6prefix||[**ConfigurationPolicyIPv6PrefixList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L47)||DataSequence[[**IPv6PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L22)]| +GET /template/policy/list/ipv6prefix/filtered||[**ConfigurationPolicyIPv6PrefixList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L51)||DataSequence[[**IPv6PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L22)]| +POST /template/policy/list/ipv6prefix/preview||[**ConfigurationPolicyIPv6PrefixList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L55)|[**IPv6PrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L315)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/ipv6prefix/preview/{id}||[**ConfigurationPolicyIPv6PrefixList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/ipv6_prefix.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/localapp||[**ConfigurationPolicyLocalAppList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L27)|[**LocalAppList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L126)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/localapp/{id}||[**ConfigurationPolicyLocalAppList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L31)||None| +DELETE /template/policy/list/localapp||[**ConfigurationPolicyLocalAppList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L35)||None| +PUT /template/policy/list/localapp/{id}||[**ConfigurationPolicyLocalAppList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L39)|[**LocalAppListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L18)|None| +GET /template/policy/list/localapp/{id}||[**ConfigurationPolicyLocalAppList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L43)||[**LocalAppListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L22)| +GET /template/policy/list/localapp||[**ConfigurationPolicyLocalAppList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L47)||DataSequence[[**LocalAppListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L22)]| +GET /template/policy/list/localapp/filtered||[**ConfigurationPolicyLocalAppList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L51)||DataSequence[[**LocalAppListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L22)]| +POST /template/policy/list/localapp/preview||[**ConfigurationPolicyLocalAppList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L55)|[**LocalAppList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L126)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/localapp/preview/{id}||[**ConfigurationPolicyLocalAppList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_app.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/localdomain||[**ConfigurationPolicyLocalDomainList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L27)|[**LocalDomainList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L158)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/localdomain/{id}||[**ConfigurationPolicyLocalDomainList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L31)||None| +DELETE /template/policy/list/localdomain||[**ConfigurationPolicyLocalDomainList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L35)||None| +PUT /template/policy/list/localdomain/{id}||[**ConfigurationPolicyLocalDomainList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L39)|[**LocalDomainListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L18)|None| +GET /template/policy/list/localdomain/{id}||[**ConfigurationPolicyLocalDomainList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L43)||[**LocalDomainListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L22)| +GET /template/policy/list/localdomain||[**ConfigurationPolicyLocalDomainList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L47)||DataSequence[[**LocalDomainListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L22)]| +GET /template/policy/list/localdomain/filtered||[**ConfigurationPolicyLocalDomainList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L51)||DataSequence[[**LocalDomainListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L22)]| +POST /template/policy/list/localdomain/preview||[**ConfigurationPolicyLocalDomainList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L55)|[**LocalDomainList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L158)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/localdomain/preview/{id}||[**ConfigurationPolicyLocalDomainList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/local_domain.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/mirror||[**ConfigurationPolicyMirrorList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L27)|[**MirrorList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L221)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/mirror/{id}||[**ConfigurationPolicyMirrorList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L31)||None| +DELETE /template/policy/list/mirror||[**ConfigurationPolicyMirrorList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L35)||None| +PUT /template/policy/list/mirror/{id}||[**ConfigurationPolicyMirrorList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L39)|[**MirrorListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L18)|None| +GET /template/policy/list/mirror/{id}||[**ConfigurationPolicyMirrorList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L43)||[**MirrorListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L22)| +GET /template/policy/list/mirror||[**ConfigurationPolicyMirrorList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L47)||DataSequence[[**MirrorListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L22)]| +GET /template/policy/list/mirror/filtered||[**ConfigurationPolicyMirrorList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L51)||DataSequence[[**MirrorListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L22)]| +POST /template/policy/list/mirror/preview||[**ConfigurationPolicyMirrorList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L55)|[**MirrorList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L221)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/mirror/preview/{id}||[**ConfigurationPolicyMirrorList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/mirror.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/policer||[**ConfigurationPolicyPolicerClassList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L27)|[**PolicerList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L196)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/policer/{id}||[**ConfigurationPolicyPolicerClassList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L31)||None| +DELETE /template/policy/list/policer||[**ConfigurationPolicyPolicerClassList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L35)||None| +PUT /template/policy/list/policer/{id}||[**ConfigurationPolicyPolicerClassList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L39)|[**PolicerListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L18)|None| +GET /template/policy/list/policer/{id}||[**ConfigurationPolicyPolicerClassList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L43)||[**PolicerListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L22)| +GET /template/policy/list/policer||[**ConfigurationPolicyPolicerClassList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L47)||DataSequence[[**PolicerListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L22)]| +GET /template/policy/list/policer/filtered||[**ConfigurationPolicyPolicerClassList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L51)||DataSequence[[**PolicerListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L22)]| +POST /template/policy/list/policer/preview||[**ConfigurationPolicyPolicerClassList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L55)|[**PolicerList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L196)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/policer/preview/{id}||[**ConfigurationPolicyPolicerClassList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/policer.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/port||[**ConfigurationPolicyPortList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L27)|[**PortList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L116)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/port/{id}||[**ConfigurationPolicyPortList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L31)||None| +DELETE /template/policy/list/port||[**ConfigurationPolicyPortList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L35)||None| +PUT /template/policy/list/port/{id}||[**ConfigurationPolicyPortList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L39)|[**PortListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L18)|None| +GET /template/policy/list/port/{id}||[**ConfigurationPolicyPortList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L43)||[**PortListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L22)| +GET /template/policy/list/port||[**ConfigurationPolicyPortList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L47)||DataSequence[[**PortListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L22)]| +GET /template/policy/list/port/filtered||[**ConfigurationPolicyPortList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L51)||DataSequence[[**PortListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L22)]| +POST /template/policy/list/port/preview||[**ConfigurationPolicyPortList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L55)|[**PortList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L116)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/port/preview/{id}||[**ConfigurationPolicyPortList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/port.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/preferredcolorgroup||[**ConfigurationPreferredColorGroupList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L27)|[**PreferredColorGroupList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L278)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/preferredcolorgroup/{id}||[**ConfigurationPreferredColorGroupList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L31)||None| +DELETE /template/policy/list/preferredcolorgroup||[**ConfigurationPreferredColorGroupList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L35)||None| +PUT /template/policy/list/preferredcolorgroup/{id}||[**ConfigurationPreferredColorGroupList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L39)|[**PreferredColorGroupListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L18)|None| +GET /template/policy/list/preferredcolorgroup/{id}||[**ConfigurationPreferredColorGroupList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L43)||[**PreferredColorGroupListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L22)| +GET /template/policy/list/preferredcolorgroup||[**ConfigurationPreferredColorGroupList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L47)||DataSequence[[**PreferredColorGroupListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L22)]| +GET /template/policy/list/preferredcolorgroup/filtered||[**ConfigurationPreferredColorGroupList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L51)||DataSequence[[**PreferredColorGroupListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L22)]| +POST /template/policy/list/preferredcolorgroup/preview||[**ConfigurationPreferredColorGroupList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L55)|[**PreferredColorGroupList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L278)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/preferredcolorgroup/preview/{id}||[**ConfigurationPreferredColorGroupList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/preferred_color_group.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/prefix||[**ConfigurationPolicyPrefixList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L27)|[**PrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L305)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/prefix/{id}||[**ConfigurationPolicyPrefixList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L31)||None| +DELETE /template/policy/list/prefix||[**ConfigurationPolicyPrefixList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L35)||None| +PUT /template/policy/list/prefix/{id}||[**ConfigurationPolicyPrefixList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L39)|[**PrefixListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L18)|None| +GET /template/policy/list/prefix/{id}||[**ConfigurationPolicyPrefixList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L43)||[**PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L22)| +GET /template/policy/list/prefix||[**ConfigurationPolicyPrefixList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L47)||DataSequence[[**PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L22)]| +GET /template/policy/list/prefix/filtered||[**ConfigurationPolicyPrefixList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L51)||DataSequence[[**PrefixListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L22)]| +POST /template/policy/list/prefix/preview||[**ConfigurationPolicyPrefixList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L55)|[**PrefixList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L305)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/prefix/preview/{id}||[**ConfigurationPolicyPrefixList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/prefix.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/protocolname||[**ConfigurationPolicyProtocolNameList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L27)|[**ProtocolNameList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L121)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/protocolname/{id}||[**ConfigurationPolicyProtocolNameList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L31)||None| +DELETE /template/policy/list/protocolname||[**ConfigurationPolicyProtocolNameList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L35)||None| +PUT /template/policy/list/protocolname/{id}||[**ConfigurationPolicyProtocolNameList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L39)|[**ProtocolNameListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L18)|None| +GET /template/policy/list/protocolname/{id}||[**ConfigurationPolicyProtocolNameList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L43)||[**ProtocolNameListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L22)| +GET /template/policy/list/protocolname||[**ConfigurationPolicyProtocolNameList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L47)||DataSequence[[**ProtocolNameListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L22)]| +GET /template/policy/list/protocolname/filtered||[**ConfigurationPolicyProtocolNameList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L51)||DataSequence[[**ProtocolNameListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L22)]| +POST /template/policy/list/protocolname/preview||[**ConfigurationPolicyProtocolNameList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L55)|[**ProtocolNameList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L121)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/protocolname/preview/{id}||[**ConfigurationPolicyProtocolNameList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/protocol_name.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/region||[**ConfigurationPolicyRegionList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L21)|[**RegionList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L320)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/region/{id}||[**ConfigurationPolicyRegionList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L25)||None| +DELETE /template/policy/list/region||[**ConfigurationPolicyRegionList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L29)||None| +PUT /template/policy/list/region/{id}||[**ConfigurationPolicyRegionList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L33)|[**RegionListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L12)|None| +GET /template/policy/list/region/{id}||[**ConfigurationPolicyRegionList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L37)||[**RegionListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L16)| +GET /template/policy/list/region||[**ConfigurationPolicyRegionList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L41)||DataSequence[[**RegionListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L16)]| +GET /template/policy/list/region/filtered||[**ConfigurationPolicyRegionList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L45)||DataSequence[[**RegionListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L16)]| +POST /template/policy/list/region/preview||[**ConfigurationPolicyRegionList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L49)|[**RegionList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L320)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/region/preview/{id}||[**ConfigurationPolicyRegionList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/region.py#L53)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/site/defaultsite||[**ConfigurationPolicySiteList.create_default_site_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L27)|[**SiteList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L69)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +POST /template/policy/list/site||[**ConfigurationPolicySiteList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L31)|[**SiteList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L69)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/site/{id}||[**ConfigurationPolicySiteList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L35)||None| +DELETE /template/policy/list/site||[**ConfigurationPolicySiteList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L39)||None| +PUT /template/policy/list/site/{id}||[**ConfigurationPolicySiteList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L43)|[**SiteListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L18)|None| +GET /template/policy/list/site/{id}||[**ConfigurationPolicySiteList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L47)||[**SiteListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L22)| +GET /template/policy/list/site||[**ConfigurationPolicySiteList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L51)||DataSequence[[**SiteListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L22)]| +GET /template/policy/list/site/filtered||[**ConfigurationPolicySiteList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L55)||DataSequence[[**SiteListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L22)]| +POST /template/policy/list/site/preview||[**ConfigurationPolicySiteList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L59)|[**SiteList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L69)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/site/preview/{id}||[**ConfigurationPolicySiteList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/site.py#L63)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/sla||[**ConfigurationPolicySLAClassList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L27)|[**SLAClassList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L237)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/sla/{id}||[**ConfigurationPolicySLAClassList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L31)||None| +DELETE /template/policy/list/sla||[**ConfigurationPolicySLAClassList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L35)||None| +PUT /template/policy/list/sla/{id}||[**ConfigurationPolicySLAClassList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L39)|[**SLAClassListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L18)|None| +GET /template/policy/list/sla/{id}||[**ConfigurationPolicySLAClassList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L43)||[**SLAClassListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L22)| +GET /template/policy/list/sla||[**ConfigurationPolicySLAClassList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L47)||DataSequence[[**SLAClassListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L22)]| +GET /template/policy/list/sla/filtered||[**ConfigurationPolicySLAClassList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L51)||DataSequence[[**SLAClassListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L22)]| +POST /template/policy/list/sla/preview||[**ConfigurationPolicySLAClassList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L55)|[**SLAClassList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L237)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/sla/preview/{id}||[**ConfigurationPolicySLAClassList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/sla.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/tloc||[**ConfigurationPolicyTLOCList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L27)|[**TLOCList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L269)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/tloc/{id}||[**ConfigurationPolicyTLOCList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L31)||None| +DELETE /template/policy/list/tloc||[**ConfigurationPolicyTLOCList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L35)||None| +PUT /template/policy/list/tloc/{id}||[**ConfigurationPolicyTLOCList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L39)|[**TLOCListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L18)|None| +GET /template/policy/list/tloc/{id}||[**ConfigurationPolicyTLOCList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L43)||[**TLOCListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L22)| +GET /template/policy/list/tloc||[**ConfigurationPolicyTLOCList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L47)||DataSequence[[**TLOCListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L22)]| +GET /template/policy/list/tloc/filtered||[**ConfigurationPolicyTLOCList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L51)||DataSequence[[**TLOCListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L22)]| +POST /template/policy/list/tloc/preview||[**ConfigurationPolicyTLOCList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L55)|[**TLOCList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L269)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/tloc/preview/{id}||[**ConfigurationPolicyTLOCList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/tloc.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/urlwhitelist||[**ConfigurationPolicyURLAllowList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L27)|[**URLAllowList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L168)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/urlwhitelist/{id}||[**ConfigurationPolicyURLAllowList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L31)||None| +DELETE /template/policy/list/urlwhitelist||[**ConfigurationPolicyURLAllowList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L35)||None| +PUT /template/policy/list/urlwhitelist/{id}||[**ConfigurationPolicyURLAllowList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L39)|[**URLAllowListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L18)|None| +GET /template/policy/list/urlwhitelist/{id}||[**ConfigurationPolicyURLAllowList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L43)||[**URLAllowListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L22)| +GET /template/policy/list/urlwhitelist||[**ConfigurationPolicyURLAllowList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L47)||DataSequence[[**URLAllowListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L22)]| +GET /template/policy/list/urlwhitelist/filtered||[**ConfigurationPolicyURLAllowList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L51)||DataSequence[[**URLAllowListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L22)]| +POST /template/policy/list/urlwhitelist/preview||[**ConfigurationPolicyURLAllowList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L55)|[**URLAllowList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L168)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/urlwhitelist/preview/{id}||[**ConfigurationPolicyURLAllowList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_allow_list.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/urlblacklist||[**ConfigurationPolicyURLBlockList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L27)|[**URLBlockList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L173)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/urlblacklist/{id}||[**ConfigurationPolicyURLBlockList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L31)||None| +DELETE /template/policy/list/urlblacklist||[**ConfigurationPolicyURLBlockList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L35)||None| +PUT /template/policy/list/urlblacklist/{id}||[**ConfigurationPolicyURLBlockList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L39)|[**URLBlockListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L18)|None| +GET /template/policy/list/urlblacklist/{id}||[**ConfigurationPolicyURLBlockList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L43)||[**URLBlockListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L22)| +GET /template/policy/list/urlblacklist||[**ConfigurationPolicyURLBlockList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L47)||DataSequence[[**URLBlockListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L22)]| +GET /template/policy/list/urlblacklist/filtered||[**ConfigurationPolicyURLBlockList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L51)||DataSequence[[**URLBlockListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L22)]| +POST /template/policy/list/urlblacklist/preview||[**ConfigurationPolicyURLBlockList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L55)|[**URLBlockList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L173)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/urlblacklist/preview/{id}||[**ConfigurationPolicyURLBlockList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/url_block_list.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/vpn||[**ConfigurationPolicyVPNList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L29)|[**VPNList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L82)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/vpn/{id}||[**ConfigurationPolicyVPNList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L33)||None| +DELETE /template/policy/list/vpn||[**ConfigurationPolicyVPNList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L37)||None| +PUT /template/policy/list/vpn/{id}||[**ConfigurationPolicyVPNList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L41)|[**VPNListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L20)|None| +GET /template/policy/list/vpn/{id}||[**ConfigurationPolicyVPNList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L45)||[**VPNListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L24)| +GET /template/policy/list/vpn||[**ConfigurationPolicyVPNList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L49)||DataSequence[[**VPNListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L24)]| +GET /template/policy/list/vpn/filtered||[**ConfigurationPolicyVPNList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L53)||DataSequence[[**VPNListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L24)]| +POST /template/policy/list/vpn/preview||[**ConfigurationPolicyVPNList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L57)|[**VPNList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L82)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/vpn/preview/{id}||[**ConfigurationPolicyVPNList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/vpn.py#L61)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/list/zone||[**ConfigurationPolicyZoneList.create_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L27)|[**ZoneList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L95)|[**PolicyListId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L17)| +DELETE /template/policy/list/zone/{id}||[**ConfigurationPolicyZoneList.delete_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L31)||None| +DELETE /template/policy/list/zone||[**ConfigurationPolicyZoneList.delete_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L35)||None| +PUT /template/policy/list/zone/{id}||[**ConfigurationPolicyZoneList.edit_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L39)|[**ZoneListEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L18)|None| +GET /template/policy/list/zone/{id}||[**ConfigurationPolicyZoneList.get_lists_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L43)||[**ZoneListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L22)| +GET /template/policy/list/zone||[**ConfigurationPolicyZoneList.get_policy_lists**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L47)||DataSequence[[**ZoneListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L22)]| +GET /template/policy/list/zone/filtered||[**ConfigurationPolicyZoneList.get_policy_lists_with_info_tag**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L51)||DataSequence[[**ZoneListInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L22)]| +POST /template/policy/list/zone/preview||[**ConfigurationPolicyZoneList.preview_policy_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L55)|[**ZoneList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/lists.py#L95)|[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +GET /template/policy/list/zone/preview/{id}||[**ConfigurationPolicyZoneList.preview_policy_list_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/list/zone.py#L59)||[**PolicyListPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy_list.py#L31)| +POST /template/policy/security||[**ConfigurationSecurityTemplatePolicy.create_security_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L17)|[**SecurityPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L101), [**UnifiedSecurityPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L136)|None| +DELETE /template/policy/security/{id}||[**ConfigurationSecurityTemplatePolicy.delete_security_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L21)|None|None| +PUT /template/policy/security/{id}||[**ConfigurationSecurityTemplatePolicy.edit_security_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L25)|[**SecurityPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L101), [**UnifiedSecurityPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L136)|[**SecurityPolicyEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L170)| +GET /template/policy/security||[**ConfigurationSecurityTemplatePolicy.generate_security_template_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L38)||DataSequence[[**SecurityPolicyInfoRoot**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L189)]| +GET /template/policy/security/definition/{id}||[**ConfigurationSecurityTemplatePolicy.get_security_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/security_template.py#L50)||[**SecurityPolicyRoot**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/security.py#L166)| +POST /template/policy/vedge||[**ConfigurationVEdgeTemplatePolicy.create_vedge_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L22)|[**LocalizedPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L75)|[**PolicyId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy.py#L10)| +DELETE /template/policy/vedge/{id}||[**ConfigurationVEdgeTemplatePolicy.delete_vedge_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L26)||None| +PUT /template/policy/vedge/{id}||[**ConfigurationVEdgeTemplatePolicy.edit_vedge_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L30)|[**LocalizedPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L75)|[**LocalizedPolicyEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L125)| +GET /template/policy/vedge||[**ConfigurationVEdgeTemplatePolicy.generate_policy_template_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L34)||DataSequence[[**LocalizedPolicyInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L121)]| +GET /template/policy/vedge/devices/{id}||[**ConfigurationVEdgeTemplatePolicy.get_device_list_by_policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L38)||DataSequence[[**LocalizedPolicyDeviceInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L131)]| +GET /template/policy/vedge/devices||[**ConfigurationVEdgeTemplatePolicy.get_vedge_policy_device_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L42)||DataSequence[[**LocalizedPolicyDeviceInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L131)]| +GET /template/policy/vedge/definition/{id}||[**ConfigurationVEdgeTemplatePolicy.get_vedge_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L46)||[**LocalizedPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/localized.py#L75)| +GET /template/policy/assembly/vedge/{id}||[**ConfigurationVEdgeTemplatePolicy.preview_by_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vedge_template.py#L50)||[**PolicyPreview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy.py#L95)| +POST /template/policy/vsmart/activate/{id}||[**ConfigurationVSmartTemplatePolicy.activate_policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L33)|None|[**ActivateDeactivateTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L28)| +GET /template/policy/vsmart/connectivity/status||[**ConfigurationVSmartTemplatePolicy.check_vsmart_connectivity_status**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L43)||DataSequence[[**VSmartConnectivityStatus**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L15)]| +POST /template/policy/vsmart||[**ConfigurationVSmartTemplatePolicy.create_vsmart_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L47)|[**CentralizedPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/centralized.py#L203)|[**PolicyId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/policy.py#L10)| +POST /template/policy/vsmart/deactivate/{id}||[**ConfigurationVSmartTemplatePolicy.deactivate_policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L51)|None|[**ActivateDeactivateTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L28)| +DELETE /template/policy/vsmart/{id}||[**ConfigurationVSmartTemplatePolicy.delete_vsmart_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L57)||None| +PUT /template/policy/vsmart/central/{id}||[**ConfigurationVSmartTemplatePolicy.edit_template_without_lock_checks**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L61)|[**CentralizedPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/centralized.py#L263)|None| +PUT /template/policy/vsmart/{id}||[**ConfigurationVSmartTemplatePolicy.edit_vsmart_template**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L65)|[**CentralizedPolicyEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/centralized.py#L263)|None| +GET /template/policy/vsmart||[**ConfigurationVSmartTemplatePolicy.generate_vsmart_policy_template_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L69)||DataSequence[[**CentralizedPolicyInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/centralized.py#L267)]| +GET /template/policy/vsmart/definition/{id}||[**ConfigurationVSmartTemplatePolicy.get_template_by_policy_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/policy/vsmart_template.py#L73)||[**CentralizedPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/policy/centralized.py#L203)| +GET /device/action/remote-server||[**ConfigurationSoftwareActions.get_list_of_remote_servers**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L165)||DataSequence[[**RemoteServerInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L70)]| +POST /device/action/remote-server||[**ConfigurationSoftwareActions.add_new_remote_server**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L169)|[**RemoteServer**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L45)|None| +GET /device/action/remote-server/{id}||[**ConfigurationSoftwareActions.get_remote_server**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L173)||[**RemoteServerInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L70)| +PUT /device/action/remote-server/{id}||[**ConfigurationSoftwareActions.update_remote_server**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L177)|[**SoftwareRemoteServer**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L100)|None| +DELETE /device/action/remote-server/{id}||[**ConfigurationSoftwareActions.remove_remote_server**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L181)||None| +GET /device/action/software||[**ConfigurationSoftwareActions.get_software_images**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L185)||DataSequence[[**SoftwareImageDetails**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L111)]| +POST /device/action/software||[**ConfigurationSoftwareActions.upload_software_from_remote_server**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L189)|[**SoftwareRemoteServer**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L100)|None| +DELETE /device/action/software/{version_id}||[**ConfigurationSoftwareActions.delete_software_from_software_repository**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L193)||None| +GET /device/action/software/images||[**ConfigurationSoftwareActions.get_list_of_all_images**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L197)||DataSequence[[**SoftwareImageDetails**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration/software_actions.py#L111)]| +GET /device/action/status/{task_id}||[**ConfigurationDashboardStatus.find_status**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L121)||[**TaskData**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L100)| +GET /device/action/status/tasks||[**ConfigurationDashboardStatus.find_running_tasks**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L125)||[**TasksData**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_dashboard_status.py#L113)| +GET /device/action/install/devices/{device_type}||[**ConfigurationDeviceActions.get_list_of_installed_devices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L246)||DataSequence[[**InstalledDeviceData**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L182)]| +GET /device/action/ztp/upgrade/setting||[**ConfigurationDeviceActions.get_ztp_upgrade_config_setting**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L280)||DataSequence[[**ZTPUpgradeSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L34)]| +POST /device/action/changepartition||[**ConfigurationDeviceActions.process_mark_change_partition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L296)|[**PartitionActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L92)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /device/action/defaultpartition||[**ConfigurationDeviceActions.process_mark_default_partition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L304)|[**PartitionActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L92)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /device/action/install||[**ConfigurationDeviceActions.process_install_operation**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L312)|[**InstallActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L173)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /device/action/lxcactivate||[**ConfigurationDeviceActions.process_lxc_activate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L316)|[**PartitionActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L92)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /device/action/lxcdelete||[**ConfigurationDeviceActions.process_lxc_delete**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L321)|[**PartitionActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L92)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /device/action/lxcupgrade||[**ConfigurationDeviceActions.process_lxc_upgrade**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L338)|[**PartitionActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L92)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /device/action/removepartition||[**ConfigurationDeviceActions.process_remove_partition**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L347)|[**RemovePartitionActionPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L133)|[**ActionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_actions.py#L26)| +POST /template/device/config/config/||[**ConfigurationDeviceTemplate.get_device_configuration_preview**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_template.py#L22)|[**FeatureToCLIPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_device_template.py#L12)|str|PROVIDER +GET /v1/feature-profile/sdwan/system/aaa/schema|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_system_aaa_parcel_schema**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L41)||None| +GET /v1/feature-profile/sdwan/transport/cellular-controller/schema|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_transport_cellular_controller_parcel_schema**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L46)||None| +GET /v1/feature-profile/sdwan/transport|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_transport_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L51)|Optional[[**GetFeatureProfilesPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L35)]|DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +POST /v1/feature-profile/sdwan/transport|>=20.9|[**ConfigurationFeatureProfile.create_sdwan_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L58)|[**FeatureProfileCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +DELETE /v1/feature-profile/sdwan/transport/{transport_id}|>=20.9|[**ConfigurationFeatureProfile.delete_sdwan_transport_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L65)||None| +GET /v1/feature-profile/sdwan/system|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_system_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L70)|Optional[[**GetFeatureProfilesPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L35)]|DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +POST /v1/feature-profile/sdwan/system|>=20.9|[**ConfigurationFeatureProfile.create_sdwan_system_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L77)|[**FeatureProfileCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +DELETE /v1/feature-profile/sdwan/system/{system_id}|>=20.9|[**ConfigurationFeatureProfile.delete_sdwan_system_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L84)||None| +POST /v1/feature-profile/sdwan/system/{system_id}/aaa|>=20.9|[**ConfigurationFeatureProfile.create_aaa_profile_parcel_for_system**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L89)|[**_ParcelBase**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L31)| +POST /v1/feature-profile/sdwan/transport/{transport_id}/cellular-controller|>=20.9|[**ConfigurationFeatureProfile.create_cellular_controller_profile_parcel_for_transport**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L94)|[**_ParcelBase**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/api/configuration_groups/parcel.py#L11)|[**ParcelId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L31)| +GET /v1/feature-profile/sdwan|>=20.9|[**ConfigurationFeatureProfile.get_sdwan_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L101)||DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +POST /v1/feature-profile/sd-routing/cli|>=20.13|[**SDRoutingConfigurationFeatureProfile.create_cli_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L108)|[**FeatureProfileCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L111)|[**FeatureProfileCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L122)| +POST /v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config|>=20.13|[**SDRoutingConfigurationFeatureProfile.create_cli_full_config_parcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L113)|[**FullConfigParcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/feature_profile_parcel.py#L12)|[**ParcelId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L31)| +DELETE /v1/feature-profile/sd-routing/cli/{cli_fp_id}|>=20.13|[**SDRoutingConfigurationFeatureProfile.delete_cli_feature_profile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L118)||None| +DELETE /v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config/{parcel_id}|>=20.13|[**SDRoutingConfigurationFeatureProfile.delete_cli_full_config_parcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L123)||None| +PUT /v1/feature-profile/sd-routing/cli/{cli_fp_id}/full-config/{parcel_id}|>=20.13|[**SDRoutingConfigurationFeatureProfile.edit_cli_full_config_parcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L128)|[**FullConfigParcel**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/feature_profile_parcel.py#L12)|None| +GET /v1/feature-profile/sd-routing/cli|>=20.13|[**SDRoutingConfigurationFeatureProfile.get_cli_feature_profiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L133)|Optional[[**GetFeatureProfilesPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_feature_profile.py#L35)]|DataSequence[[**FeatureProfileInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/configuration/feature_profile/common.py#L79)]| +PUT /v1/config-group/{config_group_id}/device/associate|>=20.9|[**ConfigurationGroup.associate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L127)|[**ConfigGroupAssociatePayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L62)|None| +POST /v1/config-group|>=20.9|[**ConfigurationGroup.create_config_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L132)|[**ConfigGroupCreationPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L20)|[**ConfigGroupCreationResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L113)| +POST /v1/config-group/{config_group_id}/device/variables|>=20.9|[**ConfigurationGroup.create_variables**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L137)|[**ConfigGroupVariablesCreatePayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L66)|[**ConfigGroupVariablesCreateResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L90)| +DELETE /v1/config-group/{config_group_id}|>=20.9|[**ConfigurationGroup.delete_config_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L144)||None| +POST /v1/config-group/{config_group_id}/device/deploy|>=20.9|[**ConfigurationGroup.deploy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L149)|[**ConfigGroupDeployPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L101)|[**ConfigGroupDeployResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L105)| +DELETE /v1/config-group/{config_group_id}/device/associate|>=20.9|[**ConfigurationGroup.disassociate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L154)|[**ConfigGroupAssociatePayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L62)|[**ConfigGroupDisassociateResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L109)| +PUT /v1/config-group/{config_group_id}|>=20.9|[**ConfigurationGroup.edit_config_group**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L161)|[**ConfigGroupEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L51)|[**ConfigGroupEditResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L121)| +GET /v1/config-group|>=20.9|[**ConfigurationGroup.get**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L166)||DataSequence[[**ConfigGroup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L40)]| +PUT /v1/config-group/{config_group_id}/device/variables|>=20.9|[**ConfigurationGroup.update_variables**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L171)|[**ConfigGroupVariablesEditPayload**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_group.py#L96)|None| +GET /settings/configuration/{setting_type}||[**ConfigurationSettings.get_configuration_by_setting_type**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L355)||None| +GET /settings/configuration/organization||[**ConfigurationSettings.get_organizations**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L359)||DataSequence[[**Organization**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L20)]| +GET /settings/configuration/device||[**ConfigurationSettings.get_devices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L363)||DataSequence[[**Device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L29)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/emailNotificationSettings||[**ConfigurationSettings.get_email_notification_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L368)||DataSequence[[**EmailNotificationSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L35)]| +GET /settings/configuration/hardwarerootca||[**ConfigurationSettings.get_hardware_root_cas**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L372)||DataSequence[[**HardwareRootCA**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L39)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/certificate||[**ConfigurationSettings.get_certificates**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L377)||DataSequence[[**Certificate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L49)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/vedgecloud||[**ConfigurationSettings.get_vedge_cloud**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L382)||DataSequence[[**VEdgeCloud**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L59)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/crlSetting||[**ConfigurationSettings.get_clr_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L387)||DataSequence[[**CRLSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L316)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/banner||[**ConfigurationSettings.get_banner**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L392)||DataSequence[[**Banner**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L63)]| +GET /settings/configuration/proxyHttpServer||[**ConfigurationSettings.get_proxy_http_servers**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L396)||DataSequence[[**ProxyHTTPServer**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L69)]| +GET /settings/configuration/reverseproxy||[**ConfigurationSettings.get_reverse_proxies**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L400)||DataSequence[[**ReverseProxy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L76)]| +GET /settings/configuration/cloudx||[**ConfigurationSettings.get_cloudx**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L404)||DataSequence[[**CloudX**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L80)]| +GET /settings/configuration/manageEncryptedPassword||[**ConfigurationSettings.get_manage_encrypted_password**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L408)||DataSequence[[**ManageEncryptedPassword**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L84)]| +GET /settings/configuration/cloudservices||[**ConfigurationSettings.get_cloudservices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L412)||DataSequence[[**CloudServices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L91)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/clientSessionTimeout||[**ConfigurationSettings.get_client_session_timeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L417)||DataSequence[[**ClientSessionTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L112)]| +GET /settings/configuration/sessionLifeTime||[**ConfigurationSettings.get_session_life_time**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L421)||DataSequence[[**SessionLifeTime**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L118)]| +GET /settings/configuration/serverSessionTimeout||[**ConfigurationSettings.get_server_session_timeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L425)||DataSequence[[**ServerSessionTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L129)]| +GET /settings/configuration/maxSessionsPerUser||[**ConfigurationSettings.get_max_sessions_per_user**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L429)||DataSequence[[**MaxSessionsPerUser**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L140)]| +GET /settings/configuration/passwordPolicy||[**ConfigurationSettings.get_password_policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L433)||DataSequence[[**PasswordPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L147)]| +GET /settings/configuration/vmanagedatastream||[**ConfigurationSettings.get_vmanage_data_stream**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L437)||DataSequence[[**VManageDataStream**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L162)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/dataCollectionOnNotification||[**ConfigurationSettings.get_data_collection_on_notification**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L442)||DataSequence[[**DataCollectionOnNotification**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L172)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/sdWanTelemetry||[**ConfigurationSettings.get_sdwan_telemetry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L447)||DataSequence[[**SDWANTelemetry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L176)]|PROVIDER, SINGLE_TENANT +GET /management/statsconfig||[**ConfigurationSettings.get_stats_config**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L452)||DataSequence[[**StatsOperation**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L180)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/spMetadata||[**ConfigurationSettings.get_sp_metadata**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L457)||str| +GET /management/elasticsearch/index/size||[**ConfigurationSettings.get_elasticsearch_db_size**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L461)||DataSequence[[**ElasticSearchDBSize**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L210)]| +GET /settings/configuration/googleMapKey||[**ConfigurationSettings.get_google_map_key**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L465)||DataSequence[[**GoogleMapKey**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L216)]| +GET /settings/configuration/maintenanceWindow||[**ConfigurationSettings.get_maintenance_window**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L469)||DataSequence[[**MaintenanceWindow**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L198)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/softwareMaintenance||[**ConfigurationSettings.get_software_install_timeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L474)||DataSequence[[**SoftwareInstallTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L220)]| +GET /settings/configuration/credentials||[**ConfigurationSettings.get_ips_signature_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L478)||DataSequence[[**IPSSignatureSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L248)]| +GET /settings/configuration/smartaccountcredentials||[**ConfigurationSettings.get_smart_account_credentials**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L482)||DataSequence[[**SmartAccountCredentials**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L262)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/pnpConnectSync||[**ConfigurationSettings.get_pnp_connect_sync**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L487)||DataSequence[[**PnPConnectSync**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L267)]|PROVIDER, SINGLE_TENANT +GET /settings/configuration/claimDevice||[**ConfigurationSettings.get_claim_device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L492)||DataSequence[[**ClaimDevice**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L271)]| +GET /settings/configuration/walkme||[**ConfigurationSettings.get_walkme**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L496)||DataSequence[[**WalkMe**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L275)]| +GET /settings/configuration/smartLicensing||[**ConfigurationSettings.get_smart_licensing_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L500)||DataSequence[[**SmartLicensingSetting**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L281)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/{setting_type}||[**ConfigurationSettings.edit_configuration_by_setting_type**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L513)|None|None| +PUT /settings/configuration/organization||[**ConfigurationSettings.edit_organizations**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L517)|[**Organization**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L20)|DataSequence[[**Organization**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L20)]| +PUT /settings/configuration/device||[**ConfigurationSettings.edit_devices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L521)|[**Device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L29)|DataSequence[[**Device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L29)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/emailNotificationSettings||[**ConfigurationSettings.edit_email_notification_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L526)|[**EmailNotificationSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L35)|DataSequence[[**EmailNotificationSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L35)]| +PUT /settings/configuration/hardwarerootca||[**ConfigurationSettings.edit_hardware_root_cas**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L532)|[**HardwareRootCA**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L39)|DataSequence[[**HardwareRootCA**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L39)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/certificate||[**ConfigurationSettings.edit_certificates**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L537)|[**Certificate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L49)|DataSequence[[**Certificate**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L49)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/vedgecloud||[**ConfigurationSettings.edit_vedge_cloud**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L542)|[**VEdgeCloud**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L59)|DataSequence[[**VEdgeCloud**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L59)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/banner||[**ConfigurationSettings.edit_banner**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L547)|[**Banner**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L63)|DataSequence[[**Banner**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L63)]| +PUT /settings/configuration/proxyHttpServer||[**ConfigurationSettings.edit_proxy_http_servers**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L551)|[**ProxyHTTPServer**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L69)|DataSequence[[**ProxyHTTPServer**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L69)]| +PUT /settings/configuration/reverseproxy||[**ConfigurationSettings.edit_reverse_proxies**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L555)|[**ReverseProxy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L76)|DataSequence[[**ReverseProxy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L76)]| +PUT /settings/configuration/cloudx||[**ConfigurationSettings.edit_cloudx**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L559)|[**CloudX**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L80)|DataSequence[[**CloudX**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L80)]| +PUT /settings/configuration/manageEncryptedPassword||[**ConfigurationSettings.edit_manage_encrypted_password**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L563)|[**ManageEncryptedPassword**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L84)|DataSequence[[**ManageEncryptedPassword**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L84)]| +PUT /settings/configuration/cloudservices||[**ConfigurationSettings.edit_cloudservices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L567)|[**CloudServices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L91)|DataSequence[[**CloudServices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L91)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/clientSessionTimeout||[**ConfigurationSettings.edit_client_session_timeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L572)|[**ClientSessionTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L112)|DataSequence[[**ClientSessionTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L112)]| +PUT /settings/configuration/sessionLifeTime||[**ConfigurationSettings.edit_session_life_time**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L576)|[**SessionLifeTime**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L118)|DataSequence[[**SessionLifeTime**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L118)]| +PUT /settings/configuration/serverSessionTimeout||[**ConfigurationSettings.edit_server_session_timeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L580)|[**ServerSessionTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L129)|DataSequence[[**ServerSessionTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L129)]| +PUT /settings/configuration/maxSessionsPerUser||[**ConfigurationSettings.edit_max_sessions_per_user**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L584)|[**MaxSessionsPerUser**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L140)|DataSequence[[**MaxSessionsPerUser**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L140)]| +PUT /settings/configuration/passwordPolicy||[**ConfigurationSettings.edit_password_policy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L588)|[**PasswordPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L147)|DataSequence[[**PasswordPolicy**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L147)]| +PUT /settings/configuration/vmanagedatastream||[**ConfigurationSettings.edit_vmanage_data_stream**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L592)|[**VManageDataStream**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L162)|DataSequence[[**VManageDataStream**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L162)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/dataCollectionOnNotification||[**ConfigurationSettings.edit_data_collection_on_notification**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L597)|[**DataCollectionOnNotification**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L172)|DataSequence[[**DataCollectionOnNotification**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L172)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/sdWanTelemetry||[**ConfigurationSettings.edit_sdwan_telemetry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L604)|[**SDWANTelemetry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L176)|DataSequence[[**SDWANTelemetry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L176)]|PROVIDER, SINGLE_TENANT +POST /management/statsconfig||[**ConfigurationSettings.edit_stats_config**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L609)|[**StatsConfig**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L308)|DataSequence[[**StatsOperation**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L180)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/spMetadata||[**ConfigurationSettings.edit_sp_metadata**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L614)|str|str| +PUT /management/elasticsearch/index/size||[**ConfigurationSettings.edit_elasticsearch_db_size**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L618)|[**ElasticSearchDBSize**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L210)|DataSequence[[**ElasticSearchDBSize**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L210)]| +PUT /settings/configuration/googleMapKey||[**ConfigurationSettings.edit_google_map_key**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L622)|[**GoogleMapKey**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L216)|DataSequence[[**GoogleMapKey**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L216)]| +PUT /settings/configuration/maintenanceWindow||[**ConfigurationSettings.edit_maintenance_window**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L626)|[**MaintenanceWindow**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L198)|DataSequence[[**MaintenanceWindow**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L198)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/softwareMaintenance||[**ConfigurationSettings.edit_software_install_timeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L631)|[**SoftwareInstallTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L220)|DataSequence[[**SoftwareInstallTimeout**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L220)]| +PUT /settings/configuration/credentials||[**ConfigurationSettings.edit_ips_signature_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L635)|[**IPSSignatureSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L248)|DataSequence[[**IPSSignatureSettings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L248)]| +PUT /settings/configuration/smartaccountcredentials||[**ConfigurationSettings.edit_smart_account_credentials**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L639)|[**SmartAccountCredentials**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L262)|DataSequence[[**SmartAccountCredentials**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L262)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/pnpConnectSync||[**ConfigurationSettings.edit_pnp_connect_sync**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L644)|[**PnPConnectSync**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L267)|DataSequence[[**PnPConnectSync**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L267)]|PROVIDER, SINGLE_TENANT +PUT /settings/configuration/claimDevice||[**ConfigurationSettings.edit_claim_device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L649)|[**ClaimDevice**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L271)|DataSequence[[**ClaimDevice**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L271)]| +PUT /settings/configuration/walkme||[**ConfigurationSettings.edit_walkme**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L653)|[**WalkMe**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L275)|DataSequence[[**WalkMe**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L275)]| +PUT /settings/configuration/smartLicensing||[**ConfigurationSettings.edit_smart_licensing_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L657)|[**SmartLicensingSetting**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L281)|DataSequence[[**SmartLicensingSetting**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/configuration_settings.py#L281)]|PROVIDER, SINGLE_TENANT +GET /app/json/application_protocol.json||[**MiscellaneousEndpoints.get_application_protocols**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/misc.py#L14)||DataSequence[[**ApplicationProtocolMap**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/misc/application_protocols.py#L28)]| +GET /device/tier||[**MonitoringDeviceDetails.get_tiers**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/device_details.py#L191)||DataSequence[[**Tier**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/device_details.py#L17)]| +GET /device||[**MonitoringDeviceDetails.list_all_devices**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/device_details.py#L215)||DataSequence[[**DeviceData**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/device_details.py#L52)]| +GET /security/policy/devicelist||[**MonitoringSecurityPolicy.get_device_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/security_policy.py#L10)||[**SecurityPolicyDeviceList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/monitoring/security_policy.py#L8)| +GET /server/info||[**ServerInfo.get_server_info**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/server_info.py#L10)||[**ServerInfoResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/monitoring/server_info.py#L6)| +GET /statistics/settings/disable/devicelist/{indexName}||[**MonitoringStatus.get_disabled_device_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L58)||[**DisabledDeviceListResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L45)| +PUT /statistics/settings/disable/devicelist/{indexName}||[**MonitoringStatus.update_statistics_device_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L62)|[**DisabledDeviceList**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L41)|[**UpdateIndexResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L49)| +GET /statistics/settings/status||[**MonitoringStatus.get_statistics_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L66)||DataSequence[[**Status**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L23)]| +PUT /statistics/settings/status||[**MonitoringStatus.update_statistics_settings**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L70)|list[[**UpdateStatus**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L29)]|DataSequence[[**Status**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L23)]| +GET /statistics/settings/status/device||[**MonitoringStatus.get_enabled_index_for_device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L74)||[**EnabledIndexDeviceListResponse**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/monitoring/status.py#L53)| +GET /device/reboothistory||[**RealTimeMonitoringRebootHistory.create_reboot_history_list**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/real_time_monitoring/reboot_history.py#L25)||DataSequence[[**RebootEntry**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/real_time_monitoring/reboot_history.py#L13)]| +GET /sdavc/cloudconnector||[**SDAVCCloudConnector.get_cloud_connector**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/sdavc_cloud_connector.py#L37)||[**CloudConnector**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/sdavc_cloud_connector.py#L12)| +GET /tenantbackup/list||[**TenantBackupRestore.list_tenant_backup**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_backup_restore.py#L37)||[**BackupFiles**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_backup_restore.py#L12)|PROVIDER_AS_TENANT, TENANT +POST /tenant||[**TenantManagement.create_tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L138)|[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)|[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)|PROVIDER +POST /tenant/async||[**TenantManagement.create_tenant_async**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L143)|[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)|[**TenantTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L24)|PROVIDER +POST /tenant/bulk/async|>=20.4|[**TenantManagement.create_tenant_async_bulk**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L148)|list[[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)]|[**TenantTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L24)|PROVIDER +DELETE /tenant/{tenant_id}/delete||[**TenantManagement.delete_tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L154)|[**TenantDeleteRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L14)|None|PROVIDER +DELETE /tenant/bulk/async|>=20.4|[**TenantManagement.delete_tenant_async_bulk**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L159)|[**TenantBulkDeleteRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L18)|[**TenantTaskId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L24)|PROVIDER +GET /tenantstatus||[**TenantManagement.get_all_tenant_statuses**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L169)||DataSequence[[**TenantStatus**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L59)]|PROVIDER, PROVIDER_AS_TENANT +GET /tenant||[**TenantManagement.get_all_tenants**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L174)||DataSequence[[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)]|PROVIDER, PROVIDER_AS_TENANT +GET /tenant/{tenant_id}||[**TenantManagement.get_tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L179)||[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)|PROVIDER, PROVIDER_AS_TENANT +GET /tenant/vsmart/capacity||[**TenantManagement.get_tenant_hosting_capacity_on_vsmarts**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L184)||DataSequence[[**vSmartTenantCapacity**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L119)]|PROVIDER +GET /tenant/vsmart||[**TenantManagement.get_tenant_vsmart_mapping**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L189)||[**vSmartTenantMap**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L128)|PROVIDER, PROVIDER_AS_TENANT +PUT /tenant/{tenant_id}||[**TenantManagement.update_tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L202)|[**TenantUpdateRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L69)|[**Tenant**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L31)|PROVIDER +PUT /tenant/{tenant_id}/vsmart||[**TenantManagement.update_tenant_vsmart_placement**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L207)|[**vSmartPlacementUpdateRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L113)|None|PROVIDER +POST /tenant/{tenant_id}/vsessionid||[**TenantManagement.vsession_id**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L212)||[**vSessionId**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_management.py#L132)|PROVIDER +GET /tenantmigration/download/{path}|>=20.6|[**TenantMigration.download_tenant_data**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L62)||bytes|PROVIDER, SINGLE_TENANT +POST /tenantmigration/export|>=20.6|[**TenantMigration.export_tenant_data**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L68)|[**TenantExport**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/tenant.py#L84)|[**ExportInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L28)|PROVIDER, SINGLE_TENANT +GET /tenantmigration/migrationToken|>=20.6|[**TenantMigration.get_migration_token**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L74)||str|PROVIDER, SINGLE_TENANT +POST /tenantmigration/import|<20.13,>=20.6|[**TenantMigration.import_tenant_data**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L80)|[**MigrationFile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L52)|[**ImportInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L33)|PROVIDER, SINGLE_TENANT +POST /tenantmigration/import/{migration_key}|>=20.13|[**TenantMigration.import_tenant_data_with_key**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L86)|[**MigrationFile**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L52)|[**ImportInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L33)|PROVIDER, SINGLE_TENANT +POST /tenantmigration/networkMigration|>=20.6|[**TenantMigration.migrate_network**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L92)|str|[**MigrationInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/tenant_migration.py#L47)|PROVIDER, SINGLE_TENANT +POST /device/tools/nping/{device_ip}||[**TroubleshootingToolsDeviceConnectivity.nping_device**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py#L94)|[**NPingRequest**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py#L18)|[**NPingResult**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/troubleshooting_tools/device_connectivity.py#L37)| +GET /url/monitor||[**UrlMonitoring.get_url_monitor**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/url_monitoring.py#L12)||DataSequence[[**UrlMonitoringInfo**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/url_monitoring.py#L8)]| +POST /url/monitor||[**UrlMonitoring.add_url_monitor**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/url_monitoring.py#L16)|[**UrlMonitoringConfig**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/url_monitoring.py#L16)|None| +PUT /url/monitor||[**UrlMonitoring.update_url_monitor**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/url_monitoring.py#L20)|[**UrlMonitoringConfig**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/models/url_monitoring.py#L16)|None| +DELETE /url/monitor||[**UrlMonitoring.delete_url_monitor**](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/catalystwan/endpoints/url_monitoring.py#L24)||None| diff --git a/README.md b/README.md index 3c93450f..b8d5d1d6 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,19 @@ [![Python-Supported](https://img.shields.io/static/v1?label=Python&logo=Python&color=3776AB&message=3.8%20|%203.9%20|%203.10%20|%203.11%20|%203.12)](https://www.python.org/) -Cisco Catalyst WAN SDK is a package for creating simple and parallel automatic requests via official Manager API. It is intended to serve as a multiple session handler (provider, provider as a tenant, tenant). The library is not dependent on environment which is being run in, you just need a connection to any Manager. +Cisco Catalyst WAN SDK is a package for creating simple and parallel automatic requests via official SD-WAN Manager API. It is intended to serve as a multiple session handler (provider, provider as a tenant, tenant). The library is not dependent on environment which is being run in, you just need a connection to any SD-WAN Manager. + +## Important Notice: Early Beta Release + +Welcome to the Cisco Catalyst WAN SDK! + +We are thrilled to announce that Cisco Catalyst WAN SDK is now available in early beta. This is an exciting step forward in enabling developers to harness the full potential of Cisco's networking solutions. Please be aware that, as an early beta release, this version of the SDK is still undergoing development and testing. As such, it is provided "as is" and support to address any issues are limited and best effort. + +## Not recommend to use in production environments. +We encourage developers to explore and test the SDK's capabilities, but please exercise caution when using it in production environments. We are dedicated to improving the Cisco Catalyst WAN SDK and we value your input. Your feedback is crucial to us-it will guide us in refining and enhancing the SDK to better meet your needs. +To report any issues, share your insights, or suggest improvements, please visit our Issues page on GitHub or reach out to us through the provided communication channels. + +Thank you for being a part of our development journey! ## Installation ```console @@ -170,6 +182,7 @@ alarms_from_n_hours = session.api.alarms.get(from_time=n) To get all critical alarms from past `n` hours: ```python +from catalystwan.utils.alarm_status import Severity n = 48 critical_alarms = session.api.alarms.get(from_time=n).filter(severity=Severity.CRITICAL) ``` @@ -184,6 +197,7 @@ critical_alarms = session.api.alarms.get(from_time=n).filter(severity=Severity.C session.api.users.get() # Create user +from catalystwan.endpoints.administration_user_and_group import User new_user = User(username="new_user", password="new_user", group=["netadmin"], description="new user") session.api.users.create(new_user) @@ -288,13 +302,13 @@ api = session.api.tenant_management tenants = [ Tenant( name="tenant1", - orgName="CiscoDevNet", - subDomain="alpha.bravo.net", + org_name="CiscoDevNet", + subdomain="alpha.bravo.net", desc="This is tenant for unit tests", - edgeConnectorEnable=True, - edgeConnectorSystemIp="172.16.255.81", - edgeConnectorTunnelInterfaceName="GigabitEthernet1", - wanEdgeForecast=1, + edge_connector_enable=True, + edge_connector_system_ip="172.16.255.81", + edge_connector_tunnel_interface_name="GigabitEthernet1", + wan_edge_forecast=1, ) ] create_task = api.create(tenants) @@ -397,11 +411,11 @@ except ManagerHTTPError as error: ``` -## [Supported API endpoints](https://github.com/CiscoDevNet/catalystwan/blob/main/ENDPOINTS.md) +## [Supported API endpoints](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/ENDPOINTS.md) -## [Contributing, bug reporting and feature requests](https://github.com/CiscoDevNet/catalystwan/blob/main/CONTRIBUTING.md) +## [Contributing, bug reporting and feature requests](https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/CONTRIBUTING.md) ## Seeking support -You can contact us by submitting [issues](https://github.com/CiscoDevNet/catalystwan/issues), or directly via mail on vmngclient@cisco.com. +You can contact us by submitting [issues](https://github.com/cisco-open/cisco-catalyst-wan-sdk/issues), or directly via mail on catalystwan@cisco.com. diff --git a/catalystwan/abstractions.py b/catalystwan/abstractions.py index fb173536..027d0297 100644 --- a/catalystwan/abstractions.py +++ b/catalystwan/abstractions.py @@ -24,10 +24,10 @@ def text(self) -> str: def content(self) -> bytes: ... - def dataobj(self, cls: Type[T], sourcekey: Optional[str]) -> T: + def dataobj(self, cls: Type[T], sourcekey: Optional[str], validate: bool) -> T: ... - def dataseq(self, cls: Type[T], sourcekey: Optional[str]) -> DataSequence[T]: + def dataseq(self, cls: Type[T], sourcekey: Optional[str], validate: bool) -> DataSequence[T]: ... def json(self) -> dict: @@ -52,3 +52,7 @@ def api_version(self) -> Optional[Version]: @property def session_type(self) -> Optional[SessionType]: ... + + @property + def validate_responses(self) -> bool: + ... diff --git a/catalystwan/api/admin_tech_api.py b/catalystwan/api/admin_tech_api.py index 06e95c9f..9e0eb8a7 100644 --- a/catalystwan/api/admin_tech_api.py +++ b/catalystwan/api/admin_tech_api.py @@ -10,11 +10,9 @@ from pathlib import Path from typing import TYPE_CHECKING, List, Optional -from requests import Response -from requests.exceptions import HTTPError - from catalystwan.dataclasses import AdminTech, DeviceAdminTech -from catalystwan.exceptions import CatalystwanException +from catalystwan.exceptions import CatalystwanException, ManagerHTTPError +from catalystwan.response import ManagerResponse from catalystwan.utils.creation_tools import create_dataclass if TYPE_CHECKING: @@ -117,7 +115,7 @@ def generate( json=body, timeout=request_timeout, ) - except HTTPError as http_error: + except ManagerHTTPError as http_error: response = http_error.response # type: ignore if response.status_code == 200: return response.json()["fileName"] @@ -131,16 +129,20 @@ def generate( polling_timer -= polling_interval raise GenerateAdminTechLogError(f"It is not possible to generate admintech log for {device_id}") - def _get_token_id(self, filename: str) -> str: - admin_techs = self.get_all() - for admin_tech in admin_techs: - if filename == admin_tech.filename: - return admin_tech.token_id + def _get_token_id(self, filename: str, timeout: int, interval: int) -> str: + # Wait for the file to be ready and obtain the token_id + end_time = time.time() + timeout + while time.time() < end_time: + admin_techs = self.get_all() + for admin_tech in admin_techs: + if filename == admin_tech.filename and admin_tech.state == "done": + return admin_tech.token_id + time.sleep(interval) raise RequestTokenIdNotFound( f"requestTokenId of admin tech generation request not found for file name: {filename}" ) - def delete(self, filename: str) -> Response: + def delete(self, filename: str, timeout: int = 3600, interval: int = 30) -> ManagerResponse: """Deletes admin tech logs for a device. Args: filename: name of admin_tech file @@ -148,7 +150,7 @@ def delete(self, filename: str) -> Response: response: http response for delete operation """ - token_id = self._get_token_id(filename) + token_id = self._get_token_id(filename, timeout, interval) response = self.session.delete(f"/dataservice/device/tools/admintech/{token_id}") if response.status_code == 200: logger.info(f"Deleted AdminTech file {filename} on remote") diff --git a/catalystwan/api/api_container.py b/catalystwan/api/api_container.py index 290a0b26..6c7c7439 100644 --- a/catalystwan/api/api_container.py +++ b/catalystwan/api/api_container.py @@ -32,6 +32,7 @@ from catalystwan.api.tenant_management_api import TenantManagementAPI from catalystwan.api.tenant_migration_api import TenantMigrationAPI from catalystwan.api.versions_utils import RepositoryAPI +from catalystwan.api.virtual_image_action_api import LxcActionAPI if TYPE_CHECKING: from catalystwan.session import ManagerSession @@ -58,6 +59,7 @@ def __init__(self, session: ManagerSession): self.repository = RepositoryAPI(session) self.resource_pool = ResourcePoolAPI(session) self.software = SoftwareActionAPI(session) + self.lxcsoftware = LxcActionAPI(session) self.partition = PartitionManagerAPI(session) self.users = UsersAPI(session) self.cluster_management = ClusterManagementAPI(session) diff --git a/catalystwan/api/monitoring_status_api.py b/catalystwan/api/monitoring_status_api.py index ebc5d111..295ceb68 100644 --- a/catalystwan/api/monitoring_status_api.py +++ b/catalystwan/api/monitoring_status_api.py @@ -5,7 +5,7 @@ import logging from typing import TYPE_CHECKING, List -from catalystwan.endpoints.monitoring_status import MonitoringStatus, Status, UpdateStatus +from catalystwan.endpoints.monitoring.status import MonitoringStatus, Status, UpdateStatus from catalystwan.typed_list import DataSequence logger = logging.getLogger(__name__) diff --git a/catalystwan/api/templates/feature_template_field.py b/catalystwan/api/templates/feature_template_field.py index bfca4301..b35d8538 100644 --- a/catalystwan/api/templates/feature_template_field.py +++ b/catalystwan/api/templates/feature_template_field.py @@ -115,61 +115,59 @@ def nest_value_in_output(value: Any) -> dict: ) return nest_value_in_output(vip_variable.model_dump(by_alias=True, exclude_none=True)) + if value is not None and not self.children: + output["vipType"] = vip_type or FeatureTemplateOptionType.CONSTANT.value + output["vipValue"] = json_dumped_value + elif value is not None and self.children: + output["vipType"] = vip_type or FeatureTemplateOptionType.CONSTANT.value + children_output = [] + for obj in value: + obj_json_dump = obj.model_dump(mode="json") + child_payload: dict = {} + for child in self.children: # Child in schema + obj: FeatureTemplate # type: ignore + + # We are searching for the model field that + # corresponds to the child element (field from vManage schema) + # If this line fails, it means that the schema from vManage has more fields than the model + # and the model needs to be updated (add missing fields) + model_tuple = next( + filter( + lambda f: ( + f[1].alias == child.key + or get_extra_field(f[1], "vmanage_key") == child.key + or f[0] == child.key + ), + obj.model_fields.items(), + ) + ) + # We get the pydantic model field and the value from the object + model_field = model_tuple[1] + obj_value = getattr(obj, model_tuple[0]) + obj_json_value = obj_json_dump.get(model_tuple[0]) + po = get_extra_field(model_field, "priority_order") + vip_type = get_extra_field(model_field, "vip_type") + # After we get the data, we create the payload by populating the schema + # Then we merge the payload to the output + merge( + child_payload, + child.payload_scheme( + obj_value, + json_dumped_value=obj_json_value, + priority_order=po, + vip_type=vip_type, + ), + ) + if priority_order: + child_payload.update({"priority-order": priority_order}) + children_output.append(child_payload) + output["vipValue"] = children_output else: - if value is not None: - output["vipType"] = vip_type or FeatureTemplateOptionType.CONSTANT.value - if self.children: - children_output = [] - for obj in value: # obj is User, atomic value. Loop every child - obj_json_dump = obj.model_dump(mode="json") - child_payload: dict = {} - for child in self.children: # Child in schema - obj: FeatureTemplate # type: ignore - model_tuple = next( - filter( - lambda f: get_extra_field(f[1], "data_path", []) == child.dataPath - and ( - f[1].alias == child.key - or get_extra_field(f[1], "vmanage_key") == child.key - or f[0] == child.key - ), - obj.model_fields.items(), - ) - ) - model_field = model_tuple[1] - obj_value = getattr(obj, model_tuple[0]) - obj_json_value = obj_json_dump.get(model_tuple[0]) - po = get_extra_field(model_field, "priority_order") - vip_type = get_extra_field(model_field, "vip_type") - merge( - child_payload, - child.payload_scheme( - obj_value, - json_dumped_value=obj_json_value, - priority_order=po, - vip_type=vip_type, - ), - ) - if priority_order: - child_payload.update({"priority-order": priority_order}) - children_output.append(child_payload) - output["vipValue"] = children_output - else: - output["vipValue"] = json_dumped_value + if value is None or "default" in self.dataType: + return {} else: - if value is None: - return {} - if "default" in self.dataType: - return {} - # output["vipValue"] = self.dataType["default"] if value is None else value - # output["vipType"] = self.defaultOption.value - else: - output["vipValue"] = [] - output["vipType"] = FeatureTemplateOptionType.IGNORE.value - - # TODO - # DataType to dataclass Model - # No default values for everything + output["vipValue"] = [] + output["vipType"] = FeatureTemplateOptionType.IGNORE.value if self.primaryKeys: output["vipPrimaryKey"] = self.primaryKeys diff --git a/catalystwan/api/templates/models/cisco_vpn_model.py b/catalystwan/api/templates/models/cisco_vpn_model.py index a07741d5..35fbdc7e 100644 --- a/catalystwan/api/templates/models/cisco_vpn_model.py +++ b/catalystwan/api/templates/models/cisco_vpn_model.py @@ -77,6 +77,14 @@ class NextHopWithTrack(FeatureTemplateValidator): tracker: str +class RouteInterface(FeatureTemplateValidator): + interface_name: str = Field(json_schema_extra={"vmanage_key": "interface-name"}) + interface_next_hop: Optional[List[NextHop]] = Field( + default=None, json_schema_extra={"vmanage_key": "interface-next-hop", "priority_order": ["address", "distance"]} + ) + model_config = ConfigDict(populate_by_name=True) + + class Routev4(FeatureTemplateValidator): prefix: Optional[str] = None next_hop: Optional[List[NextHop]] = Field( @@ -85,6 +93,9 @@ class Routev4(FeatureTemplateValidator): next_hop_with_track: Optional[List[NextHopWithTrack]] = Field( default=None, json_schema_extra={"vmanage_key": "next-hop-with-track"} ) + route_interface: Optional[RouteInterface] = Field( + default=None, json_schema_extra={"vmanage_key": "route-interface"} + ) null0: Optional[bool] = None distance: Optional[int] = None vpn: Optional[int] = None diff --git a/catalystwan/api/templates/payloads/tenant/tenant_model.py b/catalystwan/api/templates/payloads/tenant/tenant_model.py index 690031d3..37176009 100644 --- a/catalystwan/api/templates/payloads/tenant/tenant_model.py +++ b/catalystwan/api/templates/payloads/tenant/tenant_model.py @@ -8,7 +8,7 @@ from pydantic import BaseModel, ConfigDict from catalystwan.api.templates.feature_template import FeatureTemplate -from catalystwan.endpoints.monitoring_device_details import Tier as TierInfo +from catalystwan.endpoints.monitoring.device_details import Tier as TierInfo from catalystwan.models.tenant import Tenant as TenantInfo if TYPE_CHECKING: @@ -20,8 +20,8 @@ class Tenant(BaseModel): organization_name: str tier_name: str - tenant_info: Optional[TenantInfo] - tier_info: Optional[TierInfo] + tenant_info: Optional[TenantInfo] = None + tier_info: Optional[TierInfo] = None class TenantModel(FeatureTemplate): diff --git a/catalystwan/api/tenant_management_api.py b/catalystwan/api/tenant_management_api.py index ee44ee0c..97bd6123 100644 --- a/catalystwan/api/tenant_management_api.py +++ b/catalystwan/api/tenant_management_api.py @@ -74,7 +74,7 @@ def delete(self, tenant_id_list: List[str], password: Optional[str] = None) -> T """ if password is None: password = self.session.password - delete_request = TenantBulkDeleteRequest(tenantIdList=tenant_id_list, password=password) + delete_request = TenantBulkDeleteRequest(tenant_id_list=tenant_id_list, password=password) task_id = self._endpoints.delete_tenant_async_bulk(delete_request).id return Task(self.session, task_id) @@ -105,7 +105,7 @@ def update_vsmart_placement(self, tenant_id: str, src_vsmart_uuid: str, dst_vsma self._endpoints.update_tenant_vsmart_placement( tenant_id=tenant_id, vsmart_placement_update_request=vSmartPlacementUpdateRequest( - srcvSmartUuid=src_vsmart_uuid, destvSmartUuid=dst_vsmart_uuid + src_vsmart_uuid=src_vsmart_uuid, dest_vsmart_uuid=dst_vsmart_uuid ), ) diff --git a/catalystwan/api/tenant_migration_api.py b/catalystwan/api/tenant_migration_api.py index 76d9e207..4b1e421b 100644 --- a/catalystwan/api/tenant_migration_api.py +++ b/catalystwan/api/tenant_migration_api.py @@ -101,7 +101,7 @@ def store_token(self, migration_id: str, download_path: Path): migration_id (str): migration identifier (it is obtained after import tenant task is finished) download_path (Path): full download path containing a filename eg.: Path("/home/user/import-token.txt") """ - params = MigrationTokenQueryParams(migrationId=migration_id) + params = MigrationTokenQueryParams(migration_id=migration_id) token = self.session.endpoints.tenant_migration.get_migration_token(params) with open(download_path, "w") as file: file.write(token) diff --git a/catalystwan/api/versions_utils.py b/catalystwan/api/versions_utils.py index 0c5377a3..eeb57099 100644 --- a/catalystwan/api/versions_utils.py +++ b/catalystwan/api/versions_utils.py @@ -9,7 +9,12 @@ from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints.configuration.software_actions import SoftwareImageDetails -from catalystwan.endpoints.configuration_device_actions import PartitionDevice +from catalystwan.endpoints.configuration_device_actions import ( + InstallLxcImage, + LxcActivateDevice, + LxcUpgradeDevice, + PartitionDevice, +) from catalystwan.endpoints.configuration_device_inventory import DeviceDetailsResponse from catalystwan.exceptions import ImageNotInRepositoryError from catalystwan.typed_list import DataSequence @@ -67,6 +72,18 @@ def get_all_software_images(self) -> DataSequence[SoftwareImageDetails]: software_images = self.session.endpoints.configuration_software_actions.get_list_of_all_images() return software_images + def get_all_virtual_images(self) -> DataSequence[SoftwareImageDetails]: + """ + Get all info about all software images stored in Vmanage repository + + Returns: + list: software images list + """ + software_images = self.session.endpoints.configuration_software_actions.get_list_of_all_images( + "imageType=virtualmachine" + ) + return software_images + def get_devices_versions_repository(self) -> Dict[str, DeviceSoftwareRepository]: """ Create DeviceSoftwareRepository dataclass, @@ -202,13 +219,61 @@ def __init__(self, session: ManagerSession): def _validate_devices_required_fields(self, devices: DataSequence[DeviceDetailsResponse]): for device in devices: - if not device.uuid or not device.device_ip: + if not device.uuid or not device.local_system_ip: raise ValueError( f"Provided device '{device.host_name}' doesn't include required fields for this operation:" f"device.uuid (current value: {device.uuid})" f"device.device_ip (current value: {device.device_ip})" ) + def get_lxcactivate_device_list( + self, + version_to_set_up: str, + devices: DataSequence[DeviceDetailsResponse], + ) -> DataSequence[LxcActivateDevice]: + self._validate_devices_required_fields(devices) + install_image_payload = [ + InstallLxcImage( + network_function_type="app-hosting", + version_name=version_to_set_up, + version_type_name="UTD-Snort-Feature", + ) + ] + devices_payload = DataSequence( + LxcActivateDevice, + [ + LxcActivateDevice( + device_id=str(device.uuid), + device_ip=str(device.local_system_ip), + install_images=install_image_payload, + ) + for device in devices + ], # type: ignore + ) + + return devices_payload + + def get_lxcupgrade_device_list( + self, + version_to_set_up: str, + devices: DataSequence[DeviceDetailsResponse], + ) -> DataSequence[LxcUpgradeDevice]: + self._validate_devices_required_fields(devices) + install_image_payload = [InstallLxcImage(version_name=version_to_set_up)] + devices_payload = DataSequence( + LxcUpgradeDevice, + [ + LxcUpgradeDevice( + device_id=str(device.uuid), + device_ip=str(device.local_system_ip), + install_images=install_image_payload, + ) + for device in devices + ], # type: ignore + ) + + return devices_payload + def _get_device_list_in( self, version_to_set_up: str, devices: DataSequence[DeviceDetailsResponse], version_type: str ) -> DataSequence[PartitionDevice]: @@ -227,8 +292,10 @@ def _get_device_list_in( self._validate_devices_required_fields(devices) devices_payload = DataSequence( PartitionDevice, - [PartitionDevice(device_id=device.uuid, device_ip=device.device_ip) for device in devices], # type: ignore + [PartitionDevice(device_id=str(device.uuid), device_ip=str(device.local_system_ip)) for device in devices], + # type: ignore ) + all_dev_versions = self.repository.get_devices_versions_repository() for device in devices_payload: device_versions = getattr(all_dev_versions[device.device_id], version_type) @@ -295,7 +362,10 @@ def _get_devices_chosen_version( devices_payload = DataSequence( PartitionDevice, - [PartitionDevice(device_id=device.uuid, device_ip=device.device_ip) for device in devices], # type: ignore + [ + PartitionDevice(device_id=device.uuid, device_ip=device.local_system_ip) # type: ignore + for device in devices + ], # type: ignore ) all_dev_versions = self.repository.get_devices_versions_repository() for device in devices_payload: diff --git a/catalystwan/api/virtual_image_action_api.py b/catalystwan/api/virtual_image_action_api.py new file mode 100644 index 00000000..3a6a52d8 --- /dev/null +++ b/catalystwan/api/virtual_image_action_api.py @@ -0,0 +1,200 @@ +# Copyright 2023 Cisco Systems, Inc. and its affiliates + +from __future__ import annotations + +import logging +from typing import TYPE_CHECKING, Optional, cast + +from catalystwan.api.task_status_api import Task +from catalystwan.api.versions_utils import DeviceVersions, RepositoryAPI +from catalystwan.endpoints.configuration_device_actions import ( + LxcImageActivatePayload, + LxcImageDeletePayload, + LxcImageUpgradePayload, + LxcInstallInput, +) +from catalystwan.endpoints.configuration_device_inventory import DeviceDetailsResponse +from catalystwan.exceptions import EmptyVersionPayloadError, ImageNotInRepositoryError # type: ignore +from catalystwan.typed_list import DataSequence +from catalystwan.utils.upgrades_helper import get_install_specification, validate_personality_homogeneity + +logger = logging.getLogger(__name__) + + +if TYPE_CHECKING: + from catalystwan.session import ManagerSession + + +class LxcActionAPI: + """ + API methods for virtual software actions. All methods + are executable on all device categories. + + Usage example: + # Create session + session = create_manager_session(...) + + # Prepare specific device for Lxc image actions + all_dev = session.api.devices.get() + dev = all_dev.filter(hostname="pm1044") + ver = "1.0.0_SV3.1.67.0_XE17.14" + + # Upgrade + del_id = session.api.lxcsoftware.lxcdelete(dev,ver) + up_id = session.api.lxcsoftware.lxcupgrade(dev,ver) + act_id = session.api.lxcsoftware.lxcactivate(dev,ver) + + # Check upgrade status + TaskAPI(session, software_action_id).wait_for_completed() + """ + + def __init__(self, session: ManagerSession) -> None: + self.session = session + self.repository = RepositoryAPI(self.session) + self.device_versions = DeviceVersions(self.session) + + def lxcactivate( + self, + devices: DataSequence[DeviceDetailsResponse], + version_to_activate: str, + ) -> Task: + """ + Requires that selected devices have already version_to_activate installed(upgraded) + + Args: + devices (List[DeviceDetailsResponse]): For those devices software will be activated + version_to_activate (Optional[str]): version to be set as current version + + Notice: Have to pass one of those arguments (version_to_activate, image) + + Raises: + EmptyVersionPayloadError: If selected version_to_activate or image not detected in available files + + Returns: + str: Activate software action id + """ + validate_personality_homogeneity(devices) + version = cast(str, version_to_activate) + + if not version: + raise ImageNotInRepositoryError( + "Based on provided arguments, virtual software version to activate on device(s) cannot be detected." + ) + + payload_devices = self.device_versions.get_lxcactivate_device_list(version, devices) + for device in payload_devices: + if not device.install_images[0].version_name: + raise EmptyVersionPayloadError("lxc activate payload contains entry with empty version field.") + + device_type = get_install_specification(devices.first()).device_type.value + install_input = LxcInstallInput(v_edge_vpn="0", version_type="vmanage") + partition_payload = LxcImageActivatePayload( + action="lxc_activate", + devices=[dev for dev in payload_devices], + device_type=device_type, + input=install_input, + ) + + partition_action = self.session.endpoints.configuration_device_actions.process_lxc_activate( + payload=partition_payload + ) + + return Task(self.session, partition_action.id) + + def lxcupgrade( + self, + devices: DataSequence[DeviceDetailsResponse], + version_to_upgrade: Optional[str] = "", + image: Optional[str] = "", + ) -> Task: + """ + Requires that selected devices have already version_to_upgrade + + Args: + devices (List[DeviceDetailsResponse]): For those devices software will be activated + version_to_upgrade (Optional[str]): version to be set as current version + image (Optional[str]): software image name in available files + + Notice: Have to pass one of those arguments (version_to_activate, image) + + Raises: + EmptyVersionPayloadError: If selected version_to_activate or image not detected in available files + + Returns: + str: Activate software action id + """ + validate_personality_homogeneity(devices) + if image and not version_to_upgrade: + version = cast(str, self.repository.get_image_version(image)) + elif version_to_upgrade and not image: + version = cast(str, version_to_upgrade) + else: + raise ValueError("You can not provide software_image and image version at the same time!") + + if not version: + raise ImageNotInRepositoryError( + "Based on provided arguments, virtual software version to activate on device(s) cannot be detected." + ) + + payload_devices = self.device_versions.get_lxcupgrade_device_list(version, devices) + for device in payload_devices: + if not device.install_images[0].version_name: + raise EmptyVersionPayloadError("lxc upgrade payload contains entry with empty version field.") + + device_type = get_install_specification(devices.first()).device_type.value + install_input = LxcInstallInput(v_edge_vpn="0", version_type="vmanage") + partition_payload = LxcImageUpgradePayload( + action="lxc_upgrade", devices=[dev for dev in payload_devices], device_type=device_type, input=install_input + ) + + partition_action = self.session.endpoints.configuration_device_actions.process_lxc_upgrade( + payload=partition_payload + ) + + return Task(self.session, partition_action.id) + + def lxcdelete( + self, + devices: DataSequence[DeviceDetailsResponse], + version_to_delete: str, + ) -> Task: + """ + Requires that selected devices have already version_to_delete + + Args: + devices (List[DeviceDetailsResponse]): For those devices lxc software will be deleted + version_to_delete (Optional[str]): version to delete + + Notice: Have to pass one of those arguments (version_to_delete) + + Raises: + EmptyVersionPayloadError: If selected version_to_activate or image not detected in available files + + Returns: + str: Delete software action id + """ + validate_personality_homogeneity(devices) + version = cast(str, version_to_delete) + + if not version: + raise ImageNotInRepositoryError( + "Based on provided arguments, virtual software version to delete on device(s) cannot be detected." + ) + + payload_devices = self.device_versions.get_lxcupgrade_device_list(version, devices) + for device in payload_devices: + if not device.install_images[0].version_name: + raise EmptyVersionPayloadError("lxc device payload contains entry with empty version field.") + + device_type = get_install_specification(devices.first()).device_type.value + partition_payload = LxcImageDeletePayload( + action="lxc_delete", + devices=[dev for dev in payload_devices], + device_type=device_type, + ) + + partition_action = self.session.endpoints.configuration_device_actions.process_lxc_delete( + payload=partition_payload + ) + + return Task(self.session, partition_action.id) diff --git a/catalystwan/dataclasses.py b/catalystwan/dataclasses.py index 22526c9d..8d021625 100644 --- a/catalystwan/dataclasses.py +++ b/catalystwan/dataclasses.py @@ -4,7 +4,7 @@ from typing import List, Optional from attr import define, field # type: ignore -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.exceptions import RetrieveIntervalOutOfRange from catalystwan.utils.alarm_status import Severity @@ -504,16 +504,17 @@ class SoftwareInstallTimeout(DataclassBase): class FeatureTemplatesTypes(BaseModel): + model_config = ConfigDict(populate_by_name=True) parent: str default: str - display_name: str = Field(alias="displayName") + display_name: str = Field(serialization_alias="displayName", validation_alias="displayName") name: str - type_class: str = Field(alias="typeClass") + type_class: str = Field(serialization_alias="typeClass", validation_alias="typeClass") description: str write_permission: bool read_permission: bool - helper_type: List[str] = Field(default=[], alias="helperType") - device_models: List[dict] = Field(default=[], alias="deviceModels") + helper_type: List[str] = Field(default=[], serialization_alias="helperType", validation_alias="helperType") + device_models: List[dict] = Field(default=[], serialization_alias="deviceModels", validation_alias="deviceModels") @define diff --git a/catalystwan/endpoints/__init__.py b/catalystwan/endpoints/__init__.py index 06e25fa9..05b85d20 100644 --- a/catalystwan/endpoints/__init__.py +++ b/catalystwan/endpoints/__init__.py @@ -60,8 +60,7 @@ from packaging.specifiers import SpecifierSet # type: ignore from packaging.version import Version # type: ignore -from pydantic import BaseModel as BaseModelV2 -from pydantic.v1 import BaseModel as BaseModelV1 +from pydantic import BaseModel from typing_extensions import Annotated, get_args, get_origin from catalystwan.abstractions import APIEndpointClient, APIEndpointClientResponse @@ -81,12 +80,10 @@ def prepared(self) -> PreparedPayload: JSON = Union[str, int, float, bool, None, Dict[str, "JSON"], List["JSON"]] -ModelPayloadType = Union[BaseModelV1, BaseModelV2, Sequence[BaseModelV1], Sequence[BaseModelV2]] +ModelPayloadType = Union[BaseModel, Sequence[BaseModel]] PayloadType = Union[None, JSON, str, bytes, dict, ModelPayloadType, CustomPayloadType] -ReturnType = Union[ - None, JSON, bytes, str, dict, BaseModelV1, BaseModelV2, DataSequence[BaseModelV1], DataSequence[BaseModelV2] -] -RequestParamsType = Union[Dict[str, str], BaseModelV1, BaseModelV2] +ReturnType = Union[None, JSON, bytes, str, dict, BaseModel, DataSequence[BaseModel]] +RequestParamsType = Union[Dict[str, str], BaseModel] @dataclass @@ -170,7 +167,7 @@ def _prepare_payload(cls, payload: PayloadType, force_json: bool = False) -> Pre return PreparedPayload(data=json.dumps(payload), headers={"content-type": "application/json"}) if isinstance(payload, (str, bytes)): return PreparedPayload(data=payload) - elif isinstance(payload, (BaseModelV1, BaseModelV2)): + elif isinstance(payload, (BaseModel)): return cls._prepare_basemodel_payload(payload) elif isinstance(payload, Sequence) and not isinstance(payload, (str, bytes)): return cls._prepare_sequence_payload(payload) # type: ignore[arg-type] @@ -181,34 +178,25 @@ def _prepare_payload(cls, payload: PayloadType, force_json: bool = False) -> Pre raise APIRequestPayloadTypeError(payload) @classmethod - def _prepare_basemodel_payload(cls, payload: Union[BaseModelV1, BaseModelV2]) -> PreparedPayload: + def _prepare_basemodel_payload(cls, payload: BaseModel) -> PreparedPayload: """Helper method to prepare BaseModel instance for sending""" - if isinstance(payload, BaseModelV1): - return PreparedPayload( - data=payload.json(exclude_none=True, by_alias=True), headers={"content-type": "application/json"} - ) return PreparedPayload( data=payload.model_dump_json(exclude_none=True, by_alias=True), headers={"content-type": "application/json"} ) @classmethod - def _prepare_sequence_payload(cls, payload: Iterable[Union[BaseModelV1, BaseModelV2]]) -> PreparedPayload: + def _prepare_sequence_payload(cls, payload: Iterable[BaseModel]) -> PreparedPayload: """Helper method to prepare sequences for sending""" items = [] for item in payload: - if isinstance(item, BaseModelV1): - items.append(item.dict(exclude_none=True, by_alias=True)) - elif isinstance(item, BaseModelV2): - items.append(item.model_dump(exclude_none=True, by_alias=True)) + items.append(item.model_dump(exclude_none=True, by_alias=True)) data = json.dumps(items) return PreparedPayload(data=data, headers={"content-type": "application/json"}) @classmethod def _prepare_params(cls, params: RequestParamsType) -> Dict[str, Any]: """Helper method to prepare params for sending""" - if isinstance(params, BaseModelV1): - return params.dict(exclude_none=True, by_alias=True) - elif isinstance(params, BaseModelV2): + if isinstance(params, BaseModel): return params.model_dump(exclude_none=True, by_alias=True) return params @@ -391,13 +379,13 @@ def specify_return_type(self) -> TypeSpecifier: (type_args := get_args(annotation)) and (len(type_args) == 1) and isclass(type_args[0]) - and issubclass(type_args[0], (BaseModelV1, BaseModelV2)) + and issubclass(type_args[0], BaseModel) ): return TypeSpecifier(True, DataSequence, type_args[0]) raise APIEndpointError(f"Expected: {ReturnType} but return type {annotation}") elif isclass(annotation): try: - if issubclass(annotation, (bytes, str, dict, BinaryIO, (BaseModelV1, BaseModelV2))): + if issubclass(annotation, (bytes, str, dict, BinaryIO, BaseModel)): return TypeSpecifier(True, None, annotation) raise APIEndpointError(f"Expected: {ReturnType} but return type {annotation}") except TypeError: @@ -437,7 +425,7 @@ def specify_payload_type(self) -> TypeSpecifier: # Check if regular class if isclass(annotation): - if issubclass(annotation, (bytes, str, dict, BinaryIO, BaseModelV1, BaseModelV2, CustomPayloadType)): + if issubclass(annotation, (bytes, str, dict, BinaryIO, BaseModel, CustomPayloadType)): return TypeSpecifier(True, None, annotation, None, False, is_optional) else: raise APIEndpointError(f"'payload' param must be annotated with supported type: {PayloadType}") @@ -450,7 +438,7 @@ def specify_payload_type(self) -> TypeSpecifier: (type_args := get_args(annotation)) and (len(type_args) == 1) and isclass(type_args[0]) - and issubclass(type_args[0], (BaseModelV1, BaseModelV2)) + and issubclass(type_args[0], BaseModel) ): return TypeSpecifier(True, type_origin, type_args[0], None, False, is_optional) # Check if Annnotated[Union[PayloadModelType, ...]], only unions of pydantic models allowed @@ -460,7 +448,7 @@ def specify_payload_type(self) -> TypeSpecifier: if ( (type_args := get_args(annotated_origin[0])) and all(isclass(t) for t in type_args) - and all(issubclass(t, (BaseModelV1, BaseModelV2)) for t in type_args) + and all(issubclass(t, BaseModel) for t in type_args) ): return TypeSpecifier.model_union(models=list(type_args)) # Check if Union[PayloadModelType, ...], only unions of pydantic models allowed @@ -468,7 +456,7 @@ def specify_payload_type(self) -> TypeSpecifier: if ( (type_args := get_args(annotation)) and all(isclass(t) for t in type_args) - and all(issubclass(t, (BaseModelV1, BaseModelV2)) for t in type_args) + and all(issubclass(t, BaseModel) for t in type_args) ): return TypeSpecifier.model_union(models=list(type_args)) raise APIEndpointError(f"Expected: {PayloadType} but found payload {annotation}") @@ -484,10 +472,7 @@ def check_params(self): parameters = self.sig.parameters if params_param := parameters.get("params"): - if not ( - isclass(params_param.annotation) - and issubclass(params_param.annotation, (BaseModelV1, BaseModelV2, Dict)) - ): + if not (isclass(params_param.annotation) and issubclass(params_param.annotation, (BaseModel, Dict))): raise APIEndpointError(f"'params' param must be annotated with supported type: {RequestParamsType}") general_purpose_arg_names = { @@ -578,11 +563,17 @@ def wrapper(*args, **kwargs): return full_json if self.return_spec.payload_type is None: pass - elif issubclass(self.return_spec.payload_type, (BaseModelV1, BaseModelV2)): + elif issubclass(self.return_spec.payload_type, BaseModel): if self.return_spec.sequence_type == DataSequence: - return response.dataseq(self.return_spec.payload_type, self.resp_json_key) + return response.dataseq( + cls=self.return_spec.payload_type, + sourcekey=self.resp_json_key, + validate=_self._client.validate_responses, + ) else: - return response.dataobj(self.return_spec.payload_type, self.resp_json_key) + return response.dataobj( + self.return_spec.payload_type, self.resp_json_key, validate=_self._client.validate_responses + ) elif issubclass(self.return_spec.payload_type, str): return response.text elif issubclass(self.return_spec.payload_type, bytes): diff --git a/catalystwan/endpoints/certificate_management_vmanage.py b/catalystwan/endpoints/certificate_management_vmanage.py index bbc13b9c..ad52e435 100644 --- a/catalystwan/endpoints/certificate_management_vmanage.py +++ b/catalystwan/endpoints/certificate_management_vmanage.py @@ -3,21 +3,22 @@ # mypy: disable-error-code="empty-body" import datetime -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, get class WebServerCertificateInfo(BaseModel): + model_config = ConfigDict(populate_by_name=True) org_unit: str org: str location: str state: str country: str company_name: str - not_before: datetime.datetime = Field(alias="notBefore") - not_after: datetime.datetime = Field(alias="notAfter") - certificate_details: str = Field(alias="certificateDetails") + not_before: datetime.datetime = Field(serialization_alias="notBefore", validation_alias="notBefore") + not_after: datetime.datetime = Field(serialization_alias="notAfter", validation_alias="notAfter") + certificate_details: str = Field(serialization_alias="certificateDetails", validation_alias="certificateDetails") validity: str diff --git a/catalystwan/endpoints/client.py b/catalystwan/endpoints/client.py index 3a746fc5..c2586a04 100644 --- a/catalystwan/endpoints/client.py +++ b/catalystwan/endpoints/client.py @@ -5,7 +5,7 @@ from typing import Any, List, Optional from packaging.version import Version # type: ignore -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, get @@ -21,46 +21,65 @@ def validate(cls, value): class ServerInfo(BaseModel): - server: Optional[str] - tenancy_mode: Optional[str] = Field(alias="tenancyMode") - user_mode: Optional[str] = Field(alias="userMode") - vsession_id: Optional[str] = Field(alias="VSessionId") - is_saml_user: Optional[bool] = Field(alias="isSamlUser") - is_rbac_vpn_user: Optional[bool] = Field(alias="isRbacVpnUser") + model_config = ConfigDict(populate_by_name=True) + server: Optional[str] = None + tenancy_mode: Optional[str] = Field(default=None, serialization_alias="tenancyMode", validation_alias="tenancyMode") + user_mode: Optional[str] = Field(default=None, serialization_alias="userMode", validation_alias="userMode") + vsession_id: Optional[str] = Field(default=None, serialization_alias="VSessionId", validation_alias="VSessionId") + is_saml_user: Optional[bool] = Field(default=None, serialization_alias="isSamlUser", validation_alias="isSamlUser") + is_rbac_vpn_user: Optional[bool] = Field( + default=None, serialization_alias="isRbacVpnUser", validation_alias="isRbacVpnUser" + ) vpns: List[Any] = [] - csrf_token: Optional[str] = Field(alias="CSRFToken") - provider_domain: Optional[str] = Field(alias="providerDomain") - tenant_id: Optional[str] = Field(alias="tenantId") - provider_id: Optional[str] = Field(alias="providerId") - view_mode: Optional[str] = Field(alias="viewMode") + csrf_token: Optional[str] = Field(default=None, serialization_alias="CSRFToken", validation_alias="CSRFToken") + provider_domain: Optional[str] = Field( + default=None, serialization_alias="providerDomain", validation_alias="providerDomain" + ) + tenant_id: Optional[str] = Field(default=None, serialization_alias="tenantId", validation_alias="tenantId") + provider_id: Optional[str] = Field(default=None, serialization_alias="providerId", validation_alias="providerId") + view_mode: Optional[str] = Field(default=None, serialization_alias="viewMode", validation_alias="viewMode") capabilities: List[str] = [] - user: Optional[str] - description: Optional[str] - locale: Optional[str] + user: Optional[str] = None + description: Optional[str] = None + locale: Optional[str] = None roles: List[str] = [] - external_user: Optional[bool] = Field(alias="externalUser") - platform_version: str = Field(default="", alias="platformVersion") - general_template: Optional[bool] = Field(alias="generalTemplate") - disable_full_config_push: Optional[bool] = Field(alias="disableFullConfigPush") - enable_server_events: Optional[bool] = Field(alias="enableServerEvents") - cloudx: Optional[str] - reverseproxy: Optional[str] - vmanage_mode: Optional[str] = Field(alias="vmanageMode") + external_user: Optional[bool] = Field( + default=None, serialization_alias="externalUser", validation_alias="externalUser" + ) + platform_version: str = Field(default="", serialization_alias="platformVersion", validation_alias="platformVersion") + general_template: Optional[bool] = Field( + default=None, serialization_alias="generalTemplate", validation_alias="generalTemplate" + ) + disable_full_config_push: Optional[bool] = Field( + default=None, serialization_alias="disableFullConfigPush", validation_alias="disableFullConfigPush" + ) + enable_server_events: Optional[bool] = Field( + default=None, serialization_alias="enableServerEvents", validation_alias="enableServerEvents" + ) + cloudx: Optional[str] = None + reverseproxy: Optional[str] = None + vmanage_mode: Optional[str] = Field(default=None, serialization_alias="vmanageMode", validation_alias="vmanageMode") class AboutInfo(BaseModel): + model_config = ConfigDict(populate_by_name=True) title: Optional[str] version: str = Field(default="") - application_version: Optional[str] = Field(alias="applicationVersion") - application_server: Optional[str] = Field(alias="applicationServer") + application_version: Optional[str] = Field( + serialization_alias="applicationVersion", validation_alias="applicationVersion" + ) + application_server: Optional[str] = Field( + serialization_alias="applicationServer", validation_alias="applicationServer" + ) copyright: Optional[str] time: Optional[datetime] - time_zone: Optional[str] = Field(alias="timeZone") + time_zone: Optional[str] = Field(serialization_alias="timeZone", validation_alias="timeZone") logo: Optional[str] class ServerReady(BaseModel): - is_server_ready: bool = Field(alias="isServerReady") + model_config = ConfigDict(populate_by_name=True) + is_server_ready: bool = Field(serialization_alias="isServerReady", validation_alias="isServerReady") class Client(APIEndpoints): diff --git a/catalystwan/endpoints/cluster_management.py b/catalystwan/endpoints/cluster_management.py index 3994e499..bfbaf99b 100644 --- a/catalystwan/endpoints/cluster_management.py +++ b/catalystwan/endpoints/cluster_management.py @@ -1,23 +1,18 @@ # Copyright 2023 Cisco Systems, Inc. and its affiliates # mypy: disable-error-code="empty-body" +from typing import Literal, Optional -from enum import Enum -from typing import Optional - -from pydantic.v1 import BaseModel +from pydantic import BaseModel from catalystwan.endpoints import APIEndpoints, get from catalystwan.typed_list import DataSequence - -class TenancyModeEnum(str, Enum): - st = "SingleTenant" - mt = "MultiTenant" +TenancyModes = Literal["SingleTenant", "MultiTenant"] class TenancyMode(BaseModel): - mode: TenancyModeEnum + mode: TenancyModes deploymentmode: str domain: Optional[str] = None clusterid: Optional[str] = None diff --git a/catalystwan/endpoints/configuration/policy/vsmart_template.py b/catalystwan/endpoints/configuration/policy/vsmart_template.py index 837c2448..ef13d201 100644 --- a/catalystwan/endpoints/configuration/policy/vsmart_template.py +++ b/catalystwan/endpoints/configuration/policy/vsmart_template.py @@ -1,10 +1,10 @@ # Copyright 2023 Cisco Systems, Inc. and its affiliates # mypy: disable-error-code="empty-body" - +from typing import Literal from uuid import UUID -from pydantic.v1 import BaseModel, Field, IPvAnyAddress +from pydantic import BaseModel, ConfigDict, Field, IPvAnyAddress from catalystwan.endpoints import JSON, APIEndpoints, delete, get, post, put from catalystwan.models.policy.centralized import CentralizedPolicy, CentralizedPolicyEditPayload, CentralizedPolicyInfo @@ -13,15 +13,16 @@ class VSmartConnectivityStatus(BaseModel): - device_uuid: UUID = Field(alias="deviceUUID") - operation_mode: str = Field(alias="operationMode") - device_ip: IPvAnyAddress = Field(alias="deviceIp") - local_system_ip: IPvAnyAddress = Field(alias="local-system-ip") - is_online: bool = Field(alias="isOnline") + model_config = ConfigDict(populate_by_name=True) + device_uuid: UUID = Field(serialization_alias="deviceUUID", validation_alias="deviceUUID") + operation_mode: str = Field(serialization_alias="operationMode", validation_alias="operationMode") + device_ip: IPvAnyAddress = Field(serialization_alias="deviceIp", validation_alias="deviceIp") + local_system_ip: IPvAnyAddress = Field(serialization_alias="local-system-ip", validation_alias="local-system-ip") + is_online: bool = Field(serialization_alias="isOnline", validation_alias="isOnline") class AutoConfirm(BaseModel): - confirm: str = Field(default="true", const=True) + confirm: Literal["true"] = "true" class ActivateDeactivateTaskId(BaseModel): diff --git a/catalystwan/endpoints/configuration_dashboard_status.py b/catalystwan/endpoints/configuration_dashboard_status.py index 530de910..0df41fd1 100644 --- a/catalystwan/endpoints/configuration_dashboard_status.py +++ b/catalystwan/endpoints/configuration_dashboard_status.py @@ -3,23 +3,28 @@ # mypy: disable-error-code="empty-body" from typing import Dict, List, Optional, Union -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, get from catalystwan.utils.operation_status import OperationStatus class SubTaskData(BaseModel): + model_config = ConfigDict(populate_by_name=True) status: str - status_id: str = Field(alias="statusId") - action: Optional[str] - activity: List[str] - current_activity: Optional[str] = Field(alias="currentActivity") - action_config: Optional[Union[str, Dict]] = Field(alias="actionConfig") - order: Optional[int] - uuid: Optional[str] - hostname: Optional[str] = Field(alias="host-name") - site_id: Optional[str] = Field(alias="site-id") + status_id: str = Field(serialization_alias="statusId", validation_alias="statusId") + action: Optional[str] = None + activity: List[str] = [] + current_activity: Optional[str] = Field( + default=None, serialization_alias="currentActivity", validation_alias="currentActivity" + ) + action_config: Optional[Union[str, Dict]] = Field( + default=None, serialization_alias="actionConfig", validation_alias="actionConfig" + ) + order: Optional[int] = None + uuid: Optional[str] = None + hostname: Optional[str] = Field(default=None, serialization_alias="host-name", validation_alias="host-name") + site_id: Optional[str] = Field(default=None, serialization_alias="site-id", validation_alias="site-id") class TaskResult(BaseModel): @@ -28,63 +33,88 @@ class TaskResult(BaseModel): class RunningTaskData(BaseModel): - details_url: Optional[str] = Field(alias="detailsURL") - user_session_username: Optional[str] = Field(alias="userSessionUserName") - rid: Optional[int] = Field(alias="@rid") - tenant_name: Optional[str] = Field("tenantName") - process_id: Optional[str] = Field(alias="processId") - name: Optional[str] - tenant_id: Optional[str] = Field(alias="tenantId") - user_session_ip: Optional[str] = Field(alias="userSessionIP") - action: Optional[str] - start_time: Optional[int] = Field(alias="startTime") - end_time: Optional[int] = Field(alias="endTime") - status: Optional[str] + model_config = ConfigDict(populate_by_name=True) + details_url: Optional[str] = Field(default=None, serialization_alias="detailsURL", validation_alias="detailsURL") + user_session_username: Optional[str] = Field( + default=None, serialization_alias="userSessionUserName", validation_alias="userSessionUserName" + ) + rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid") + tenant_name: Optional[str] = Field(default=None, serialization_alias="tenantName", validation_alias="tenantName") + process_id: Optional[str] = Field(default=None, serialization_alias="processId", validation_alias="processId") + name: Optional[str] = None + tenant_id: Optional[str] = Field(default=None, serialization_alias="tenantId", validation_alias="tenantId") + user_session_ip: Optional[str] = Field( + default=None, serialization_alias="userSessionIP", validation_alias="userSessionIP" + ) + action: Optional[str] = None + start_time: Optional[int] = Field(default=None, serialization_alias="startTime", validation_alias="startTime") + end_time: Optional[int] = Field(default=None, serialization_alias="endTime", validation_alias="endTime") + status: Optional[str] = None class Validation(BaseModel): - status_type: Optional[str] = Field(alias="statusType") - activity: Optional[List[str]] = Field(alias="activity") - vmanage_ip: Optional[str] = Field(alias="vmanageIP") - system_ip: Optional[str] = Field(alias="system-ip") - device_id: Optional[str] = Field(alias="deviceID") - uuid: Optional[str] = Field(alias="uuid") - rid: Optional[int] = Field(alias="@rid") - status_id: str = Field(alias="statusId") - process_id: Optional[str] = Field(alias="processId") - action_config: Optional[Union[str, Dict]] = Field(alias="actionConfig") - current_activity: Optional[str] = Field(alias="currentActivity") - action: Optional[str] = Field(alias="action") - start_time: Optional[int] = Field(alias="startTime") - request_status: Optional[str] = Field(alias="requestStatus") - status: OperationStatus = Field(alias="status") - order: Optional[int] = Field(alias="order") + model_config = ConfigDict(populate_by_name=True) + status_type: Optional[str] = Field(default=None, serialization_alias="statusType", validation_alias="statusType") + activity: Optional[List[str]] = Field(default=None, serialization_alias="activity", validation_alias="activity") + vmanage_ip: Optional[str] = Field(default=None, serialization_alias="vmanageIP", validation_alias="vmanageIP") + system_ip: Optional[str] = Field(default=None, serialization_alias="system-ip", validation_alias="system-ip") + device_id: Optional[str] = Field(default=None, serialization_alias="deviceID", validation_alias="deviceID") + uuid: Optional[str] = Field(default=None, serialization_alias="uuid", validation_alias="uuid") + rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid") + status_id: str = Field(default=None, serialization_alias="statusId", validation_alias="statusId") + process_id: Optional[str] = Field(default=None, serialization_alias="processId", validation_alias="processId") + action_config: Optional[Union[str, Dict]] = Field( + default=None, serialization_alias="actionConfig", validation_alias="actionConfig" + ) + current_activity: Optional[str] = Field( + default=None, serialization_alias="currentActivity", validation_alias="currentActivity" + ) + action: Optional[str] = Field(default=None, serialization_alias="action", validation_alias="action") + start_time: Optional[int] = Field(default=None, serialization_alias="startTime", validation_alias="startTime") + request_status: Optional[str] = Field( + default=None, serialization_alias="requestStatus", validation_alias="requestStatus" + ) + status: OperationStatus = Field(default=None, serialization_alias="status", validation_alias="status") + order: Optional[int] = Field(default=None, serialization_alias="order", validation_alias="order") class Summary(BaseModel): - action: Optional[str] = Field(alias="action") - name: Optional[str] = Field(alias="name") - details_url: Optional[str] = Field(alias="detailsURL") - start_time: Optional[str] = Field(alias="startTime") - end_time: Optional[str] = Field(alias="endTime") - user_session_user_name: Optional[str] = Field(alias="userSessionUserName") - user_session_ip: Optional[str] = Field(alias="userSessionIP") - tenant_name: Optional[str] = Field(alias="tenantName") - total: Optional[int] = Field(alias="total") - status: Optional[str] = Field(alias="status") - count: Optional[dict] = Field(alias="count") + model_config = ConfigDict(populate_by_name=True) + action: Optional[str] = Field(default=None, serialization_alias="action", validation_alias="action") + name: Optional[str] = Field(default=None, serialization_alias="name", validation_alias="name") + details_url: Optional[str] = Field(default=None, serialization_alias="detailsURL", validation_alias="detailsURL") + start_time: Optional[str] = Field(default=None, serialization_alias="startTime", validation_alias="startTime") + end_time: Optional[str] = Field(default=None, serialization_alias="endTime", validation_alias="endTime") + user_session_user_name: Optional[str] = Field( + default=None, serialization_alias="userSessionUserName", validation_alias="userSessionUserName" + ) + user_session_ip: Optional[str] = Field( + default=None, serialization_alias="userSessionIP", validation_alias="userSessionIP" + ) + tenant_name: Optional[str] = Field(default=None, serialization_alias="tenantName", validation_alias="tenantName") + total: Optional[int] = Field(default=None, serialization_alias="total", validation_alias="total") + status: Optional[str] = Field(default=None, serialization_alias="status", validation_alias="status") + count: Optional[dict] = Field(default=None, serialization_alias="count", validation_alias="count") class TaskData(BaseModel): - data: List[SubTaskData] = Field(default=[]) - validation: Optional[Validation] - summary: Optional[Summary] - is_cancel_enabled: Optional[bool] = Field(alias="isCancelEnabled") - is_parallel_execution_enabled: Optional[bool] = Field(alias="isParallelExecutionEnabled") + model_config = ConfigDict(populate_by_name=True) + data: List[SubTaskData] = [] + validation: Optional[Validation] = None + summary: Optional[Summary] = None + is_cancel_enabled: Optional[bool] = Field( + default=None, serialization_alias="isCancelEnabled", validation_alias="isCancelEnabled" + ) + is_parallel_execution_enabled: Optional[bool] = Field( + default=None, serialization_alias="isParallelExecutionEnabled", validation_alias="isParallelExecutionEnabled" + ) class TasksData(BaseModel): - running_tasks: List[RunningTaskData] = Field(alias="runningTasks") + model_config = ConfigDict(populate_by_name=True) + running_tasks: List[RunningTaskData] = Field( + default=[], serialization_alias="runningTasks", validation_alias="runningTasks" + ) class ConfigurationDashboardStatus(APIEndpoints): diff --git a/catalystwan/endpoints/configuration_device_actions.py b/catalystwan/endpoints/configuration_device_actions.py index 70017111..6342cf9c 100644 --- a/catalystwan/endpoints/configuration_device_actions.py +++ b/catalystwan/endpoints/configuration_device_actions.py @@ -20,6 +20,7 @@ def convert_to_list(element: Union[str, List[str]]) -> List[str]: VersionType = Literal["vmanage", "remote"] PartitionActionType = Literal["removepartition", "defaultpartition", "changepartition"] +LxcActionType = Literal["lxc_activate", "lxc_upgrade", "lxc_delete"] class ActionId(BaseModel): @@ -27,7 +28,7 @@ class ActionId(BaseModel): class GroupId(BaseModel): - group_id: str = Field(default="all", serialization_alias="groupID", validation_alias="groupID") + group_id: str = Field(default="all", serialization_alias="groupId", validation_alias="groupId") class ZTPUpgradeSettings(BaseModel): @@ -50,6 +51,36 @@ class PartitionDevice(BaseModel): VersionList = Annotated[Union[str, List[str]], BeforeValidator(convert_to_list)] +class InstallLxcImage(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + network_function_type: str = Field( + default="app-hosting", serialization_alias="networkFunctionType", validation_alias="networkFunctionType" + ) + version_name: str = Field(serialization_alias="versionName", validation_alias="versionName") + version_type_name: str = Field( + default="UTD-Snort-Feature", serialization_alias="versionTypeName", validation_alias="versionTypeName" + ) + + +class LxcActivateDevice(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + device_id: str = Field(serialization_alias="deviceId", validation_alias="deviceId") + device_ip: str = Field(serialization_alias="deviceIP", validation_alias="deviceIP") + install_images: List[InstallLxcImage] = Field(serialization_alias="installImages", validation_alias="installImages") + vedge_vpn: str = Field(default="0", serialization_alias="vEdgeVPN", validation_alias="vEdgeVPN") + version_type: str = Field(default="vmanage", serialization_alias="versionType", validation_alias="versionType") + + +class LxcUpgradeDevice(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + device_id: str = Field(serialization_alias="deviceId", validation_alias="deviceId") + device_ip: str = Field(serialization_alias="deviceIP", validation_alias="deviceIP") + install_images: List[InstallLxcImage] = Field(serialization_alias="installImages", validation_alias="installImages") + + class RemovePartitionDevice(BaseModel): model_config = ConfigDict(populate_by_name=True) @@ -66,6 +97,39 @@ class PartitionActionPayload(BaseModel): devices: List[PartitionDevice] +class LxcInstallInput(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + v_edge_vpn: str = Field(serialization_alias="vEdgeVPN", validation_alias="vEdgeVPN") + version_type: VersionType = Field(serialization_alias="versionType", validation_alias="versionType") + + +class LxcImageActivatePayload(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + action: LxcActionType + device_type: str = Field(serialization_alias="deviceType", validation_alias="deviceType") + devices: List[LxcActivateDevice] + input: LxcInstallInput + + +class LxcImageUpgradePayload(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + action: LxcActionType + device_type: str = Field(serialization_alias="deviceType", validation_alias="deviceType") + devices: List[LxcUpgradeDevice] + input: LxcInstallInput + + +class LxcImageDeletePayload(BaseModel): + model_config = ConfigDict(populate_by_name=True) + + action: LxcActionType + device_type: str = Field(serialization_alias="deviceType", validation_alias="deviceType") + devices: List[LxcUpgradeDevice] + + class RemovePartitionActionPayload(BaseModel): model_config = ConfigDict(populate_by_name=True) @@ -249,11 +313,13 @@ def process_delete_amp_api_key(self): def process_install_operation(self, payload: InstallActionPayload) -> ActionId: ... - def process_lxc_activate(self): + @post("/device/action/lxcactivate") + def process_lxc_activate(self, payload: PartitionActionPayload) -> ActionId: # POST /device/action/lxcactivate ... - def process_lxc_delete(self): + @post("/device/action/lxcdelete") + def process_lxc_delete(self, payload: PartitionActionPayload) -> ActionId: # POST /device/action/lxcdelete ... @@ -269,7 +335,8 @@ def process_lxc_reset(self): # POST /device/action/lxcreset ... - def process_lxc_upgrade(self): + @post("/device/action/lxcupgrade") + def process_lxc_upgrade(self, payload: PartitionActionPayload) -> ActionId: # POST /device/action/lxcupgrade ... diff --git a/catalystwan/endpoints/configuration_device_inventory.py b/catalystwan/endpoints/configuration_device_inventory.py index cb4d9675..b4957256 100644 --- a/catalystwan/endpoints/configuration_device_inventory.py +++ b/catalystwan/endpoints/configuration_device_inventory.py @@ -2,7 +2,7 @@ # mypy: disable-error-code="empty-body" from pathlib import Path -from typing import List, Literal, Optional, Union +from typing import Dict, List, Literal, Optional, Union from uuid import UUID from pydantic import BaseModel, ConfigDict, Field @@ -126,7 +126,7 @@ class DeviceDetailsResponse(BaseModel): default=None, validation_alias="resourceGroup", serialization_alias="resourceGroup" ) id: Optional[str] = None - tags: Optional[List[str]] = None + tags: Optional[Union[List[str], List[Dict]]] = None draft_mode: Optional[str] = Field(default=None, validation_alias="draftMode", serialization_alias="draftMode") solution: Optional[str] = None device_lock: Optional[str] = Field(default=None, validation_alias="device-lock", serialization_alias="device-lock") diff --git a/catalystwan/endpoints/configuration_device_template.py b/catalystwan/endpoints/configuration_device_template.py index b1da0d79..48698b27 100644 --- a/catalystwan/endpoints/configuration_device_template.py +++ b/catalystwan/endpoints/configuration_device_template.py @@ -3,13 +3,14 @@ # mypy: disable-error-code="empty-body" from typing import Dict -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, post, view from catalystwan.utils.session_type import ProviderView class FeatureToCLIPayload(BaseModel): + model_config = ConfigDict(populate_by_name=True) device_specific_variables: Dict[str, str] = Field(alias="device") is_edited: bool = Field(alias="isEdited") is_master_edited: bool = Field(alias="isMasterEdited") diff --git a/catalystwan/endpoints/configuration_group.py b/catalystwan/endpoints/configuration_group.py index ef499304..c2c2ec22 100644 --- a/catalystwan/endpoints/configuration_group.py +++ b/catalystwan/endpoints/configuration_group.py @@ -4,7 +4,7 @@ from datetime import datetime from typing import List, Optional -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, delete, get, post, put, versions from catalystwan.models.configuration.common import Solution @@ -25,15 +25,16 @@ class ConfigGroupCreationPayload(BaseModel): class FeatureProfile(BaseModel): + model_config = ConfigDict(populate_by_name=True) id: str name: str description: Optional[str] solution: str type: ProfileType - created_by: str = Field(alias="createdBy") - last_updated_by: str = Field(alias="lastUpdatedBy") - created_on: datetime = Field(alias="createdOn") - last_updated_on: datetime = Field(alias="lastUpdatedOn") + created_by: str = Field(serialization_alias="createdBy", validation_alias="createdBy") + last_updated_by: str = Field(serialization_alias="lastUpdatedBy", validation_alias="lastUpdatedBy") + created_on: datetime = Field(serialization_alias="createdOn", validation_alias="createdOn") + last_updated_on: datetime = Field(serialization_alias="lastUpdatedOn", validation_alias="lastUpdatedOn") class ConfigGroup(BaseModel): @@ -73,13 +74,17 @@ class VariableData(BaseModel): class DeviceVariables(BaseModel): - device_id: str = Field(alias="device-id") + model_config = ConfigDict(populate_by_name=True) + device_id: str = Field(serialization_alias="device-id", validation_alias="device-id") variables: List[VariableData] class GroupVariables(BaseModel): + model_config = ConfigDict(populate_by_name=True) name: str - group_variables: List[VariableData] = Field(alias="group-variables") + group_variables: List[VariableData] = Field( + serialization_alias="group-variables", validation_alias="group-variables" + ) class ConfigGroupVariablesCreateResponse(BaseModel): diff --git a/catalystwan/endpoints/configuration_settings.py b/catalystwan/endpoints/configuration_settings.py index cd9fdf31..c03ab90a 100644 --- a/catalystwan/endpoints/configuration_settings.py +++ b/catalystwan/endpoints/configuration_settings.py @@ -2,59 +2,33 @@ # mypy: disable-error-code="empty-body" import datetime -from enum import Enum from typing import List, Literal, Optional, Union -from pydantic.v1 import BaseModel, Field, IPvAnyAddress, validator +from pydantic import BaseModel, ConfigDict, Field, IPvAnyAddress, field_validator from catalystwan.endpoints import JSON, APIEndpoints, get, post, put, view from catalystwan.typed_list import DataSequence from catalystwan.utils.session_type import ProviderView, SingleTenantView - -class ModeEnum(str, Enum): - ON = "on" - OFF = "off" - - -class DataStreamIPTypeEnum(str, Enum): - SYSTEM = "systemIp" - MGMT = "mgmtIp" - TRANSPORT = "transportIp" - - -class PasswordPolicyEnum(str, Enum): - DISABLED = "disabled" - MEDIUM = "mediumSecurity" - HIGH = "highSecurity" - - -class SmartLicensingSettingModeEnum(str, Enum): - ONPREM = "on-prem" - OFFLINE = "offline" - ONLINE = "online" - - -class CRLActionEnum(str, Enum): - DISABLE = "disable" - REVOKE = "revoke" - QUARANTINE = "quarantine" +OnOffMode = Literal["on", "off"] +DataStreamIPTypes = Literal["systemIp", "mgmtIp", "transportIp"] +PasswordPolicies = Literal["disabled", "mediumSecurity", "highSecurity"] +SmartLicensingSettingModes = Literal["on-prem", "offline", "online"] +CRLActions = Literal["disable", "revoke", "quarantine"] class Organization(BaseModel): - class Config: - allow_population_by_field_name = True - + model_config = ConfigDict(populate_by_name=True) org: Optional[str] = Field(default=None) - domain_id: Optional[str] = Field(alias="domain-id") - control_connection_up: Optional[bool] = Field(alias="controlConnectionUp") + domain_id: Optional[str] = Field(default=None, serialization_alias="domain-id", validation_alias="domain-id") + control_connection_up: Optional[bool] = Field( + default=None, serialization_alias="controlConnectionUp", validation_alias="controlConnectionUp" + ) class Device(BaseModel): - class Config: - allow_population_by_field_name = True - - domain_ip: Optional[str] = Field(default=None, alias="domainIp") + model_config = ConfigDict(populate_by_name=True) + domain_ip: Optional[str] = Field(default=None, serialization_alias="domainIp", validation_alias="domainIp") port: Optional[str] = Field(default="12346") @@ -63,22 +37,22 @@ class EmailNotificationSettings(BaseModel): class HardwareRootCA(BaseModel): - class Config: - allow_population_by_field_name = True - - hardware_certificate: Optional[str] = Field(default=None, alias="hardwareCertificate") - control_connection_up: Optional[bool] = Field(default=False, alias="controlConnectionUp") + model_config = ConfigDict(populate_by_name=True) + hardware_certificate: Optional[str] = Field( + default=None, serialization_alias="hardwareCertificate", validation_alias="hardwareCertificate" + ) + control_connection_up: Optional[bool] = Field( + default=False, serialization_alias="controlConnectionUp", validation_alias="controlConnectionUp" + ) class Certificate(BaseModel): - class Config: - allow_population_by_field_name = True - - certificate_signing: str = Field(alias="certificateSigning") - validity_period: str = Field(alias="validityPeriod") - retrieve_interval: str = Field(alias="retrieveInterval") - first_name: Optional[str] = Field(default=None, alias="firstName") - last_name: Optional[str] = Field(default=None, alias="lastName") + model_config = ConfigDict(populate_by_name=True) + certificate_signing: str = Field(serialization_alias="certificateSigning", validation_alias="certificateSigning") + validity_period: str = Field(serialization_alias="validityPeriod", validation_alias="validityPeriod") + retrieve_interval: str = Field(serialization_alias="retrieveInterval", validation_alias="retrieveInterval") + first_name: Optional[str] = Field(default=None, serialization_alias="firstName", validation_alias="firstName") + last_name: Optional[str] = Field(default=None, serialization_alias="lastName", validation_alias="lastName") email: Optional[str] = Field(default=None) @@ -87,96 +61,111 @@ class VEdgeCloud(BaseModel): class Banner(BaseModel): - class Config: - allow_population_by_field_name = True - - mode: Optional[ModeEnum] = ModeEnum.OFF - banner_detail: Optional[str] = Field(alias="bannerDetail") + model_config = ConfigDict(populate_by_name=True) + mode: Optional[OnOffMode] = "off" + banner_detail: Optional[str] = Field(serialization_alias="bannerDetail", validation_alias="bannerDetail") class ProxyHTTPServer(BaseModel): - class Config: - allow_population_by_field_name = True - + model_config = ConfigDict(populate_by_name=True) proxy: bool - proxy_ip: str = Field(default="", alias="proxyIp") - proxy_port: str = Field(default="", alias="proxyPort") + proxy_ip: str = Field(default="", serialization_alias="proxyIp", validation_alias="proxyIp") + proxy_port: str = Field(default="", serialization_alias="proxyPort", validation_alias="proxyPort") class ReverseProxy(BaseModel): - mode: Optional[ModeEnum] = ModeEnum.OFF + mode: Optional[OnOffMode] = "off" class CloudX(BaseModel): - mode: Optional[ModeEnum] = ModeEnum.OFF + mode: Optional[OnOffMode] = "off" class ManageEncryptedPassword(BaseModel): - class Config: - allow_population_by_field_name = True - - manage_type8_password: Optional[bool] = Field(default=False, alias="manageType8Password") + model_config = ConfigDict(populate_by_name=True) + manage_type8_password: Optional[bool] = Field( + default=False, serialization_alias="manageType8Password", validation_alias="manageType8Password" + ) class CloudServices(BaseModel): - class Config: - allow_population_by_field_name = True - + model_config = ConfigDict(populate_by_name=True) enabled: Optional[bool] = False - vanalytics_enabled: Optional[bool] = Field(default=False, alias="vanalyticsEnabled") - vmonitoring_enabled: Optional[bool] = Field(default=False, alias="vmonitoringEnabled") + vanalytics_enabled: Optional[bool] = Field( + default=False, serialization_alias="vanalyticsEnabled", validation_alias="vanalyticsEnabled" + ) + vmonitoring_enabled: Optional[bool] = Field( + default=False, serialization_alias="vmonitoringEnabled", validation_alias="vmonitoringEnabled" + ) otp: Optional[str] = None - cloud_gateway_url: Optional[str] = Field(default=None, alias="cloudGatewayUrl") - vanalytics_enabled_time: Optional[datetime.datetime] = Field(default=None, alias="vanalyticsEnabledTime") - vmonitoring_enabled_time: Optional[datetime.datetime] = Field(default=None, alias="vmonitoringEnabledTime") + cloud_gateway_url: Optional[str] = Field( + default=None, serialization_alias="cloudGatewayUrl", validation_alias="cloudGatewayUrl" + ) + vanalytics_enabled_time: Optional[datetime.datetime] = Field( + default=None, serialization_alias="vanalyticsEnabledTime", validation_alias="vanalyticsEnabledTime" + ) + vmonitoring_enabled_time: Optional[datetime.datetime] = Field( + default=None, serialization_alias="vmonitoringEnabledTime", validation_alias="vmonitoringEnabledTime" + ) class ClientSessionTimeout(BaseModel): - class Config: - allow_population_by_field_name = True - - is_enabled: Optional[bool] = Field(default=False, alias="isEnabled") + model_config = ConfigDict(populate_by_name=True) + is_enabled: Optional[bool] = Field(default=False, serialization_alias="isEnabled", validation_alias="isEnabled") timeout: Optional[int] = Field(default=None, ge=10, description="timeout in minutes") class SessionLifeTime(BaseModel): - class Config: - allow_population_by_field_name = True - - session_life_time: int = Field(alias="sessionLifeTime", ge=30, le=10080, description="lifetime in minutes") + model_config = ConfigDict(populate_by_name=True) + session_life_time: int = Field( + serialization_alias="sessionLifeTime", + validation_alias="sessionLifeTime", + ge=30, + le=10080, + description="lifetime in minutes", + ) class ServerSessionTimeout(BaseModel): - class Config: - allow_population_by_field_name = True - - server_session_timeout: int = Field(alias="serverSessionTimeout", ge=10, le=30, description="timeout in minutes") + model_config = ConfigDict(populate_by_name=True) + server_session_timeout: int = Field( + serialization_alias="serverSessionTimeout", + validation_alias="serverSessionTimeout", + ge=10, + le=30, + description="timeout in minutes", + ) class MaxSessionsPerUser(BaseModel): - class Config: - allow_population_by_field_name = True - - max_sessions_per_user: int = Field(alias="maxSessionsPerUser", ge=1, le=8) + model_config = ConfigDict(populate_by_name=True) + max_sessions_per_user: int = Field( + serialization_alias="maxSessionsPerUser", validation_alias="maxSessionsPerUser", ge=1, le=8 + ) class PasswordPolicy(BaseModel): - class Config: - allow_population_by_field_name = True - - password_policy: Union[bool, PasswordPolicyEnum] = Field(alias="passwordPolicy") + model_config = ConfigDict(populate_by_name=True) + password_policy: Union[bool, PasswordPolicies] = Field( + serialization_alias="passwordPolicy", validation_alias="passwordPolicy" + ) password_expiration_time: Optional[int] = Field( - default=False, alias="passwordExpirationTime", ge=1, le=90, description="timeout in days" + default=False, + serialization_alias="passwordExpirationTime", + validation_alias="passwordExpirationTime", + ge=1, + le=90, + description="timeout in days", ) class VManageDataStream(BaseModel): - class Config: - allow_population_by_field_name = True - + model_config = ConfigDict(populate_by_name=True) enable: Optional[bool] = False - ip_type: Optional[DataStreamIPTypeEnum] = Field(default=None, alias="ipType") - server_host_name: Union[IPvAnyAddress, DataStreamIPTypeEnum, None] = Field(default=None, alias="serverHostName") + ip_type: Optional[DataStreamIPTypes] = Field(default=None, serialization_alias="ipType", validation_alias="ipType") + server_host_name: Union[IPvAnyAddress, DataStreamIPTypes, None] = Field( + default=None, serialization_alias="serverHostName", validation_alias="serverHostName" + ) vpn: Optional[int] = Field(default=None, le=512) @@ -189,31 +178,39 @@ class SDWANTelemetry(BaseModel): class StatsOperation(BaseModel): - class Config: - allow_population_by_field_name = True - - stats_operation: str = Field(alias="statsOperation") - rid: int = Field(alias="@rid") - operation_interval: int = Field(alias="operationInterval", ge=1, description="interval in minutes") - default_interval: int = Field(alias="defaultInterval", ge=1, description="interval in minutes") + model_config = ConfigDict(populate_by_name=True) + stats_operation: str = Field(serialization_alias="statsOperation", validation_alias="statsOperation") + rid: int = Field(serialization_alias="@rid", validation_alias="@rid") + operation_interval: int = Field( + serialization_alias="operationInterval", + validation_alias="operationInterval", + ge=1, + description="interval in minutes", + ) + default_interval: int = Field( + serialization_alias="defaultInterval", + validation_alias="defaultInterval", + ge=1, + description="interval in minutes", + ) class MaintenanceWindow(BaseModel): - class Config: - allow_population_by_field_name = True - + model_config = ConfigDict(populate_by_name=True) enabled: Optional[bool] = False message: Optional[str] = "" - start: Optional[int] = Field(default=None, alias="epochStartTimeInMillis") - end: Optional[int] = Field(default=None, alias="epochEndTimeInMillis") + start: Optional[int] = Field( + default=None, serialization_alias="epochStartTimeInMillis", validation_alias="epochStartTimeInMillis" + ) + end: Optional[int] = Field( + default=None, serialization_alias="epochEndTimeInMillis", validation_alias="epochEndTimeInMillis" + ) class ElasticSearchDBSize(BaseModel): - class Config: - allow_population_by_field_name = True - - index_name: str = Field(alias="indexName") - size_in_gb: int = Field(alias="sizeInGB") + model_config = ConfigDict(populate_by_name=True) + index_name: str = Field(serialization_alias="indexName", validation_alias="indexName") + size_in_gb: int = Field(serialization_alias="sizeInGB", validation_alias="sizeInGB") class GoogleMapKey(BaseModel): @@ -221,28 +218,26 @@ class GoogleMapKey(BaseModel): class SoftwareInstallTimeout(BaseModel): - class Config: - allow_population_by_field_name = True - - download_timeout: str = Field(alias="downloadTimeoutInMin") - activate_timeout: str = Field(alias="activateTimeoutInMin") - control_pps: Optional[str] = Field(alias="controlPps") + model_config = ConfigDict(populate_by_name=True) + download_timeout: str = Field(serialization_alias="downloadTimeoutInMin", validation_alias="downloadTimeoutInMin") + activate_timeout: str = Field(serialization_alias="activateTimeoutInMin", validation_alias="activateTimeoutInMin") + control_pps: Optional[str] = Field(serialization_alias="controlPps", validation_alias="controlPps") - @validator("download_timeout") + @field_validator("download_timeout") def check_download_timeout(cls, download_timeout_str: str): download_timeout = int(download_timeout_str) if download_timeout < 60 or download_timeout > 360: raise ValueError("download timeout should be in range 60-360") return download_timeout_str - @validator("activate_timeout") + @field_validator("activate_timeout") def check_activate_timeout(cls, activate_timeout_str: str): activate_timeout = int(activate_timeout_str) if activate_timeout < 30 or activate_timeout > 180: raise ValueError("activate timeout should be in range 30-180") return activate_timeout_str - @validator("control_pps") + @field_validator("control_pps") def check_control_pps(cls, control_pps_str: str): control_pps = int(control_pps_str) if control_pps < 300 or control_pps > 65535: @@ -251,13 +246,16 @@ def check_control_pps(cls, control_pps_str: str): class IPSSignatureSettings(BaseModel): - class Config: - allow_population_by_field_name = True - - is_enabled: Optional[bool] = Field(default=False, alias="isEnabled") + model_config = ConfigDict(populate_by_name=True) + is_enabled: Optional[bool] = Field(default=False, serialization_alias="isEnabled", validation_alias="isEnabled") username: Optional[str] = None update_interval: Optional[int] = Field( - default=None, alias="updateInterval", description="interval in minutes", ge=1, le=1440 + default=None, + serialization_alias="updateInterval", + validation_alias="updateInterval", + description="interval in minutes", + ge=1, + le=1440, ) @@ -267,7 +265,7 @@ class SmartAccountCredentials(BaseModel): class PnPConnectSync(BaseModel): - mode: Optional[ModeEnum] = ModeEnum.OFF + mode: Optional[OnOffMode] = "off" class ClaimDevice(BaseModel): @@ -275,30 +273,32 @@ class ClaimDevice(BaseModel): class WalkMe(BaseModel): - class Config: - allow_population_by_field_name = True - + model_config = ConfigDict(populate_by_name=True) walkme: bool - walkme_analytics: bool = Field(alias="walkmeAnalytics") + walkme_analytics: bool = Field(serialization_alias="walkmeAnalytics", validation_alias="walkmeAnalytics") class SmartLicensingSetting(BaseModel): - class Config: - allow_population_by_field_name = True - - mode: Optional[SmartLicensingSettingModeEnum] = None - ssm_server_url: Optional[str] = Field(None, alias="ssmServerUrl") - ssm_client_id: Optional[str] = Field(None, alias="ssmClientId") - ssm_client_secret: Optional[str] = Field(None, alias="ssmClientSecret") + model_config = ConfigDict(populate_by_name=True) + mode: Optional[SmartLicensingSettingModes] = None + ssm_server_url: Optional[str] = Field(None, serialization_alias="ssmServerUrl", validation_alias="ssmServerUrl") + ssm_client_id: Optional[str] = Field(None, serialization_alias="ssmClientId", validation_alias="ssmClientId") + ssm_client_secret: Optional[str] = Field( + None, serialization_alias="ssmClientSecret", validation_alias="ssmClientSecret" + ) class StatsCollectionInterval(BaseModel): - class Config: - allow_population_by_field_name = True - - config_name: Literal["statsCollection"] = Field(default="statsCollection", alias="configName") + model_config = ConfigDict(populate_by_name=True) + config_name: Literal["statsCollection"] = Field( + default="statsCollection", serialization_alias="configName", validation_alias="configName" + ) operation_interval: int = Field( - ge=5, le=180, alias="operationInterval", desctiption="collecion interval in minutes" + ge=5, + le=180, + serialization_alias="operationInterval", + validation_alias="operationInterval", + description="collecion interval in minutes", ) @@ -310,26 +310,24 @@ class StatsConfig(BaseModel): @staticmethod def from_collection_interval(interval: int) -> "StatsConfig": - return StatsConfig(config=[StatsCollectionInterval(operationInterval=interval)]) + return StatsConfig(config=[StatsCollectionInterval(operation_interval=interval)]) class CRLSettings(BaseModel): - class Config: - allow_population_by_field_name = True - - action: CRLActionEnum - crl_url: Optional[str] = Field(None, alias="crlUrl") + model_config = ConfigDict(populate_by_name=True) + action: CRLActions + crl_url: Optional[str] = Field(None, serialization_alias="crlUrl", validation_alias="crlUrl") polling_interval: Optional[str] = Field(description="Retrieval interval (1-24 hours)") vpn: Optional[str] - @validator("polling_interval") + @field_validator("polling_interval") def check_polling_interval(cls, polling_interval_str: str): polling_interval = int(polling_interval_str) if polling_interval < 1 or polling_interval > 24: raise ValueError("Polling interval should be in range 1-24") return polling_interval_str - @validator("vpn") + @field_validator("vpn") def check_vpn(cls, vpn_str: str): vpn = int(vpn_str) if vpn < 0 or vpn > 65530: diff --git a/catalystwan/endpoints/endpoints_container.py b/catalystwan/endpoints/endpoints_container.py index c8c53c69..442259ba 100644 --- a/catalystwan/endpoints/endpoints_container.py +++ b/catalystwan/endpoints/endpoints_container.py @@ -83,14 +83,17 @@ from catalystwan.endpoints.configuration_group import ConfigurationGroup from catalystwan.endpoints.configuration_settings import ConfigurationSettings from catalystwan.endpoints.misc import MiscellaneousEndpoints -from catalystwan.endpoints.monitoring_device_details import MonitoringDeviceDetails -from catalystwan.endpoints.monitoring_status import MonitoringStatus +from catalystwan.endpoints.monitoring.device_details import MonitoringDeviceDetails +from catalystwan.endpoints.monitoring.security_policy import MonitoringSecurityPolicy +from catalystwan.endpoints.monitoring.server_info import ServerInfo +from catalystwan.endpoints.monitoring.status import MonitoringStatus from catalystwan.endpoints.real_time_monitoring.reboot_history import RealTimeMonitoringRebootHistory from catalystwan.endpoints.sdavc_cloud_connector import SDAVCCloudConnector from catalystwan.endpoints.tenant_backup_restore import TenantBackupRestore from catalystwan.endpoints.tenant_management import TenantManagement from catalystwan.endpoints.tenant_migration import TenantMigration from catalystwan.endpoints.troubleshooting_tools.device_connectivity import TroubleshootingToolsDeviceConnectivity +from catalystwan.endpoints.url_monitoring import UrlMonitoring if TYPE_CHECKING: from catalystwan.session import ManagerSession @@ -198,6 +201,8 @@ def __init__(self, session: ManagerSession): self.configuration_software_actions = ConfigurationSoftwareActions(session) self.configuration_disaster_recovery = ConfigurationDisasterRecovery(session) self.monitoring_device_details = MonitoringDeviceDetails(session) + self.monitoring_security_policy = MonitoringSecurityPolicy(session) + self.monitoring_server_info = ServerInfo(session) self.monitoring_status = MonitoringStatus(session) self.sdavc_cloud_connector = SDAVCCloudConnector(session) self.tenant_backup_restore = TenantBackupRestore(session) @@ -211,3 +216,4 @@ def __init__(self, session: ManagerSession): self.misc = MiscellaneousEndpoints(session) self.real_time_monitoring = RealTimeMonitoringContainer(session) self.certificate_management_device = CertificateManagementDevice(session) + self.url_monitoring = UrlMonitoring(session) diff --git a/catalystwan/endpoints/monitoring_device_details.py b/catalystwan/endpoints/monitoring/device_details.py similarity index 51% rename from catalystwan/endpoints/monitoring_device_details.py rename to catalystwan/endpoints/monitoring/device_details.py index ef533365..98afa70e 100644 --- a/catalystwan/endpoints/monitoring_device_details.py +++ b/catalystwan/endpoints/monitoring/device_details.py @@ -3,7 +3,7 @@ # mypy: disable-error-code="empty-body" from typing import List, Optional -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, get from catalystwan.typed_list import DataSequence @@ -20,60 +20,92 @@ class Tier(BaseModel): Since vManage 20.12 version, object has been renamed to "Resource Profile". """ - name: str = Field(alias="tierName") + model_config = ConfigDict(populate_by_name=True) + name: str = Field(serialization_alias="tierName", validation_alias="tierName") vpn: int - rid: int = Field(alias="@rid") - ipv4_route_limit_type: Optional[str] = Field(alias="ipv4RouteLimitType") - ipv4_route_limit_threshold: Optional[int] = Field(alias="ipv4RouteLimitThreshold") - ipv4_route_limit: Optional[int] = Field(alias="ipv4RouteLimit") - ipv6_route_limit_type: Optional[str] = Field(alias="ipv6RouteLimitType") - ipv6_route_limit_threshold: Optional[int] = Field(alias="ipv6RouteLimitThreshold") - ipv6_route_limit: Optional[int] = Field(alias="ipv6RouteLimit") + rid: int = Field(serialization_alias="@rid", validation_alias="@rid") + ipv4_route_limit_type: Optional[str] = Field( + default=None, serialization_alias="ipv4RouteLimitType", validation_alias="ipv4RouteLimitType" + ) + ipv4_route_limit_threshold: Optional[int] = Field( + default=None, serialization_alias="ipv4RouteLimitThreshold", validation_alias="ipv4RouteLimitThreshold" + ) + ipv4_route_limit: Optional[int] = Field( + default=None, serialization_alias="ipv4RouteLimit", validation_alias="ipv4RouteLimit" + ) + ipv6_route_limit_type: Optional[str] = Field( + default=None, serialization_alias="ipv6RouteLimitType", validation_alias="ipv6RouteLimitType" + ) + ipv6_route_limit_threshold: Optional[int] = Field( + default=None, serialization_alias="ipv6RouteLimitThreshold", validation_alias="ipv6RouteLimitThreshold" + ) + ipv6_route_limit: Optional[int] = Field( + default=None, serialization_alias="ipv6RouteLimit", validation_alias="ipv6RouteLimit" + ) tlocs: List[TLOC] = Field(default=[]) # New in 20.12 version - nat_session_limit: Optional[int] = Field(alias="natSessionLimit") + nat_session_limit: Optional[int] = Field( + default=None, serialization_alias="natSessionLimit", validation_alias="natSessionLimit" + ) class DeviceData(BaseModel): - board_serial: Optional[str] = Field(None, alias="board-serial") - certificate_validity: Optional[str] = Field(None, alias="certificate-validity") - connected_vmanages: Optional[List[str]] = Field(None, alias="connectedVManages") - control_connections: Optional[str] = Field(None, alias="controlConnections") - device_groups: Optional[List[str]] = Field(None, alias="device-groups") - device_model: Optional[str] = Field(None, alias="device-model") - device_os: Optional[str] = Field(None, alias="device-os") - device_type: Optional[str] = Field(None, alias="device-type") - device_id: str = Field(alias="deviceId") - domain_id: Optional[str] = Field(None, alias="domain-id") - host_name: Optional[str] = Field(None, alias="host-name") - is_device_geo_data: Optional[bool] = Field(None, alias="isDeviceGeoData") - lastupdated: Optional[str] = None + # Field "model_sku" has conflict with protected namespace "model_" + model_config = ConfigDict(populate_by_name=True, protected_namespaces=()) + board_serial: Optional[str] = Field( + default=None, serialization_alias="board-serial", validation_alias="board-serial" + ) + certificate_validity: Optional[str] = Field( + default=None, serialization_alias="certificate-validity", validation_alias="certificate-validity" + ) + connected_vmanages: Optional[List[str]] = Field( + default=None, serialization_alias="connectedVManages", validation_alias="connectedVManages" + ) + control_connections: Optional[str] = Field( + default=None, serialization_alias="controlConnections", validation_alias="controlConnections" + ) + device_groups: Optional[List[str]] = Field( + default=None, serialization_alias="device-groups", validation_alias="device-groups" + ) + device_model: Optional[str] = Field( + default=None, serialization_alias="device-model", validation_alias="device-model" + ) + device_os: Optional[str] = Field(default=None, serialization_alias="device-os", validation_alias="device-os") + device_type: Optional[str] = Field(default=None, serialization_alias="device-type", validation_alias="device-type") + device_id: str = Field(serialization_alias="deviceId", validation_alias="deviceId") + domain_id: Optional[str] = Field(default=None, serialization_alias="domain-id", validation_alias="domain-id") + host_name: Optional[str] = Field(default=None, serialization_alias="host-name", validation_alias="host-name") + is_device_geo_data: Optional[bool] = Field( + default=None, serialization_alias="isDeviceGeoData", validation_alias="isDeviceGeoData" + ) + lastupdated: Optional[int] = None latitude: Optional[str] = None - layout_level: Optional[int] = Field(None, alias="layoutLevel") - local_system_ip: Optional[str] = Field(None, alias="local-system-ip") + layout_level: Optional[int] = Field(default=None, serialization_alias="layoutLevel", validation_alias="layoutLevel") + local_system_ip: Optional[str] = Field( + default=None, serialization_alias="local-system-ip", validation_alias="local-system-ip" + ) longitude: Optional[str] = None - max_controllers: Optional[str] = Field(None, alias="max-controllers") + max_controllers: Optional[str] = Field( + default=None, serialization_alias="max-controllers", validation_alias="max-controllers" + ) model_sku: Optional[str] = None personality: Optional[str] = None platform: Optional[str] = None reachability: Optional[str] = None - site_id: Optional[str] = Field(None, alias="site-id") + site_id: Optional[str] = Field(default=None, serialization_alias="site-id", validation_alias="site-id") state: Optional[str] = None state_description: Optional[str] = None status: Optional[str] = None - status_order: Optional[str] = Field(None, alias="statusOrder") - system_ip: Optional[str] = Field(None, alias="system-ip") + status_order: Optional[int] = Field(default=None, serialization_alias="statusOrder", validation_alias="statusOrder") + system_ip: Optional[str] = Field(default=None, serialization_alias="system-ip", validation_alias="system-ip") testbed_mode: Optional[bool] = None timezone: Optional[str] = None total_cpu_count: Optional[str] = None - uptime_date: Optional[str] = Field(None, alias="uptime-date") + uptime_date: Optional[int] = Field(default=None, serialization_alias="uptime-date", validation_alias="uptime-date") uuid: Optional[str] = None validity: Optional[str] = None version: Optional[str] = None - class Config: - allow_population_by_field_name = True - class MonitoringDeviceDetails(APIEndpoints): def add_tier(self): diff --git a/catalystwan/endpoints/monitoring/security_policy.py b/catalystwan/endpoints/monitoring/security_policy.py new file mode 100644 index 00000000..9f529101 --- /dev/null +++ b/catalystwan/endpoints/monitoring/security_policy.py @@ -0,0 +1,12 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + +# mypy: disable-error-code="empty-body" + +from catalystwan.endpoints import APIEndpoints, get +from catalystwan.models.monitoring.security_policy import SecurityPolicyDeviceList + + +class MonitoringSecurityPolicy(APIEndpoints): + @get("/security/policy/devicelist", "data") + def get_device_list(self) -> SecurityPolicyDeviceList: + ... diff --git a/catalystwan/endpoints/monitoring/server_info.py b/catalystwan/endpoints/monitoring/server_info.py new file mode 100644 index 00000000..a7e0b902 --- /dev/null +++ b/catalystwan/endpoints/monitoring/server_info.py @@ -0,0 +1,12 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + +# mypy: disable-error-code="empty-body" + +from catalystwan.endpoints import APIEndpoints, get +from catalystwan.models.monitoring.server_info import ServerInfoResponse + + +class ServerInfo(APIEndpoints): + @get("/server/info") + def get_server_info(self) -> ServerInfoResponse: + ... diff --git a/catalystwan/endpoints/monitoring_status.py b/catalystwan/endpoints/monitoring/status.py similarity index 100% rename from catalystwan/endpoints/monitoring_status.py rename to catalystwan/endpoints/monitoring/status.py diff --git a/catalystwan/endpoints/sdavc_cloud_connector.py b/catalystwan/endpoints/sdavc_cloud_connector.py index c674c9ec..db13ee4a 100644 --- a/catalystwan/endpoints/sdavc_cloud_connector.py +++ b/catalystwan/endpoints/sdavc_cloud_connector.py @@ -4,18 +4,25 @@ from typing import Optional -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, get class CloudConnector(BaseModel): - cloud_enabled: Optional[bool] = Field(default=False, alias="cloudEnabled") - client_id: Optional[str] = Field(default=None, alias="clientId") - client_secret: Optional[str] = Field(default=None, alias="clientSecret") - org_name: Optional[str] = Field(default=None, alias="orgName") + model_config = ConfigDict(populate_by_name=True) + cloud_enabled: Optional[bool] = Field( + default=False, serialization_alias="cloudEnabled", validation_alias="cloudEnabled" + ) + client_id: Optional[str] = Field(default=None, serialization_alias="clientId", validation_alias="clientId") + client_secret: Optional[str] = Field( + default=None, serialization_alias="clientSecret", validation_alias="clientSecret" + ) + org_name: Optional[str] = Field(default=None, serialization_alias="orgName", validation_alias="orgName") affinity: Optional[str] = None - telemetry_enabled: Optional[bool] = Field(default=None, alias="telemetryEnabled") + telemetry_enabled: Optional[bool] = Field( + default=None, serialization_alias="telemetryEnabled", validation_alias="telemetryEnabled" + ) class SDAVCCloudConnector(APIEndpoints): diff --git a/catalystwan/endpoints/tenant_backup_restore.py b/catalystwan/endpoints/tenant_backup_restore.py index bd022cbe..ca03872c 100644 --- a/catalystwan/endpoints/tenant_backup_restore.py +++ b/catalystwan/endpoints/tenant_backup_restore.py @@ -3,7 +3,7 @@ # mypy: disable-error-code="empty-body" from typing import List -from pydantic.v1 import BaseModel +from pydantic import BaseModel from catalystwan.endpoints import APIEndpoints, get, view from catalystwan.utils.session_type import ProviderAsTenantView, TenantView diff --git a/catalystwan/endpoints/tenant_management.py b/catalystwan/endpoints/tenant_management.py index d41b80ef..c17a41b0 100644 --- a/catalystwan/endpoints/tenant_management.py +++ b/catalystwan/endpoints/tenant_management.py @@ -3,7 +3,7 @@ # mypy: disable-error-code="empty-body" from typing import Dict, List, Optional -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field from catalystwan.endpoints import APIEndpoints, delete, get, post, put, versions, view from catalystwan.models.tenant import Tenant @@ -16,8 +16,9 @@ class TenantDeleteRequest(BaseModel): class TenantBulkDeleteRequest(BaseModel): + model_config = ConfigDict(populate_by_name=True) password: str - tenant_id_list: List[str] = Field(alias="tenantIdList") + tenant_id_list: List[str] = Field(serialization_alias="tenantIdList", validation_alias="tenantIdList") class TenantTaskId(BaseModel): @@ -31,15 +32,17 @@ class CertificatesStatus(BaseModel): class ControlStatus(BaseModel): - control_up: int = Field(alias="controlUp") + model_config = ConfigDict(populate_by_name=True) + control_up: int = Field(serialization_alias="controlUp", validation_alias="controlUp") partial: int - control_down: int = Field(alias="controlDown") + control_down: int = Field(serialization_alias="controlDown", validation_alias="controlDown") class SiteHealth(BaseModel): - full_connectivity: int = Field(alias="fullConnectivity") - partial_connectivity: int = Field(alias="partialConnectivity") - no_connectivity: int = Field(alias="noConnectivity") + model_config = ConfigDict(populate_by_name=True) + full_connectivity: int = Field(serialization_alias="fullConnectivity", validation_alias="fullConnectivity") + partial_connectivity: int = Field(serialization_alias="partialConnectivity", validation_alias="partialConnectivity") + no_connectivity: int = Field(serialization_alias="noConnectivity", validation_alias="noConnectivity") class vEdgeHealth(BaseModel): @@ -54,22 +57,32 @@ class vSmartStatus(BaseModel): class TenantStatus(BaseModel): - tenant_id: str = Field(alias="tenantId") - tenant_name: str = Field(alias="tenantName") - control_status: ControlStatus = Field(alias="controlStatus") - site_health: SiteHealth = Field(alias="siteHealth") - vedge_health: vEdgeHealth = Field(alias="vEdgeHealth") - vsmart_status: vSmartStatus = Field(alias="vSmartStatus") + model_config = ConfigDict(populate_by_name=True) + tenant_id: str = Field(serialization_alias="tenantId", validation_alias="tenantId") + tenant_name: str = Field(serialization_alias="tenantName", validation_alias="tenantName") + control_status: ControlStatus = Field(serialization_alias="controlStatus", validation_alias="controlStatus") + site_health: SiteHealth = Field(serialization_alias="siteHealth", validation_alias="siteHealth") + vedge_health: vEdgeHealth = Field(serialization_alias="vEdgeHealth", validation_alias="vEdgeHealth") + vsmart_status: vSmartStatus = Field(serialization_alias="vSmartStatus", validation_alias="vSmartStatus") class TenantUpdateRequest(BaseModel): - tenant_id: str = Field(alias="tenantId") - subdomain: str = Field(alias="subDomain") + model_config = ConfigDict(populate_by_name=True) + tenant_id: str = Field(serialization_alias="tenantId", validation_alias="tenantId") + subdomain: str = Field(serialization_alias="subDomain", validation_alias="subDomain") desc: str - wan_edge_forecast: Optional[int] = Field(alias="wanEdgeForecast") - edge_connector_enable: Optional[bool] = Field(alias="edgeConnectorEnable") - edge_connector_system_ip: Optional[str] = Field(alias="edgeConnectorSystemIp") - edge_connector_tunnel_interface_name: Optional[str] = Field(alias="edgeConnectorTunnelInterfaceName") + wan_edge_forecast: Optional[int] = Field(serialization_alias="wanEdgeForecast", validation_alias="wanEdgeForecast") + edge_connector_enable: Optional[bool] = Field( + serialization_alias="edgeConnectorEnable", validation_alias="edgeConnectorEnable" + ) + edge_connector_system_ip: Optional[str] = Field( + default=None, serialization_alias="edgeConnectorSystemIp", validation_alias="edgeConnectorSystemIp" + ) + edge_connector_tunnel_interface_name: Optional[str] = Field( + default=None, + serialization_alias="edgeConnectorTunnelInterfaceName", + validation_alias="edgeConnectorTunnelInterfaceName", + ) @classmethod def from_tenant(cls, tenant: Tenant) -> "TenantUpdateRequest": @@ -87,25 +100,29 @@ def from_tenant(cls, tenant: Tenant) -> "TenantUpdateRequest": if not tenant.tenant_id: raise TypeError("tenantId required for update request") return TenantUpdateRequest( - tenantId=tenant.tenant_id, + tenant_id=tenant.tenant_id, desc=tenant.desc, - subDomain=tenant.subdomain, - wanEdgeForecast=tenant.wan_edge_forecast, - edgeConnectorEnable=tenant.edge_connector_enable, - edgeConnectorSystemIp=tenant.edge_connector_system_ip, - edgeConnectorTunnelInterfaceName=tenant.edge_connector_tunnel_interface_name, + subdomain=tenant.subdomain, + wan_edge_forecast=tenant.wan_edge_forecast, + edge_connector_enable=tenant.edge_connector_enable, + edge_connector_system_ip=tenant.edge_connector_system_ip, + edge_connector_tunnel_interface_name=tenant.edge_connector_tunnel_interface_name, ) class vSmartPlacementUpdateRequest(BaseModel): - src_vsmart_uuid: str = Field(alias="srcvSmartUuid") - dest_vsmart_uuid: str = Field(alias="destvSmartUuid") + model_config = ConfigDict(populate_by_name=True) + src_vsmart_uuid: str = Field(serialization_alias="srcvSmartUuid", validation_alias="srcvSmartUuid") + dest_vsmart_uuid: str = Field(serialization_alias="destvSmartUuid", validation_alias="destvSmartUuid") class vSmartTenantCapacity(BaseModel): - vsmart_uuid: str = Field(alias="vSmartUuid") - total_tenant_capacity: int = Field(alias="totalTenantCapacity") - current_tenant_count: int = Field(alias="currentTenantCount") + model_config = ConfigDict(populate_by_name=True) + vsmart_uuid: str = Field(serialization_alias="vSmartUuid", validation_alias="vSmartUuid") + total_tenant_capacity: int = Field( + serialization_alias="totalTenantCapacity", validation_alias="totalTenantCapacity" + ) + current_tenant_count: int = Field(serialization_alias="currentTenantCount", validation_alias="currentTenantCount") class vSmartTenantMap(BaseModel): @@ -113,7 +130,8 @@ class vSmartTenantMap(BaseModel): class vSessionId(BaseModel): - vsessionid: str = Field(alias="VSessionId") + model_config = ConfigDict(populate_by_name=True) + vsessionid: str = Field(serialization_alias="VSessionId", validation_alias="VSessionId") class TenantManagement(APIEndpoints): diff --git a/catalystwan/endpoints/tenant_migration.py b/catalystwan/endpoints/tenant_migration.py index 1bef10f6..d12b0b5c 100644 --- a/catalystwan/endpoints/tenant_migration.py +++ b/catalystwan/endpoints/tenant_migration.py @@ -2,9 +2,10 @@ # mypy: disable-error-code="empty-body" from pathlib import Path -from urllib.parse import parse_qsl, urlsplit +from typing import Any +from urllib.parse import parse_qs, urlsplit -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, ConfigDict, Field, model_validator from catalystwan.endpoints import APIEndpoints, CustomPayloadType, PreparedPayload, get, post, versions, view from catalystwan.models.tenant import TenantExport @@ -12,16 +13,27 @@ class MigrationTokenQueryParams(BaseModel): - migration_id: str = Field(alias="migrationId") + model_config = ConfigDict(populate_by_name=True, extra="allow") + migration_id: str = Field(serialization_alias="migrationId", validation_alias="migrationId") + + @model_validator(mode="before") + @classmethod + def single_migration_id_required(cls, values: Any): + migration_id = values.get("migrationId") + if isinstance(migration_id, list) and len(migration_id) == 1: + values["migrationId"] = migration_id[0] + return values class ExportInfo(BaseModel): - process_id: str = Field(alias="processId") + model_config = ConfigDict(populate_by_name=True) + process_id: str = Field(serialization_alias="processId", validation_alias="processId") class ImportInfo(BaseModel): - process_id: str = Field(alias="processId") - migration_token_url: str = Field(alias="migrationTokenURL") + model_config = ConfigDict(populate_by_name=True) + process_id: str = Field(serialization_alias="processId", validation_alias="processId") + migration_token_url: str = Field(serialization_alias="migrationTokenURL", validation_alias="migrationTokenURL") @property def migration_token_query(self) -> str: @@ -29,12 +41,12 @@ def migration_token_query(self) -> str: @property def migration_token_query_params(self) -> MigrationTokenQueryParams: - query = self.migration_token_query - return MigrationTokenQueryParams.parse_obj(parse_qsl(query)) + return MigrationTokenQueryParams.model_validate(parse_qs(self.migration_token_query)) class MigrationInfo(BaseModel): - process_id: str = Field(alias="processId") + model_config = ConfigDict(populate_by_name=True) + process_id: str = Field(serialization_alias="processId", validation_alias="processId") class MigrationFile(CustomPayloadType): diff --git a/catalystwan/endpoints/url_monitoring.py b/catalystwan/endpoints/url_monitoring.py new file mode 100644 index 00000000..b3766815 --- /dev/null +++ b/catalystwan/endpoints/url_monitoring.py @@ -0,0 +1,26 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + +# mypy: disable-error-code="empty-body" + + +from catalystwan.endpoints import APIEndpoints, delete, get, post, put +from catalystwan.models.url_monitoring import DeleteUrlMonitorRequest, UrlMonitoringConfig, UrlMonitoringInfo +from catalystwan.typed_list import DataSequence + + +class UrlMonitoring(APIEndpoints): + @get("/url/monitor") + def get_url_monitor(self) -> DataSequence[UrlMonitoringInfo]: + ... + + @post("/url/monitor") + def add_url_monitor(self, payload: UrlMonitoringConfig) -> None: + ... + + @put("/url/monitor") + def update_url_monitor(self, payload: UrlMonitoringConfig) -> None: + ... + + @delete("/url/monitor") + def delete_url_monitor(self, params: DeleteUrlMonitorRequest) -> None: + ... diff --git a/catalystwan/exceptions.py b/catalystwan/exceptions.py index cfdf962b..7ebdc468 100644 --- a/catalystwan/exceptions.py +++ b/catalystwan/exceptions.py @@ -1,6 +1,6 @@ # Copyright 2023 Cisco Systems, Inc. and its affiliates -from typing import Any, Optional, Union +from typing import Union from pydantic import BaseModel from requests import HTTPError, RequestException @@ -19,16 +19,18 @@ class CatalystwanException(Exception): class ManagerRequestException(RequestException, CatalystwanException): """Exception raised when there is ambigous problem during sending of request to Manager""" - def __init__(self, *args, **kwargs): - """Initialize RequestException with `request` and `response` objects.""" - super().__init__(*args, **kwargs) - class ManagerHTTPError(HTTPError, ManagerRequestException): - def __init__(self, *, error_info: Optional[ManagerErrorInfo], request: Any, response: Any): + def __init__(self, *args, error_info: ManagerErrorInfo, **kwargs): """Initialize RequestException with `error_info`, `request` and `response` objects.""" self.info = error_info - super().__init__(request=request, response=response) + info_str = str(self.info) + _args = args + if not _args: + _args = (info_str,) + else: + _args = (str(_args[0]) + "\n" + info_str,) + _args[1:] + super().__init__(*_args, **kwargs) class DefaultPasswordError(CatalystwanException): diff --git a/catalystwan/integration_tests/test_find_template_values.py b/catalystwan/integration_tests/test_find_template_values.py index b650ecd1..b7763a00 100644 --- a/catalystwan/integration_tests/test_find_template_values.py +++ b/catalystwan/integration_tests/test_find_template_values.py @@ -1,3 +1,5 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + import json import os import unittest diff --git a/catalystwan/models/configuration/feature_profile/README.md b/catalystwan/models/configuration/feature_profile/README.md index 4afbef96..43034e25 100644 --- a/catalystwan/models/configuration/feature_profile/README.md +++ b/catalystwan/models/configuration/feature_profile/README.md @@ -6,7 +6,7 @@ This README document provides guidelines on creating configuration groups within Cellular controller Parcel will be used for example purposes. Please change the parcel according to which one you are implementing. -1. Add new endpoints following the guide: https://github.com/CiscoDevNet/catalystwan/blob/main/CONTRIBUTING.md +1. Add new endpoints following the guide: https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/CONTRIBUTING.md 2. Download a schema with new endpoint: ```python @versions(supported_versions=(">=20.9"), raises=False) diff --git a/catalystwan/models/feature_profile_parcel.py b/catalystwan/models/feature_profile_parcel.py index c12ddf45..9eb9b368 100644 --- a/catalystwan/models/feature_profile_parcel.py +++ b/catalystwan/models/feature_profile_parcel.py @@ -2,7 +2,7 @@ from typing import Optional -from pydantic.v1 import BaseModel, Field +from pydantic import BaseModel, Field class FullConfig(BaseModel): @@ -10,6 +10,6 @@ class FullConfig(BaseModel): class FullConfigParcel(BaseModel): - name: str = Field(regex=r'^[^&<>! "]+$', min_length=1, max_length=128) + name: str = Field(pattern=r'^[^&<>! "]+$', min_length=1, max_length=128) description: Optional[str] data: FullConfig diff --git a/catalystwan/models/monitoring/security_policy.py b/catalystwan/models/monitoring/security_policy.py new file mode 100644 index 00000000..ea73fc6c --- /dev/null +++ b/catalystwan/models/monitoring/security_policy.py @@ -0,0 +1,16 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + +from typing import List + +from pydantic import BaseModel + + +class SecurityPolicyDeviceList(BaseModel): + amp_down: List[str] + amp_up: List[str] + ips_down: List[str] + ips_up: List[str] + urlf_down: List[str] + urlf_up: List[str] + zbfw_down: List[str] + zbfw_up: List[str] diff --git a/catalystwan/models/monitoring/server_info.py b/catalystwan/models/monitoring/server_info.py new file mode 100644 index 00000000..444cf4ab --- /dev/null +++ b/catalystwan/models/monitoring/server_info.py @@ -0,0 +1,12 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + +from pydantic import BaseModel, Field + + +class ServerInfoResponse(BaseModel): + """The response may contain an incorrect spelling "Achitecture".""" + + architecture: str = Field(..., alias="Achitecture") + available_processors: int = Field( + ..., serialization_alias="Available processors", validation_alias="Available processors" + ) diff --git a/catalystwan/models/policy/centralized.py b/catalystwan/models/policy/centralized.py index 50ad91b0..3a5af354 100644 --- a/catalystwan/models/policy/centralized.py +++ b/catalystwan/models/policy/centralized.py @@ -1,9 +1,9 @@ # Copyright 2023 Cisco Systems, Inc. and its affiliates -from typing import List, Literal, Optional, Union, overload +from typing import Any, List, Literal, Optional, Union, overload from uuid import UUID -from pydantic import BaseModel, ConfigDict, Field, field_validator +from pydantic import BaseModel, ConfigDict, Field, model_validator from typing_extensions import Annotated from catalystwan.models.policy.policy import ( @@ -26,6 +26,11 @@ ] +def assert_feature_defintion(definition: Any) -> "CentralizedPolicyDefinition": + assert isinstance(definition, CentralizedPolicyDefinition) + return definition + + class DataApplicationEntry(BaseModel): model_config = ConfigDict(populate_by_name=True) direction: TrafficDataDirection = "service" @@ -161,12 +166,27 @@ class MeshPolicyItem(AssemblyItemBase): type: Literal["mesh"] = "mesh" +class AppRoutePolicyItem(AssemblyItemBase): + type: Literal["appRoute"] = "appRoute" + + +class CFlowDPolicyItem(AssemblyItemBase): + type: Literal["cflowd"] = "cflowd" + + +class VpnMembershipGroupPolicyItem(AssemblyItemBase): + type: Literal["vpnMembershipGroup"] = "vpnMembershipGroup" + + AnyAssemblyItem = Annotated[ Union[ TrafficDataPolicyItem, ControlPolicyItem, MeshPolicyItem, HubAndSpokePolicyItem, + AppRoutePolicyItem, + CFlowDPolicyItem, + VpnMembershipGroupPolicyItem, ], Field(discriminator="type"), ] @@ -181,44 +201,67 @@ class CentralizedPolicyDefinition(PolicyDefinition): class CentralizedPolicy(PolicyCreationPayload): - policy_definition: CentralizedPolicyDefinition = Field( + policy_definition: Union[CentralizedPolicyDefinition, str] = Field( default=CentralizedPolicyDefinition(), serialization_alias="policyDefinition", validation_alias="policyDefinition", ) - policy_type: Literal["feature"] = Field( + policy_type: Literal["feature", "cli"] = Field( default="feature", serialization_alias="policyType", validation_alias="policyType" ) def add_traffic_data_policy(self, traffic_data_policy_id: UUID) -> TrafficDataPolicyItem: + policy_definition = assert_feature_defintion(self.policy_definition) item = TrafficDataPolicyItem(definition_id=traffic_data_policy_id) - self.policy_definition.assembly.append(item) + policy_definition.assembly.append(item) return item def add_control_policy(self, control_policy_id: UUID) -> ControlPolicyItem: + policy_definition = assert_feature_defintion(self.policy_definition) item = ControlPolicyItem(definition_id=control_policy_id) - self.policy_definition.assembly.append(item) + policy_definition.assembly.append(item) return item def add_mesh_policy(self, mesh_policy_id: UUID) -> None: - self.policy_definition.assembly.append(MeshPolicyItem(definition_id=mesh_policy_id)) + policy_definition = assert_feature_defintion(self.policy_definition) + policy_definition.assembly.append(MeshPolicyItem(definition_id=mesh_policy_id)) def add_hub_and_spoke_policy(self, hub_and_spoke_policy_id: UUID) -> None: - self.policy_definition.assembly.append(HubAndSpokePolicyItem(definition_id=hub_and_spoke_policy_id)) + policy_definition = assert_feature_defintion(self.policy_definition) + policy_definition.assembly.append(HubAndSpokePolicyItem(definition_id=hub_and_spoke_policy_id)) - @field_validator("policy_definition", mode="before") + @model_validator(mode="before") @classmethod - def try_parse(cls, policy_definition): - # this is needed because GET /template/policy/vsmart contains string in policyDefinition field + def try_parse_policy_definition_string(cls, values): + # GET /template/policy/vsmart contains string in policyDefinition field # while POST /template/policy/vsmart requires a regular object # it makes sense to reuse that model for both requests and present parsed data to the user - if isinstance(policy_definition, str): - return CentralizedPolicyDefinition.parse_raw(policy_definition) - return policy_definition + # This is only applicable for "feature" policy type + # when we are trying to deserialize "policyDefinition" field obtained from remote as string + json_policy_type = values.get("policyType") + json_policy_definition = values.get("policyDefinition") + if json_policy_type == "feature": + if isinstance(json_policy_definition, str): + values["policyDefinition"] = CentralizedPolicyDefinition.model_validate_json(json_policy_definition) + else: + values["policyDefinition"] = CentralizedPolicyDefinition() + return values + + @model_validator(mode="after") + def check_definition_content_by_type(self): + if self.policy_type == "cli": + assert isinstance( + self.policy_definition, str + ), "policy definition must be provided as string for cli policy" + elif self.policy_type == "feature": + assert isinstance( + self.policy_definition, CentralizedPolicyDefinition + ), "policy definition must be provided as CentralizedPolicyDefinition object for feature policy" + return self class CentralizedPolicyEditPayload(PolicyEditPayload, CentralizedPolicy): - rid: Optional[str] = Field(default=None, serialization_alias="@rid", validation_alias="@rid") + rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid") class CentralizedPolicyInfo(PolicyInfo, CentralizedPolicyEditPayload): diff --git a/catalystwan/models/policy/policy.py b/catalystwan/models/policy/policy.py index 05a1296e..72cf27a8 100644 --- a/catalystwan/models/policy/policy.py +++ b/catalystwan/models/policy/policy.py @@ -1,7 +1,7 @@ # Copyright 2023 Cisco Systems, Inc. and its affiliates import datetime -from typing import List, Literal, Optional, Sequence +from typing import List, Literal, Optional, Sequence, Union from uuid import UUID from pydantic import BaseModel, ConfigDict, Field @@ -70,8 +70,9 @@ class PolicyCreationPayload(BaseModel): default="default description", serialization_alias="policyDescription", validation_alias="policyDescription" ) policy_type: str = Field(serialization_alias="policyType", validation_alias="policyType") - policy_definition: PolicyDefinition = Field( - serialization_alias="policyDefinition", validation_alias="policyDefinition" + policy_definition: Union[PolicyDefinition, str] = Field( + serialization_alias="policyDefinition", + validation_alias="policyDefinition", ) is_policy_activated: bool = Field( default=False, serialization_alias="isPolicyActivated", validation_alias="isPolicyActivated" diff --git a/catalystwan/models/tenant.py b/catalystwan/models/tenant.py index 8a80506d..61743f32 100644 --- a/catalystwan/models/tenant.py +++ b/catalystwan/models/tenant.py @@ -3,66 +3,103 @@ from datetime import datetime from typing import Dict, List, Optional, Union -from pydantic.v1 import BaseModel, Field, IPvAnyAddress +from pydantic import BaseModel, ConfigDict, Field, IPvAnyAddress class MTEdge(BaseModel): + model_config = ConfigDict(populate_by_name=True) uuid: str - configured_hostname: Optional[str] = Field(alias="configuredHostname") - configured_system_ip: Optional[IPvAnyAddress] = Field(alias="configuredSystemIP") - management_system_ip: Optional[IPvAnyAddress] = Field(alias="managementSystemIP") - device_model: Optional[str] = Field(alias="deviceModel") - device_type: Optional[str] = Field(alias="deviceType") + configured_hostname: Optional[str] = Field( + serialization_alias="configuredHostname", validation_alias="configuredHostname" + ) + configured_system_ip: Optional[IPvAnyAddress] = Field( + serialization_alias="configuredSystemIP", validation_alias="configuredSystemIP" + ) + management_system_ip: Optional[IPvAnyAddress] = Field( + serialization_alias="managementSystemIP", validation_alias="managementSystemIP" + ) + device_model: Optional[str] = Field(serialization_alias="deviceModel", validation_alias="deviceModel") + device_type: Optional[str] = Field(serialization_alias="deviceType", validation_alias="deviceType") class TenantVPNMap(BaseModel): - tenant_vpn: int = Field(alias="tenantVPN") - device_vpn: int = Field(alias="deviceVPN") + model_config = ConfigDict(populate_by_name=True) + tenant_vpn: int = Field(serialization_alias="tenantVPN", validation_alias="tenantVPN") + device_vpn: int = Field(serialization_alias="deviceVPN", validation_alias="deviceVPN") class Tenant(BaseModel): + model_config = ConfigDict(populate_by_name=True) name: str desc: str - org_name: str = Field(alias="orgName") - subdomain: str = Field(alias="subDomain") - flake_id: Optional[int] = Field(alias="flakeId") - vbond_address: Optional[str] = Field(alias="vBondAddress") - edge_connector_system_ip: Optional[str] = Field(alias="edgeConnectorSystemIp") - edge_connector_enable: Optional[bool] = Field(alias="edgeConnectorEnable") - vsmarts: Optional[List[str]] = Field(alias="vSmarts") - wan_edge_forecast: Optional[int] = Field(alias="wanEdgeForecast") - saml_sp_info: Optional[str] = Field(alias="samlSpInfo") - idp_map: Union[Dict, str, None] = Field(alias="idpMap") - config_db_cluster_service_name: Optional[str] = Field(alias="configDBClusterServiceName") - old_idp_map: Union[Dict, str, None] = Field(alias="oldIdpMap") - created_at: Optional[datetime] = Field(alias="createdAt") - rid: Optional[int] = Field(alias="@rid") - edge_connector_tunnel_interface_name: Optional[str] = Field(alias="edgeConnectorTunnelInterfaceName") - tenant_id: Optional[str] = Field(alias="tenantId") - sp_metadata: Optional[str] = Field(alias="spMetadata") - state: Optional[str] - wan_edge_present: Optional[int] = Field(alias="wanEdgePresent") - mt_edge: Optional[List[MTEdge]] = Field(alias="mtEdge") - mt_edge_count: Optional[int] = Field(alias="mtEdgeCount") - tenant_vpn_map: Optional[List[TenantVPNMap]] = Field(alias="tenantVPNmap") - tenant_provider_vpn_count: Optional[int] = Field(alias="tenantProviderVPNCount") - - class Config: - allow_population_by_field_name = True + org_name: str = Field(serialization_alias="orgName", validation_alias="orgName") + subdomain: str = Field(serialization_alias="subDomain", validation_alias="subDomain") + flake_id: Optional[int] = Field(default=None, serialization_alias="flakeId", validation_alias="flakeId") + vbond_address: Optional[str] = Field( + default=None, serialization_alias="vBondAddress", validation_alias="vBondAddress" + ) + edge_connector_system_ip: Optional[str] = Field( + default=None, serialization_alias="edgeConnectorSystemIp", validation_alias="edgeConnectorSystemIp" + ) + edge_connector_enable: Optional[bool] = Field( + default=None, serialization_alias="edgeConnectorEnable", validation_alias="edgeConnectorEnable" + ) + vsmarts: Optional[List[str]] = Field(default=None, serialization_alias="vSmarts", validation_alias="vSmarts") + wan_edge_forecast: Optional[int] = Field( + default=None, serialization_alias="wanEdgeForecast", validation_alias="wanEdgeForecast" + ) + saml_sp_info: Optional[str] = Field(default=None, serialization_alias="samlSpInfo", validation_alias="samlSpInfo") + idp_map: Union[Dict, str, None] = Field(default=None, serialization_alias="idpMap", validation_alias="idpMap") + config_db_cluster_service_name: Optional[str] = Field( + default=None, serialization_alias="configDBClusterServiceName", validation_alias="configDBClusterServiceName" + ) + old_idp_map: Union[Dict, str, None] = Field( + default=None, serialization_alias="oldIdpMap", validation_alias="oldIdpMap" + ) + created_at: Optional[datetime] = Field(default=None, serialization_alias="createdAt", validation_alias="createdAt") + rid: Optional[int] = Field(default=None, serialization_alias="@rid", validation_alias="@rid") + edge_connector_tunnel_interface_name: Optional[str] = Field( + default=None, + serialization_alias="edgeConnectorTunnelInterfaceName", + validation_alias="edgeConnectorTunnelInterfaceName", + ) + tenant_id: Optional[str] = Field(default=None, serialization_alias="tenantId", validation_alias="tenantId") + sp_metadata: Optional[str] = Field(default=None, serialization_alias="spMetadata", validation_alias="spMetadata") + state: Optional[str] = None + wan_edge_present: Optional[int] = Field( + default=None, serialization_alias="wanEdgePresent", validation_alias="wanEdgePresent" + ) + mt_edge: Optional[List[MTEdge]] = Field(default=None, serialization_alias="mtEdge", validation_alias="mtEdge") + mt_edge_count: Optional[int] = Field( + default=None, serialization_alias="mtEdgeCount", validation_alias="mtEdgeCount" + ) + tenant_vpn_map: Optional[List[TenantVPNMap]] = Field( + default=None, serialization_alias="tenantVPNmap", validation_alias="tenantVPNmap" + ) + tenant_provider_vpn_count: Optional[int] = Field( + default=None, serialization_alias="tenantProviderVPNCount", validation_alias="tenantProviderVPNCount" + ) class TenantExport(BaseModel): + model_config = ConfigDict(populate_by_name=True) name: str desc: str - org_name: str = Field(alias="orgName") - subdomain: str = Field(alias="subDomain") - wan_edge_forecast: Optional[int] = Field(alias="wanEdgeForecast") + org_name: str = Field(serialization_alias="orgName", validation_alias="orgName") + subdomain: str = Field(serialization_alias="subDomain", validation_alias="subDomain") + wan_edge_forecast: Optional[int] = Field( + default=None, serialization_alias="wanEdgeForecast", validation_alias="wanEdgeForecast" + ) is_destination_overlay_mt: Optional[bool] = Field( - alias="isDestinationOverlayMT", description="required starting from 20.13" + default=None, + serialization_alias="isDestinationOverlayMT", + validation_alias="isDestinationOverlayMT", + description="required starting from 20.13", ) migration_key: Optional[str] = Field( - alias="migrationKey", regex=r"^[a-zA-Z0-9]{8,32}$", description="required starting from 20.13" + default=None, + serialization_alias="migrationKey", + validation_alias="migrationKey", + pattern=r"^[a-zA-Z0-9]{8,32}$", + description="required starting from 20.13", ) - - class Config: - allow_population_by_field_name = True diff --git a/catalystwan/models/url_monitoring.py b/catalystwan/models/url_monitoring.py new file mode 100644 index 00000000..c83b3e65 --- /dev/null +++ b/catalystwan/models/url_monitoring.py @@ -0,0 +1,28 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + +from typing import Optional + +from pydantic import BaseModel, Field + + +class UrlMonitoringInfo(BaseModel): + url: Optional[str] = None + threshold: Optional[int] = None + alarm_raised: Optional[bool] = Field( + default=None, serialization_alias="lastUpdatedBy", validation_alias="lastUpdatedBy" + ) + + +class UrlMonitoringConfig(BaseModel): + url: str = Field(..., examples=["/client/server/ready"], description="URL registered for monitoring requests.") + threshold: int = Field( + ge=10, + le=100, + title="Threshold", + description="vManage alarm is raised after reaching the threshold. " + "Threshold should be within a range of 10 and 100 inclusive.", + ) + + +class DeleteUrlMonitorRequest(BaseModel): + url: str = Field(..., examples=["/client/server/ready"], description="URL registered for monitoring requests.") diff --git a/catalystwan/response.py b/catalystwan/response.py index 19ebdb48..1524be66 100644 --- a/catalystwan/response.py +++ b/catalystwan/response.py @@ -8,8 +8,7 @@ from typing import Any, Callable, Dict, Optional, Sequence, Type, TypeVar, Union, cast from urllib.parse import urlparse -from pydantic import BaseModel as BaseModelV2 -from pydantic.v1 import BaseModel as BaseModelV1 +from pydantic import BaseModel from requests import PreparedRequest, Request, Response from requests.cookies import RequestsCookieJar from requests.exceptions import JSONDecodeError @@ -175,10 +174,10 @@ def info(self, history: bool = False) -> str: return response_history_debug(self, None) return response_debug(self, None) - def dataseq(self, cls: Type[T], sourcekey: Optional[str] = "data") -> DataSequence[T]: + def dataseq(self, cls: Type[T], sourcekey: Optional[str] = "data", validate: bool = True) -> DataSequence[T]: """Returns data contents from JSON payload parsed as DataSequence of Dataclass/BaseModel instances Args: - cls: Dataclass/BaseModelV1 subtype (eg. Devices) + cls: Dataclass/BaseModel subtype (eg. Devices) sourcekey: name of the JSON key from response payload to be parsed. If None whole JSON payload will be used Returns: @@ -195,13 +194,13 @@ def dataseq(self, cls: Type[T], sourcekey: Optional[str] = "data") -> DataSequen else: sequence = [cast(dict, data)] - if issubclass(cls, BaseModelV1): - return DataSequence(cls, [cls.parse_obj(item) for item in sequence]) # type: ignore - if issubclass(cls, BaseModelV2): - return DataSequence(cls, [cls.model_validate(item) for item in sequence]) # type: ignore + if issubclass(cls, BaseModel): + if validate: + return DataSequence(cls, [cls.model_validate(item) for item in sequence]) # type: ignore + return DataSequence(cls, [cls.model_construct(**item) for item in sequence]) # type: ignore return DataSequence(cls, [create_dataclass(cls, item) for item in sequence]) - def dataobj(self, cls: Type[T], sourcekey: Optional[str] = "data") -> T: + def dataobj(self, cls: Type[T], sourcekey: Optional[str] = "data", validate: bool = True) -> T: """Returns data contents from JSON payload parsed as Dataclass/BaseModel instance Args: cls: Dataclass/BaseModel subtype (eg. Devices) @@ -216,10 +215,10 @@ def dataobj(self, cls: Type[T], sourcekey: Optional[str] = "data") -> T: else: data = self.payload.json.get(sourcekey) - if issubclass(cls, BaseModelV1): - return cls.parse_obj(data) # type: ignore - if issubclass(cls, BaseModelV2): - return cls.model_validate(data) # type: ignore + if issubclass(cls, BaseModel): + if validate: + return cls.model_validate(data) # type: ignore[return-value] + return cls.model_construct(**data) # type: ignore[return-value] return create_dataclass(cls, data) def get_error_info(self) -> ManagerErrorInfo: diff --git a/catalystwan/session.py b/catalystwan/session.py index 29d878fc..a30c9e1d 100644 --- a/catalystwan/session.py +++ b/catalystwan/session.py @@ -4,9 +4,10 @@ import logging from enum import Enum +from functools import cached_property from pathlib import Path from time import monotonic, sleep -from typing import Any, Callable, ClassVar, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Any, Callable, ClassVar, Dict, List, Optional, Union from urllib.parse import urljoin, urlparse, urlunparse from packaging.version import Version # type: ignore @@ -15,10 +16,8 @@ from requests.exceptions import ConnectionError, HTTPError, RequestException from catalystwan import USER_AGENT -from catalystwan.api.api_container import APIContainer from catalystwan.endpoints import APIEndpointClient from catalystwan.endpoints.client import AboutInfo, ServerInfo -from catalystwan.endpoints.endpoints_container import APIEndpointContainter from catalystwan.exceptions import ( DefaultPasswordError, ManagerHTTPError, @@ -35,6 +34,10 @@ JSON = Union[Dict[str, "JSON"], List["JSON"], str, int, float, bool, None] +if TYPE_CHECKING: + from catalystwan.api.api_container import APIContainer + from catalystwan.endpoints.endpoints_container import APIEndpointContainter + class UserMode(str, Enum): PROVIDER = "provider" @@ -153,6 +156,7 @@ def __init__( port: Optional[int] = None, subdomain: Optional[str] = None, auth: Optional[AuthBase] = None, + validate_responses: bool = True, ): self.url = url self.port = port @@ -170,13 +174,26 @@ def __init__( super(ManagerSession, self).__init__() self.headers.update({"User-Agent": USER_AGENT}) self.__prepare_session(verify, auth) - self.api = APIContainer(self) - self.endpoints = APIEndpointContainter(self) self._platform_version: str = "" self._api_version: Version self._state: ManagerSessionState = ManagerSessionState.OPERATIVE self.restart_timeout: int = 1200 self.polling_requests_timeout: int = 10 + self._validate_responses = validate_responses + + @cached_property + def api(self) -> APIContainer: + from catalystwan.api.api_container import APIContainer + + self._api = APIContainer(self) + return self._api + + @cached_property + def endpoints(self) -> APIEndpointContainter: + from catalystwan.endpoints.endpoints_container import APIEndpointContainter + + self._endpoints = APIEndpointContainter(self) + return self._endpoints @property def state(self) -> ManagerSessionState: @@ -236,7 +253,7 @@ def login(self) -> ManagerSession: try: server_info = self.server() except DefaultPasswordError: - server_info = ServerInfo.parse_obj({}) + server_info = ServerInfo.model_construct(**{}) self.server_name = server_info.server @@ -259,7 +276,8 @@ def login(self) -> ManagerSession: self.logger.info( f"Logged to vManage({self.platform_version}) as {self.username}. The session type is {self.session_type}" ) - self.cookies.set("JSESSIONID", self.auth.set_cookie.get("JSESSIONID")) + if jsessionid := self.auth.set_cookie.get("JSESSIONID"): + self.cookies.set("JSESSIONID", jsessionid) return self def wait_server_ready(self, timeout: int, poll_period: int = 10) -> None: @@ -310,7 +328,7 @@ def elapsed() -> float: continue except RequestException as exception: self.logger.debug(self.response_trace(exception.response, exception.request)) - raise ManagerRequestException(request=exception.request, response=exception.response) + raise ManagerRequestException(*exception.args) raise ManagerReadyTimeout(f"Waiting for server ready took longer than {timeout} seconds.") @@ -327,7 +345,7 @@ def request(self, method, url, *args, **kwargs) -> ManagerResponse: self.state = ManagerSessionState.WAIT_SERVER_READY_AFTER_RESTART return self.request(method, url, *args, **kwargs) self.logger.debug(exception) - raise ManagerRequestException(request=exception.request, response=exception.response) + raise ManagerRequestException(*exception.args, request=exception.request, response=exception.response) if self.enable_relogin and response.jsessionid_expired and self.state == ManagerSessionState.OPERATIVE: self.logger.warning("Logging to session. Reason: expired JSESSIONID detected in response headers") @@ -342,7 +360,7 @@ def request(self, method, url, *args, **kwargs) -> ManagerResponse: except HTTPError as error: self.logger.debug(error) error_info = response.get_error_info() - raise ManagerHTTPError(error_info=error_info, request=error.request, response=error.response) + raise ManagerHTTPError(*error.args, error_info=error_info, request=error.request, response=error.response) return response def get_full_url(self, url_path: str) -> str: @@ -403,7 +421,7 @@ def get_tenant_id(self) -> str: Returns: Tenant UUID. """ - tenants = self.get("dataservice/tenant").dataseq(Tenant) + tenants = self.get("dataservice/tenant").dataseq(Tenant, validate=False) tenant = tenants.filter(subdomain=self.subdomain).single_or_default() if not tenant or not tenant.tenant_id: @@ -479,6 +497,14 @@ def platform_version(self, version: str): def api_version(self) -> Version: return self._api_version + @property + def validate_responses(self) -> bool: + return self._validate_responses + + @validate_responses.setter + def validate_responses(self, value: bool): + self._validate_responses = value + def __str__(self) -> str: return f"{self.username}@{self.base_url}" diff --git a/catalystwan/tests/test_admin_tech_api.py b/catalystwan/tests/test_admin_tech_api.py index 7716a04a..2a7788a2 100644 --- a/catalystwan/tests/test_admin_tech_api.py +++ b/catalystwan/tests/test_admin_tech_api.py @@ -63,7 +63,7 @@ def setUp(self): self.download_file = io.BytesIO(self.download_file_content.encode()) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_get(self, mock_session, mock_response): # Arrange mock_session.post.return_value = mock_response @@ -78,7 +78,7 @@ def test_get(self, mock_session, mock_response): self.assertIsInstance(admintechs[0], DeviceAdminTech) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_get_all(self, mock_session, mock_response): # Arrange mock_session.get.return_value = mock_response @@ -90,7 +90,7 @@ def test_get_all(self, mock_session, mock_response): self.assertEqual(len(admintechs), len(self.admin_tech_infos["data"])) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_generate(self, mock_session, mock_response): # Arrange mock_session.post.return_value = mock_response @@ -106,7 +106,7 @@ def test_generate(self, mock_session, mock_response): self.assertEqual(filename, self.admin_tech_generate_response["fileName"]) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_generate_in_progress_error_retry(self, mock_session, mock_response): # Arrange mock_session.post.return_value = mock_response @@ -124,7 +124,7 @@ def test_generate_in_progress_error_retry(self, mock_session, mock_response): self.assertEqual(mock_session.post.call_count, count) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_generate_error(self, mock_session, mock_response): # Arrange mock_session.post.return_value = mock_response @@ -142,7 +142,7 @@ def test_generate_error(self, mock_session, mock_response): mock_session.post.assert_called_once() @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_delete(self, mock_session, mock_response): # Arrange filename = self.admin_tech_generate_response["fileName"] @@ -155,17 +155,17 @@ def test_delete(self, mock_session, mock_response): mock_session.delete.assert_called_once_with(f"/dataservice/device/tools/admintech/{token_id}") @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_delete_token_not_found(self, mock_session, mock_response): # Arrange mock_session.get.return_value = mock_response mock_response.json.return_value = self.admin_tech_infos # Act/Assert with self.assertRaises(RequestTokenIdNotFound): - AdminTechAPI(mock_session).delete("fake-filename.tar.gz") + AdminTechAPI(mock_session).delete("fake-filename.tar.gz", timeout=0.01, interval=0.01) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_download(self, mock_session, mock_response): # Arrange filename = self.admin_tech_generate_response["fileName"] @@ -180,7 +180,7 @@ def test_download(self, mock_session, mock_response): self.assertEqual(download_path, Path(tmpdir) / filename) @patch("catalystwan.session.ManagerSession") - @patch("requests.Response") + @patch("catalystwan.response.ManagerResponse") def test_download_error(self, mock_session, mock_response): # Arrange mock_session.get.return_value = mock_response diff --git a/catalystwan/tests/test_devices_api.py b/catalystwan/tests/test_devices_api.py index 9c2f82b7..aaebfe40 100644 --- a/catalystwan/tests/test_devices_api.py +++ b/catalystwan/tests/test_devices_api.py @@ -10,7 +10,7 @@ from catalystwan.api.basic_api import DevicesAPI, DeviceStateAPI from catalystwan.dataclasses import BfdSessionData, Connection, Device, WanInterface from catalystwan.endpoints.endpoints_container import APIEndpointContainter -from catalystwan.endpoints.monitoring_device_details import DeviceData +from catalystwan.endpoints.monitoring.device_details import DeviceData from catalystwan.endpoints.real_time_monitoring.reboot_history import RebootEntry from catalystwan.exceptions import CatalystwanException from catalystwan.response import ManagerResponse @@ -116,7 +116,7 @@ def setUp(self) -> None: self.edges_dataseq = DataSequence(Device, [create_dataclass(Device, self.devices[3])]) self.system_ips_list = [device["local-system-ip"] for device in self.devices] self.ips_list = [device["deviceId"] for device in self.devices] - self.list_all_devices_resp = DataSequence(DeviceData, [DeviceData.parse_obj(dev) for dev in self.devices]) + self.list_all_devices_resp = DataSequence(DeviceData, [DeviceData.model_validate(dev) for dev in self.devices]) @patch.object(DevicesAPI, "get") def test_controllers(self, mock_devices): diff --git a/catalystwan/tests/test_endpoints.py b/catalystwan/tests/test_endpoints.py index 4bbc7ffb..0216bbb6 100644 --- a/catalystwan/tests/test_endpoints.py +++ b/catalystwan/tests/test_endpoints.py @@ -13,9 +13,7 @@ import pytest # type: ignore from packaging.version import Version # type: ignore from parameterized import parameterized # type: ignore -from pydantic import BaseModel as BaseModelV2 -from pydantic import Field as FieldV2 -from pydantic.v1 import BaseModel as BaseModelV1 +from pydantic import BaseModel, Field from typing_extensions import Annotated from catalystwan.endpoints import ( @@ -35,31 +33,19 @@ from catalystwan.utils.session_type import ProviderAsTenantView, ProviderView, TenantView -class BaseModelV1Example(BaseModelV1): +class BaseModelExample(BaseModel): id: str size: int capacity: float active: bool -class ParamsModelV1Example(BaseModelV1): - name: str - color: str - - -class BaseModelV2Example(BaseModelV2): - id: str - size: int - capacity: float - active: bool - - -class BaseModelV2Example2(BaseModelV2): +class BaseModelExample2(BaseModel): other_id: str active: bool -class ParamsModelV2Example(BaseModelV2): +class ParamsModelExample(BaseModel): name: str color: str @@ -88,17 +74,14 @@ def setUp(self): "active": True, } self.json_payload = json.dumps(self.dict_payload) - self.basemodel_v1_payload = BaseModelV1Example.parse_obj(self.dict_payload) - self.basemodel_v2_payload = BaseModelV2Example.model_validate(self.dict_payload) + self.basemodel_payload = BaseModelExample.model_validate(self.dict_payload) self.list_dict_payload = [self.dict_payload] * 2 self.dict_params = { "name": "purple", "color": "haze", } - self.basemodel_v1_params = ParamsModelV1Example.parse_obj(self.dict_params) - self.basemodel_v2_params = ParamsModelV2Example.model_validate(self.dict_params) - self.basemodel_v1_sequence_payload = [self.basemodel_v1_payload] * 2 - self.basemodel_v2_sequence_payload = [self.basemodel_v2_payload] * 2 + self.basemodel_params = ParamsModelExample.model_validate(self.dict_params) + self.basemodel_sequence_payload = [self.basemodel_payload] * 2 @parameterized.expand( [ @@ -203,25 +186,15 @@ def versions_decorated_method(self): assert str(allowed) in log.output[0] assert str(current_session) in log.output[0] - def test_basemodel_v1_payload(self): - self.endpoints._request("GET", f"/{__name__}", payload=self.basemodel_v1_payload) - _, kwargs = self.session_mock.request.call_args - assert json.loads(kwargs.get("data")) == self.dict_payload - @pytest.mark.filterwarnings("ignore::DeprecationWarning") - def test_basemodel_v2_payload(self): - self.endpoints._request("GET", f"/{__name__}", payload=self.basemodel_v2_payload) + def test_basemodel_payload(self): + self.endpoints._request("GET", f"/{__name__}", payload=self.basemodel_payload) _, kwargs = self.session_mock.request.call_args assert json.loads(kwargs.get("data")) == self.dict_payload - def test_basemodel_v1_sequence_payload(self): - self.endpoints._request("GET", f"/{__name__}", payload=self.basemodel_v1_sequence_payload) - _, kwargs = self.session_mock.request.call_args - assert json.loads(kwargs.get("data")) == self.list_dict_payload - @pytest.mark.filterwarnings("ignore::DeprecationWarning") - def test_basemodel_v2_sequence_payload(self): - self.endpoints._request("GET", f"/{__name__}", payload=self.basemodel_v2_sequence_payload) + def test_basemodel_sequence_payload(self): + self.endpoints._request("GET", f"/{__name__}", payload=self.basemodel_sequence_payload) _, kwargs = self.session_mock.request.call_args assert json.loads(kwargs.get("data")) == self.list_dict_payload @@ -281,14 +254,9 @@ def test_dict_params(self): _, kwargs = self.session_mock.request.call_args assert kwargs.get("params") == self.dict_params - def test_basemodel_v1_params(self): - self.endpoints._request("POST", f"/{__name__}", params=self.basemodel_v1_params) - _, kwargs = self.session_mock.request.call_args - assert kwargs.get("params") == self.dict_params - @pytest.mark.filterwarnings("ignore::DeprecationWarning") - def test_basemodel_v2_params(self): - self.endpoints._request("POST", f"/{__name__}", params=self.basemodel_v2_params) + def test_basemodel_params(self): + self.endpoints._request("POST", f"/{__name__}", params=self.basemodel_params) _, kwargs = self.session_mock.request.call_args assert kwargs.get("params") == self.dict_params @@ -321,7 +289,7 @@ def test_request_decorator_unsupported_composite_return_type(self): class TestAPI(APIEndpoints): @request("GET", "/v1/data") - def get_data(self) -> List[BaseModelV1Example]: # type: ignore [empty-body] + def get_data(self) -> List[BaseModelExample]: # type: ignore [empty-body] ... def test_request_decorator_unsupported_payload_type(self): @@ -345,40 +313,40 @@ def test_request_decorator_unsupported_payload_composite_type(self): class TestAPI(APIEndpoints): @request("POST", "/v1/data") - def get_data(self, payload: Dict[str, BaseModelV1Example]) -> None: # type: ignore [empty-body] + def get_data(self, payload: Dict[str, BaseModelExample]) -> None: # type: ignore [empty-body] ... @parameterized.expand( [ - (BaseModelV1Example, False, TypeSpecifier(True, None, BaseModelV1Example, None, False, False)), - (List[BaseModelV1Example], False, TypeSpecifier(True, list, BaseModelV1Example, None, False, False)), - (Optional[BaseModelV1Example], False, TypeSpecifier(True, None, BaseModelV1Example, None, False, True)), + (BaseModelExample, False, TypeSpecifier(True, None, BaseModelExample, None, False, False)), + (List[BaseModelExample], False, TypeSpecifier(True, list, BaseModelExample, None, False, False)), + (Optional[BaseModelExample], False, TypeSpecifier(True, None, BaseModelExample, None, False, True)), ( - Optional[List[BaseModelV1Example]], + Optional[List[BaseModelExample]], False, - TypeSpecifier(True, list, BaseModelV1Example, None, False, True), + TypeSpecifier(True, list, BaseModelExample, None, False, True), ), - (List[Optional[BaseModelV1Example]], True, None), - (List[BaseModelV2Example], False, TypeSpecifier(True, list, BaseModelV2Example, None, False, False)), - (Optional[BaseModelV2Example], False, TypeSpecifier(True, None, BaseModelV2Example, None, False, True)), + (List[Optional[BaseModelExample]], True, None), + (List[BaseModelExample], False, TypeSpecifier(True, list, BaseModelExample, None, False, False)), + (Optional[BaseModelExample], False, TypeSpecifier(True, None, BaseModelExample, None, False, True)), ( - Optional[List[BaseModelV2Example]], + Optional[List[BaseModelExample]], False, - TypeSpecifier(True, list, BaseModelV2Example, None, False, True), + TypeSpecifier(True, list, BaseModelExample, None, False, True), ), - (List[Optional[BaseModelV2Example]], True, None), + (List[Optional[BaseModelExample]], True, None), (JSON, False, TypeSpecifier(True, None, None, None, True, False)), (str, False, TypeSpecifier(True, None, str, None, False, False)), (bytes, False, TypeSpecifier(True, None, bytes, None, False, False)), ( - Union[BaseModelV2Example, BaseModelV2Example2], + Union[BaseModelExample, BaseModelExample2], False, - TypeSpecifier(True, None, None, [BaseModelV2Example, BaseModelV2Example2], False, False), + TypeSpecifier(True, None, None, [BaseModelExample, BaseModelExample2], False, False), ), ( - Annotated[Union[BaseModelV2Example, BaseModelV2Example2], None], + Annotated[Union[BaseModelExample, BaseModelExample2], None], False, - TypeSpecifier(True, None, None, [BaseModelV2Example, BaseModelV2Example2], False, False), + TypeSpecifier(True, None, None, [BaseModelExample, BaseModelExample2], False, False), ), (None, True, None), ] @@ -427,24 +395,24 @@ def test_request_decorator_bogus_params(self): class TestAPI(APIEndpoints): @request("POST", "/v1/data/{id}") # type: ignore [empty-body] - def get_data(self, id: str, payload: BaseModelV1Example, bogus: str) -> None: + def get_data(self, id: str, payload: BaseModelExample, bogus: str) -> None: ... def test_request_decorator_accepts_optional_payload(self): # Arrange class TestAPIOptional(APIEndpoints): @request("GET", "/v1/data") - def get_data1(self, payload: Optional[BaseModelV1Example]) -> None: # type: ignore [empty-body] + def get_data1(self, payload: Optional[BaseModelExample]) -> None: # type: ignore [empty-body] ... class TestAPIUnion(APIEndpoints): @request("GET", "/v2/data") - def get_data2(self, payload: Union[None, BaseModelV1Example]) -> None: # type: ignore [empty-body] + def get_data2(self, payload: Union[None, BaseModelExample]) -> None: # type: ignore [empty-body] ... class TestAPIOptionalModelSequence(APIEndpoints): @request("GET", "/v3/data") - def get_data3(self, payload: Optional[List[BaseModelV1Example]]) -> None: # type: ignore [empty-body] + def get_data3(self, payload: Optional[List[BaseModelExample]]) -> None: # type: ignore [empty-body] ... def test_request_decorator_call_from_unsuitable_base_class(self): @@ -461,17 +429,17 @@ def test_request_decorator_call_with_positional_arguments(self): # Arrange class TestAPI(APIEndpoints): @request("GET", "/v1/data/{id}") - def get_data(self, id: str, payload: BaseModelV2Example) -> None: # type: ignore [empty-body] + def get_data(self, id: str, payload: BaseModelExample) -> None: # type: ignore [empty-body] ... api = TestAPI(self.session_mock) # Act - api.get_data("ID123", self.basemodel_v1_payload) + api.get_data("ID123", self.basemodel_payload) # Assert self.session_mock.request.assert_called_once_with( "GET", self.base_path + "/v1/data/ID123", - data=self.json_payload, + data=self.basemodel_payload.model_dump_json(), headers={"content-type": "application/json"}, ) @@ -480,20 +448,20 @@ def test_request_decorator_call_with_mixed_positional_arguments(self): class TestAPI(APIEndpoints): @request("GET", "/v2/{category}/items") def get_data( - self, payload: BaseModelV2Example, category: str, params: ParamsModelV1Example + self, payload: BaseModelExample, category: str, params: ParamsModelExample ) -> None: # type: ignore [empty-body] ... api = TestAPI(self.session_mock) # Act - api.get_data(self.basemodel_v1_payload, "clothes", self.basemodel_v1_params) + api.get_data(self.basemodel_payload, "clothes", self.basemodel_params) # Assert self.session_mock.request.assert_called_once_with( "GET", self.base_path + "/v2/clothes/items", - data=self.json_payload, + data=self.basemodel_payload.model_dump_json(), headers={"content-type": "application/json"}, - params=self.basemodel_v1_params, + params=self.basemodel_params.model_dump(), ) def test_request_decorator_call_with_keyword_arguments(self): @@ -501,20 +469,20 @@ def test_request_decorator_call_with_keyword_arguments(self): class TestAPI(APIEndpoints): @request("GET", "/v2/{category}/items") def get_data( - self, payload: BaseModelV2Example, category: str, params: ParamsModelV1Example + self, payload: BaseModelExample, category: str, params: ParamsModelExample ) -> None: # type: ignore [empty-body] ... api = TestAPI(self.session_mock) # Act - api.get_data(category="clothes", params=self.basemodel_v1_params, payload=self.basemodel_v1_payload) + api.get_data(category="clothes", params=self.basemodel_params, payload=self.basemodel_payload) # Assert self.session_mock.request.assert_called_once_with( "GET", self.base_path + "/v2/clothes/items", - data=self.json_payload, + data=self.basemodel_payload.model_dump_json(), headers={"content-type": "application/json"}, - params=self.basemodel_v1_params, + params=self.basemodel_params.model_dump(), ) def test_request_decorator_call_with_json_payload(self): @@ -540,7 +508,7 @@ def test_request_decorator_call_optional_model_payload(self): # Arrange class TestAPI(APIEndpoints): @request("PUT", "/v1/data/{id}") - def put_data(self, id: str, payload: Optional[BaseModelV1Example]) -> None: # type: ignore [empty-body] + def put_data(self, id: str, payload: Optional[BaseModelExample]) -> None: # type: ignore [empty-body] ... api = TestAPI(self.session_mock) @@ -556,31 +524,31 @@ def test_request_decorator_call_and_return_model(self): # Arrange class TestAPI(APIEndpoints): @request("GET", "/v1/items") - def get_data(self) -> BaseModelV1Example: # type: ignore [empty-body] + def get_data(self) -> BaseModelExample: # type: ignore [empty-body] ... - self.session_mock.request.return_value.dataobj = MagicMock(return_value=self.basemodel_v1_payload) + self.session_mock.request.return_value.dataobj = MagicMock(return_value=self.basemodel_payload) api = TestAPI(self.session_mock) # Act retval = api.get_data() # Assert self.session_mock.request.return_value.dataobj.assert_called_once() - assert retval == self.basemodel_v1_payload + assert retval == self.basemodel_payload def test_request_decorator_call_and_return_model_datasequece(self): # Arrange class TestAPI(APIEndpoints): @request("GET", "/v1/items") - def get_data(self) -> DataSequence[BaseModelV1Example]: # type: ignore [empty-body] + def get_data(self) -> DataSequence[BaseModelExample]: # type: ignore [empty-body] ... - self.session_mock.request.return_value.dataseq = MagicMock(return_value=self.basemodel_v1_sequence_payload) + self.session_mock.request.return_value.dataseq = MagicMock(return_value=self.basemodel_sequence_payload) api = TestAPI(self.session_mock) # Act retval = api.get_data() # Assert self.session_mock.request.return_value.dataseq.assert_called_once() - assert retval == self.basemodel_v1_sequence_payload + assert retval == self.basemodel_sequence_payload def test_request_decorator_call_and_return_str(self): # Arrange @@ -717,7 +685,7 @@ def test_no_mutable_state_when_calling_endpoint(self): class TestAPI(APIEndpoints): @request("GET", "/v2/{category}/items") def get_data( - self, payload: BaseModelV1Example, category: str, params: ParamsModelV1Example + self, payload: BaseModelExample, category: str, params: ParamsModelExample ) -> None: # type: ignore [empty-body] ... @@ -728,31 +696,31 @@ def get_data( {"id": "id2", "size": 120, "capacity": 1.9, "active": False}, ]: for params in [ - ParamsModelV1Example(name="submarine", color="yellow"), - ParamsModelV1Example(name="oyster", color="blue"), + ParamsModelExample(name="submarine", color="yellow"), + ParamsModelExample(name="oyster", color="blue"), ]: # Act - payload = BaseModelV1Example.parse_obj(dict_payload) + payload = BaseModelExample.model_validate(dict_payload) api.get_data(category=category, params=params, payload=payload) # Assert self.session_mock.request.assert_called_once_with( "GET", self.base_path + f"/v2/{category}/items", - data=json.dumps(dict_payload), + data=payload.model_dump_json(), headers={"content-type": "application/json"}, - params=params, + params=params.model_dump(), ) self.session_mock.reset_mock() - def test_request_decorator_call_with_defaults_arguments(self): + def test_request_decorator_call_with_default_arguments(self): # Arrange class TestAPI(APIEndpoints): @request("GET", "/v2/{category}/items") def get_data( self, - payload: BaseModelV1Example = self.basemodel_v1_payload, + payload: BaseModelExample = self.basemodel_payload, category: str = "default-category", - params: ParamsModelV1Example = self.basemodel_v1_params, + params: ParamsModelExample = self.basemodel_params, ) -> None: # type: ignore [empty-body] ... @@ -763,9 +731,9 @@ def get_data( self.session_mock.request.assert_called_once_with( "GET", self.base_path + "/v2/default-category/items", - data=self.json_payload, + data=self.basemodel_payload.model_dump_json(), headers={"content-type": "application/json"}, - params=self.basemodel_v1_params, + params=self.dict_params, ) def test_request_decorator_call_with_defaults_arguments_override(self): @@ -774,25 +742,25 @@ class TestAPI(APIEndpoints): @request("GET", "/v2/{category}/items") def get_data( self, - payload: BaseModelV1Example = self.basemodel_v1_payload, + payload: BaseModelExample = self.basemodel_payload, category: str = "default", - params: ParamsModelV1Example = self.basemodel_v1_params, + params: ParamsModelExample = self.basemodel_params, ) -> None: # type: ignore [empty-body] ... api = TestAPI(self.session_mock) # Act - payload_override = BaseModelV1Example(id="override-id", size=500, capacity=9.0001, active=False) + payload_override = BaseModelExample(id="override-id", size=500, capacity=9.0001, active=False) category_override = "override-category!" - params_override = ParamsModelV1Example(name="override-Name", color="override with orange!") + params_override = ParamsModelExample(name="override-Name", color="override with orange!") api.get_data(payload_override, category_override, params_override) # Assert self.session_mock.request.assert_called_once_with( "GET", self.base_path + f"/v2/{category_override}/items", - data=payload_override.json(), + data=payload_override.model_dump_json(), headers={"content-type": "application/json"}, - params=params_override, + params=params_override.model_dump(), ) def test_decorator_chaining_order(self): @@ -801,7 +769,7 @@ class TestAPIMixedOrder1(APIEndpoints): @request("GET", "/v2/{category}/items") @versions("<2") def get_data( - self, payload: BaseModelV1Example, category: str, params: ParamsModelV1Example + self, payload: BaseModelExample, category: str, params: ParamsModelExample ) -> None: # type: ignore [empty-body] ... @@ -810,7 +778,7 @@ class TestAPIMixedOrder2(APIEndpoints): @versions("<2") @view({ProviderView}) def get_data( - self, payload: BaseModelV1Example, category: str, params: ParamsModelV1Example + self, payload: BaseModelExample, category: str, params: ParamsModelExample ) -> None: # type: ignore [empty-body] ... @@ -887,20 +855,20 @@ def test_request_decorator_accept_union_of_models(self): class TestAPI(APIEndpoints): @request("GET", "/v1/data") def get_data( - self, payload: Union[BaseModelV2Example, BaseModelV2Example2] + self, payload: Union[BaseModelExample, BaseModelExample2] ) -> None: # type: ignore [empty-body] ... def test_request_decorator_accept_annotated_union_of_models(self): - class BaseModelV2_A(BaseModelV2): + class BaseModel_A(BaseModel): field: Literal["number"] = "number" num: float - class BaseModelV2_B(BaseModelV2): + class BaseModel_B(BaseModel): field: Literal["name"] = "name" name: str - AnyBaseModel = Annotated[Union[BaseModelV2_A, BaseModelV2_B], FieldV2(discriminator="field")] + AnyBaseModel = Annotated[Union[BaseModel_A, BaseModel_B], Field(discriminator="field")] class TestAPI(APIEndpoints): @request("POST", "/v1/data") diff --git a/catalystwan/tests/test_monitoring_security_policy.py b/catalystwan/tests/test_monitoring_security_policy.py new file mode 100644 index 00000000..8b45e270 --- /dev/null +++ b/catalystwan/tests/test_monitoring_security_policy.py @@ -0,0 +1,65 @@ +# Copyright 2022 Cisco Systems, Inc. and its affiliates + +import unittest +from unittest.mock import MagicMock, patch + +from catalystwan.endpoints.monitoring.security_policy import MonitoringSecurityPolicy +from catalystwan.models.monitoring.security_policy import SecurityPolicyDeviceList + + +class TestMonitoringSecurityPolicy(unittest.TestCase): + def setUp(self) -> None: + self.mock_device_list_data = { + "amp_down": ["2.2.2.2"], + "amp_up": ["3.3.3.3"], + "ips_down": ["2.2.2.2"], + "ips_up": ["1.1.1.1"], + "urlf_down": ["3.3.3.3"], + "urlf_up": ["1.1.1.1", "2.2.2.2"], + "zbfw_down": [], + "zbfw_up": ["1.1.1.1", "2.2.2.2", "3.3.3.3"], + } + + @patch("catalystwan.session.ManagerSession") + def test_get_security_policy_device_list(self, mock_session): + # Arrange + # Create a MagicMock for the response that has a dataobj method + mock_response = MagicMock() + + # Set up the mock response's dataobj method to return a ServerInfoResponse + mock_response.dataobj.return_value = SecurityPolicyDeviceList(**self.mock_device_list_data) + + # Mock the request method of the ManagerSession to return the mock response + mock_session_instance = mock_session.return_value + mock_session_instance.request.return_value = mock_response + + mon_sec_pol_api = MonitoringSecurityPolicy(mock_session_instance) + + # Act + response = mon_sec_pol_api.get_device_list() + + # Assert + self.assertIsInstance(response, SecurityPolicyDeviceList) + self.assertEqual(response.amp_down, self.mock_device_list_data["amp_down"]) + self.assertEqual(response.amp_down, ["2.2.2.2"]) + self.assertEqual(response.amp_up, self.mock_device_list_data["amp_up"]) + self.assertEqual(response.amp_up, ["3.3.3.3"]) + self.assertEqual(response.ips_down, self.mock_device_list_data["ips_down"]) + self.assertEqual(response.ips_down, ["2.2.2.2"]) + self.assertEqual(response.ips_up, self.mock_device_list_data["ips_up"]) + self.assertEqual(response.ips_up, ["1.1.1.1"]) + self.assertEqual(response.urlf_down, self.mock_device_list_data["urlf_down"]) + self.assertEqual(response.urlf_down, ["3.3.3.3"]) + self.assertEqual(response.urlf_up, self.mock_device_list_data["urlf_up"]) + self.assertEqual(response.urlf_up, ["1.1.1.1", "2.2.2.2"]) + self.assertEqual(response.zbfw_down, self.mock_device_list_data["zbfw_down"]) + self.assertEqual(response.zbfw_down, []) + self.assertEqual(response.zbfw_up, self.mock_device_list_data["zbfw_up"]) + self.assertEqual(response.zbfw_up, ["1.1.1.1", "2.2.2.2", "3.3.3.3"]) + + # Ensure the request method was called + mock_session_instance.request.assert_called_once() + + +if __name__ == "__main__": + unittest.main() diff --git a/catalystwan/tests/test_monitoring_server_info.py b/catalystwan/tests/test_monitoring_server_info.py new file mode 100644 index 00000000..6f6d8fbe --- /dev/null +++ b/catalystwan/tests/test_monitoring_server_info.py @@ -0,0 +1,49 @@ +# Copyright 2022 Cisco Systems, Inc. and its affiliates + +import unittest +from unittest.mock import MagicMock, patch + +from catalystwan.endpoints.monitoring.server_info import ServerInfo +from catalystwan.models.monitoring.server_info import ServerInfoResponse + + +class TestServerInfo(unittest.TestCase): + def setUp(self) -> None: + self.mock_server_info_data = { + "Achitecture": "x86_64", + "Available processors": 4, + } # Note the spelling error + + @patch("catalystwan.session.ManagerSession") + def test_get_server_info(self, mock_session): + # Arrange + # Create a MagicMock for the response that has a dataobj method + mock_response = MagicMock() + # Set up the mock response's dataobj method to return a ServerInfoResponse + mock_response.dataobj.return_value = ServerInfoResponse(**self.mock_server_info_data) + + # Mock the request method of the ManagerSession to return the mock response + mock_session_instance = mock_session.return_value + mock_session_instance.request.return_value = mock_response + + server_info_api = ServerInfo(mock_session_instance) + + # Act + response = server_info_api.get_server_info() + + # Assert + self.assertIsInstance(response, ServerInfoResponse) + self.assertEqual(response.architecture, self.mock_server_info_data["Achitecture"]) + self.assertEqual( + response.available_processors, + self.mock_server_info_data["Available processors"], + ) + self.assertEqual(response.architecture, "x86_64") + self.assertEqual(response.available_processors, 4) + + # Ensure the request method was called + mock_session_instance.request.assert_called_once() + + +if __name__ == "__main__": + unittest.main() diff --git a/catalystwan/tests/test_monitoring_status_api.py b/catalystwan/tests/test_monitoring_status_api.py index e30cdfe1..c491958b 100644 --- a/catalystwan/tests/test_monitoring_status_api.py +++ b/catalystwan/tests/test_monitoring_status_api.py @@ -5,7 +5,7 @@ from unittest.mock import MagicMock, patch from catalystwan.api.monitoring_status_api import MonitoringStatusAPI -from catalystwan.endpoints.monitoring_status import ( +from catalystwan.endpoints.monitoring.status import ( DisabledDeviceListResponse, EnabledIndexDeviceListResponse, Status, diff --git a/catalystwan/tests/test_response.py b/catalystwan/tests/test_response.py index a7508211..54af1ce1 100644 --- a/catalystwan/tests/test_response.py +++ b/catalystwan/tests/test_response.py @@ -6,10 +6,7 @@ from attr import define, field # type: ignore from parameterized import parameterized # type: ignore -from pydantic import BaseModel as BaseModelV2 -from pydantic import Field as FieldV2 -from pydantic.v1 import BaseModel as BaseModelV1 -from pydantic.v1 import Field as FieldV1 +from pydantic import BaseModel, Field, ValidationError from catalystwan.dataclasses import DataclassBase from catalystwan.response import ManagerErrorInfo, ManagerResponse @@ -23,16 +20,15 @@ class ParsedDataTypeAttrs(DataclassBase): key3: Optional[float] = field(default=None) -class ParsedDataTypePydanticV1(BaseModelV1): +class ParsedDataTypePydanticV2(BaseModel): key1: str key2: int - key3: Optional[float] = FieldV1(default=None) + key3: Optional[float] = Field(default=None) -class ParsedDataTypePydanticV2(BaseModelV2): - key1: str - key2: int - key3: Optional[float] = FieldV2(default=None) +class DataForValidateTest(BaseModel): + important: str + not_important: ParsedDataTypePydanticV2 PARSE_DATASEQ_TEST_DATA: List = [ @@ -65,6 +61,11 @@ class ParsedDataTypePydanticV2(BaseModelV2): (True, {"data": [{"key1": "string", "key2": 66}, {"key1": "required", "key2": 18, "key3": 0.1}]}, "data"), ] +VALIDATE_DATASEQ_TEST_DATA = [ + {"important": "correct1", "not_important": {"invalid-key1": "string", "key2": "not int"}}, + {"important": "correct2", "not_important": {}}, +] + class TestResponse(unittest.TestCase): @patch("requests.Response") @@ -87,19 +88,7 @@ def test_dataseq_attrs(self, raises: bool, json: Any, expected_len: int, sourcek vmng_response.dataseq(ParsedDataTypeAttrs, sourcekey) @parameterized.expand(PARSE_DATASEQ_TEST_DATA) - def test_dataseq_pydantic_v1(self, raises: bool, json: Any, expected_len: int, sourcekey: str): - self.response_mock.json.return_value = json - vmng_response = ManagerResponse(self.response_mock) - if not raises: - data_sequence = vmng_response.dataseq(ParsedDataTypePydanticV1, sourcekey) - assert isinstance(data_sequence, DataSequence) - assert len(data_sequence) == expected_len - else: - with self.assertRaises(Exception): - vmng_response.dataseq(ParsedDataTypePydanticV1, sourcekey) - - @parameterized.expand(PARSE_DATASEQ_TEST_DATA) - def test_dataseq_pydantic_v2(self, raises: bool, json: Any, expected_len: int, sourcekey: str): + def test_dataseq_pydantic(self, raises: bool, json: Any, expected_len: int, sourcekey: str): self.response_mock.json.return_value = json vmng_response = ManagerResponse(self.response_mock) if not raises: @@ -122,18 +111,7 @@ def test_dataobj_attrs(self, raises: bool, json: Any, sourcekey: str): vmng_response.dataobj(ParsedDataTypeAttrs, sourcekey) @parameterized.expand(PARSE_DATAOBJ_TEST_DATA) - def test_dataobj_pydantic_v1(self, raises: bool, json: Any, sourcekey: str): - self.response_mock.json.return_value = json - vmng_response = ManagerResponse(self.response_mock) - if not raises: - data_object = vmng_response.dataobj(ParsedDataTypePydanticV1, sourcekey) - assert isinstance(data_object, ParsedDataTypePydanticV1) - else: - with self.assertRaises(Exception): - vmng_response.dataobj(ParsedDataTypePydanticV1, sourcekey) - - @parameterized.expand(PARSE_DATAOBJ_TEST_DATA) - def test_dataobj_pydantic_v2(self, raises: bool, json: Any, sourcekey: str): + def test_dataobj_pydantic(self, raises: bool, json: Any, sourcekey: str): self.response_mock.json.return_value = json vmng_response = ManagerResponse(self.response_mock) if not raises: @@ -168,3 +146,28 @@ def test_get_error(self, empty_error: bool, json: Any): assert error_info.message is None assert error_info.details is None assert error_info.code is None + + def test_dataobj_optional_validate(self): + # Arrange + self.response_mock.json.return_value = VALIDATE_DATASEQ_TEST_DATA[0] + vmng_response = ManagerResponse(self.response_mock) + # Act + data = vmng_response.dataobj(DataForValidateTest, sourcekey=None, validate=False) + # Assert + assert isinstance(data, DataForValidateTest) + assert data.important == VALIDATE_DATASEQ_TEST_DATA[0]["important"] + with self.assertRaises(ValidationError): + vmng_response.dataobj(DataForValidateTest, sourcekey=None, validate=True) + + def test_dataseq_optional_validate(self): + self.response_mock.json.return_value = VALIDATE_DATASEQ_TEST_DATA + vmng_response = ManagerResponse(self.response_mock) + # Act + dataseq = vmng_response.dataseq(DataForValidateTest, sourcekey=None, validate=False) + # Assert + assert isinstance(dataseq, DataSequence) + for i, data in enumerate(dataseq): + assert isinstance(data, DataForValidateTest) + assert data.important == VALIDATE_DATASEQ_TEST_DATA[i]["important"] + with self.assertRaises(ValidationError): + vmng_response.dataseq(DataForValidateTest, sourcekey=None, validate=True) diff --git a/catalystwan/tests/test_task_status_api.py b/catalystwan/tests/test_task_status_api.py index 79a0ce67..6e184776 100644 --- a/catalystwan/tests/test_task_status_api.py +++ b/catalystwan/tests/test_task_status_api.py @@ -307,7 +307,7 @@ def setUp(self, mock_session): @patch.object(ConfigurationDashboardStatus, "find_status") def test_wait_for_completed_success(self, mock_task_response, mock_validation): # Arrange - mock_task_response.return_value = TaskData.parse_obj(self.success_response) + mock_task_response.return_value = TaskData.model_validate(self.success_response) # Act answer = self.task.wait_for_completed(interval_seconds=1).result @@ -322,8 +322,8 @@ def test_wait_for_completed_empty_data(self, mock_task_response, mock_validation # Arrange mock_task_response.side_effect = [ - TaskData.parse_obj(self.empty_data), - TaskData.parse_obj(self.success_response), + TaskData.model_validate(self.empty_data), + TaskData.model_validate(self.success_response), ] # Act @@ -336,7 +336,7 @@ def test_wait_for_completed_empty_data(self, mock_task_response, mock_validation @patch.object(ConfigurationDashboardStatus, "find_status") def test_wait_for_completed_with_action_config_as_dict(self, mock_task_response, mock_validation): # Arrange - mock_task_response.return_value = TaskData.parse_obj(self.response_with_action_config_as_dict) + mock_task_response.return_value = TaskData.model_validate(self.response_with_action_config_as_dict) # Act answer = self.task.wait_for_completed(interval_seconds=1).result @@ -350,7 +350,10 @@ def test_wait_for_completed_no_data(self, mock_task_response, mock_validation): # No data in first call, and then response is success # Arrange - mock_task_response.side_effect = [TaskData.parse_obj(self.no_data), TaskData.parse_obj(self.success_response)] + mock_task_response.side_effect = [ + TaskData.model_validate(self.no_data), + TaskData.model_validate(self.success_response), + ] # Act answer = self.task.wait_for_completed(timeout_seconds=2, interval_seconds=1).result @@ -361,7 +364,7 @@ def test_wait_for_completed_no_data(self, mock_task_response, mock_validation): @patch.object(ConfigurationDashboardStatus, "find_status") def test_wait_for_completed_no_validation_field(self, mock_task_response_response): # Arrange - mock_task_response_response.return_value = TaskData.parse_obj(self.no_validation) + mock_task_response_response.return_value = TaskData.model_validate(self.no_validation) # Act answer = self.task.wait_for_completed(interval_seconds=1).result @@ -372,7 +375,7 @@ def test_wait_for_completed_no_validation_field(self, mock_task_response_respons @patch.object(ConfigurationDashboardStatus, "find_status") def test_wait_for_completed_raise_TaskValidationError(self, mock_task_response_response): # Arrange - mock_task_response_response.return_value = TaskData.parse_obj(self.validation_failure) + mock_task_response_response.return_value = TaskData.model_validate(self.validation_failure) # Act&Assert self.assertRaises(TaskValidationError, self.task.wait_for_completed) diff --git a/catalystwan/tests/test_tenant_management_api.py b/catalystwan/tests/test_tenant_management_api.py index aef88c57..5841649f 100644 --- a/catalystwan/tests/test_tenant_management_api.py +++ b/catalystwan/tests/test_tenant_management_api.py @@ -33,13 +33,13 @@ def test_get(self): expected_tenants = [ Tenant( name="tenant1", - orgName="CiscoDevNet", - subDomain="alpha.bravo.net", + org_name="CiscoDevNet", + subdomain="alpha.bravo.net", desc="This is tenant for unit tests", - edgeConnectorEnable=True, - edgeConnectorSystemIp="172.16.255.81", - edgeConnectorTunnelInterfaceName="GigabitEthernet1", - wanEdgeForecast=1, + edge_connector_enable=True, + edge_connector_system_ip="172.16.255.81", + edge_connector_tunnel_interface_name="GigabitEthernet1", + wan_edge_forecast=1, ) ] self.api._endpoints.get_all_tenants = MagicMock(return_value=expected_tenants) @@ -50,13 +50,13 @@ def test_create(self): tenants = [ Tenant( name="tenant1", - orgName="CiscoDevNet", - subDomain="alpha.bravo.net", + org_name="CiscoDevNet", + subdomain="alpha.bravo.net", desc="This is tenant for unit tests", - edgeConnectorEnable=True, - edgeConnectorSystemIp="172.16.255.81", - edgeConnectorTunnelInterfaceName="GigabitEthernet1", - wanEdgeForecast=1, + edge_connector_enable=True, + edge_connector_system_ip="172.16.255.81", + edge_connector_tunnel_interface_name="GigabitEthernet1", + wan_edge_forecast=1, ) ] task = self.api.create(tenants) @@ -65,11 +65,11 @@ def test_create(self): def test_update(self): # Arrange tenant_update_request = TenantUpdateRequest( - tenantId="apo605#", - subDomain="doamin.tenant.net", + tenant_id="apo605#", + subdomain="doamin.tenant.net", desc="Tenant1 description", - wanEdgeForecast=1, - edgeConnectorEnable=False, + wan_edge_forecast=1, + edge_connector_enable=False, ) self.api._endpoints.update_tenant = MagicMock() # Act @@ -85,8 +85,8 @@ def test_update_vsmart_placement(self): dst_uuid = "!_0ac%$asfDS" tenant_id = "apo605#" vsmart_placement_update = vSmartPlacementUpdateRequest( - srcvSmartUuid=src_uuid, - destvSmartUuid=dst_uuid, + src_vsmart_uuid=src_uuid, + dest_vsmart_uuid=dst_uuid, ) self.api._endpoints.update_tenant_vsmart_placement = MagicMock() # Act @@ -110,12 +110,12 @@ def test_delete_auto_password(self): def test_get_statuses(self): tenant_status = TenantStatus( - tenantId="tenant2", - tenantName="TeanantTwo", - controlStatus=ControlStatus(controlUp=1, controlDown=0, partial=1), - siteHealth=SiteHealth(fullConnectivity=2, partialConnectivity=1, noConnectivity=0), - vEdgeHealth=vEdgeHealth(normal=3, warning=1, error=0), - vSmartStatus=vSmartStatus(up=1, down=0), + tenant_id="tenant2", + tenant_name="TeanantTwo", + control_status=ControlStatus(control_up=1, control_down=0, partial=1), + site_health=SiteHealth(full_connectivity=2, partial_connectivity=1, no_connectivity=0), + vedge_health=vEdgeHealth(normal=3, warning=1, error=0), + vsmart_status=vSmartStatus(up=1, down=0), ) expected_statuses = DataSequence(TenantStatus, [tenant_status]) self.api._endpoints.get_all_tenant_statuses = MagicMock(return_value=expected_statuses) @@ -123,7 +123,7 @@ def test_get_statuses(self): assert expected_statuses == observed_statuses def test_get_hosting_capacity_on_vsmarts(self): - capacity = vSmartTenantCapacity(vSmartUuid="ABCD-1234", totalTenantCapacity=12, currentTenantCount=5) + capacity = vSmartTenantCapacity(vsmart_uuid="ABCD-1234", total_tenant_capacity=12, current_tenant_count=5) expected_capacities = DataSequence(vSmartTenantCapacity, [capacity]) self.api._endpoints.get_tenant_hosting_capacity_on_vsmarts = MagicMock(return_value=expected_capacities) observed_capacities = self.api.get_hosting_capacity_on_vsmarts() @@ -135,10 +135,10 @@ def test_get_vsmart_mapping(self): "vsmart1": [ Tenant( name="tenant1", - orgName="Tenant1-organization", + org_name="Tenant1-organization", desc="Tenant1 description", - subDomain="tenant1.organization.org", - flakeId=9987, + subdomain="tenant1.organization.org", + flake_id=9987, ) ] } @@ -149,6 +149,6 @@ def test_get_vsmart_mapping(self): def test_vsession_id(self): expected_vsession_id = "567-DEF" - self.api._endpoints.vsession_id = MagicMock(return_value=vSessionId(VSessionId=expected_vsession_id)) + self.api._endpoints.vsession_id = MagicMock(return_value=vSessionId(vsessionid=expected_vsession_id)) observed_vsession_id = self.api.vsession_id("1") assert expected_vsession_id == observed_vsession_id diff --git a/catalystwan/tests/test_tenant_migration_api.py b/catalystwan/tests/test_tenant_migration_api.py index 581c2d03..2a4987dc 100644 --- a/catalystwan/tests/test_tenant_migration_api.py +++ b/catalystwan/tests/test_tenant_migration_api.py @@ -4,6 +4,7 @@ import unittest from pathlib import Path from unittest.mock import MagicMock, patch +from uuid import uuid4 from packaging.version import Version # type: ignore @@ -46,19 +47,16 @@ def test_download(self): def test_import_tenant(self): self.session.api_version = Version("20.12") - migration_key = "Cisco12345" - migration_id = "dcbed267-eb0d-4dcd-9c12-2536e8562f75" + migration_key = "mkey1" + migration_id = str(uuid4()) with tempfile.TemporaryDirectory() as tmpdir: import_file = Path(tmpdir) / "tenant.tar.gz" with open(import_file, "wb") as f: f.write(b"\xFEtest_data") self.session.endpoints.tenant_migration.import_tenant_data = MagicMock( return_value=ImportInfo( - processId="123", - migrationTokenURL=( - "/dataservice/tenantmigration/migrationToken?" - "migrationId=dcbed267-eb0d-4dcd-9c12-2536e8562f75" - ), + process_id="123", + migration_token_url=("/dataservice/tenantmigration/migrationToken?" f"migrationId={migration_id}"), ) ) task = self.api.import_tenant(import_file, migration_key) @@ -67,19 +65,16 @@ def test_import_tenant(self): def test_import_tenant_with_key(self): self.session.api_version = Version("20.13") - migration_key = "Cisco12345" - migration_id = "dcbed267-eb0d-4dcd-9c12-2536e8562f75" + migration_key = "mkey2" + migration_id = str(uuid4()) with tempfile.TemporaryDirectory() as tmpdir: import_file = Path(tmpdir) / "tenant.tar.gz" with open(import_file, "wb") as f: f.write(b"\xFEtest_data") self.session.endpoints.tenant_migration.import_tenant_data_with_key = MagicMock( return_value=ImportInfo( - processId="123", - migrationTokenURL=( - "/dataservice/tenantmigration/migrationToken?" - "migrationId=dcbed267-eb0d-4dcd-9c12-2536e8562f75" - ), + process_id="123", + migration_token_url=("/dataservice/tenantmigration/migrationToken?" f"migrationId={migration_id}"), ) ) task = self.api.import_tenant(import_file, migration_key) diff --git a/catalystwan/tests/test_typed_list.py b/catalystwan/tests/test_typed_list.py index f23d1964..9fcba301 100644 --- a/catalystwan/tests/test_typed_list.py +++ b/catalystwan/tests/test_typed_list.py @@ -365,6 +365,38 @@ def test_filter_exception(self): with self.assertRaises(AttributeError): self.data_sequence.filter(does_not="exists") + def test_find(self): + # Arrange + expected = self.data_sequence.filter(username="User3").single_or_default() + # Act + observed = self.data_sequence.find(username="User3") + + # Assert + self.assertEqual(observed, expected) + + def test_find_two_attributes(self): + # Arrange + additional_user = User(username="User1", description="ThisOne") + users = copy.deepcopy(self.data_sequence) + users.append(additional_user) + correct_output = additional_user + + # Act + output = users.find(username="User1", description="ThisOne") + + # Assert + self.assertEqual(output, correct_output) + + def test_find_wrong_arg(self): + # Arrange, Act, Assert + with self.assertRaises(AttributeError): + self.data_sequence.find(does_not="exists") + + def test_find_no_match(self): + # Arrange, Act, Assert + with self.assertRaises(InvalidOperationError): + self.data_sequence.find(username="NonExistingUser") + if __name__ == "__main__": unittest.main() diff --git a/catalystwan/tests/test_url_monitoring.py b/catalystwan/tests/test_url_monitoring.py new file mode 100644 index 00000000..408cd9cc --- /dev/null +++ b/catalystwan/tests/test_url_monitoring.py @@ -0,0 +1,79 @@ +import unittest +from unittest.mock import MagicMock, patch + +from catalystwan.endpoints.url_monitoring import UrlMonitoring +from catalystwan.models.url_monitoring import DeleteUrlMonitorRequest, UrlMonitoringConfig + + +class TestUrlMonitoring(unittest.TestCase): + @patch("catalystwan.session.ManagerSession") + def setUp(self, session_mock) -> None: + self.session = session_mock + + self.mock_url_monitor_info_data = {"url": "/client/server/ready", "threshold": 98, "alarm_raised": False} + + self.mock_url_monitor_config_add_data = {"url": "/client/server/ready", "threshold": 98} + self.mock_url_monitor_config_update_data = {"url": "/client/server/ready", "threshold": 90} + self.mock_url_monitor_delete_url = DeleteUrlMonitorRequest(url="/client/server/ready") + + @patch("catalystwan.session.ManagerSession") + def test_add_url_monitor(self, mock_session): + # Arrange + mock_response = MagicMock() + mock_session.get_data.return_value = UrlMonitoringConfig(**self.mock_url_monitor_config_add_data) + # Mock the request method of the ManagerSession to return the mock response + mock_session_instance = mock_session.return_value + mock_session_instance.request.return_value = mock_response + mock_session.post.return_value = mock_response + url_monitor = UrlMonitoring(mock_session_instance) + + # Act + response = url_monitor.add_url_monitor(self.mock_url_monitor_config_add_data) + # Assert + self.assertEqual(response, None) + # Ensure the request method was called + mock_session_instance.request.assert_called_once() + + @patch("catalystwan.session.ManagerSession") + @patch("catalystwan.response.ManagerResponse") + def test_get_url_monitor(self, mock_session, mock_response): + # Arrange + mock_response = MagicMock() + mock_session_instance = mock_session.return_value + mock_session_instance.request.return_value = mock_response + url_monitor = UrlMonitoring(mock_session_instance) + observed_url_monitor = url_monitor.get_url_monitor() + # Assert + self.assertIsNotNone(observed_url_monitor) + + @patch("catalystwan.session.ManagerSession") + def test_update_url_monitor(self, mock_session): + # Arrange + mock_response = MagicMock() + mock_session.get_data.return_value = UrlMonitoringConfig(**self.mock_url_monitor_config_update_data) + # Mock the request method of the ManagerSession to return the mock response + mock_session_instance = mock_session.return_value + mock_session_instance.request.return_value = mock_response + url_monitor = UrlMonitoring(mock_session_instance) + # Act + response = url_monitor.update_url_monitor(self.mock_url_monitor_config_update_data) + # Assert + self.assertEqual(response, None) + # Ensure the request method was called + mock_session_instance.request.assert_called_once() + + @patch("catalystwan.session.ManagerSession") + def test_delete_url_monitor(self, mock_session): + # Arrange + mock_response = MagicMock() + mock_session.get_data.return_value = self.mock_url_monitor_delete_url + # Mock the request method of the ManagerSession to return the mock response + mock_session_instance = mock_session.return_value + mock_session_instance.request.return_value = mock_response + url_monitor = UrlMonitoring(mock_session_instance) + # Act + response = url_monitor.delete_url_monitor(self.mock_url_monitor_delete_url) + # Assert + self.assertEqual(response, None) + # Ensure the request method was called + mock_session_instance.request.assert_called_once() diff --git a/catalystwan/typed_list.py b/catalystwan/typed_list.py index 38743c51..ba7792a2 100644 --- a/catalystwan/typed_list.py +++ b/catalystwan/typed_list.py @@ -4,8 +4,7 @@ from typing import Any, Generic, Iterable, MutableSequence, Type, TypeVar, overload -from pydantic import BaseModel as BaseModelV2 -from pydantic.v1 import BaseModel as BaseModelV1 +from pydantic import BaseModel from catalystwan.exceptions import InvalidOperationError from catalystwan.utils.creation_tools import AttrsInstance, asdict @@ -152,13 +151,9 @@ def __init__(self, _type: Type[T], _iterable: Iterable[T], /) -> None: ... def __init__(self, _type, _iterable=None, /): - if ( - not isinstance(_type, AttrsInstance) - and not issubclass(_type, BaseModelV1) - and not issubclass(_type, BaseModelV2) - ): + if not isinstance(_type, AttrsInstance) and not issubclass(_type, BaseModel): raise TypeError( - f"Expected {AttrsInstance.__name__} or {BaseModelV1.__name__} item type, got {_type.__name__}." + f"Expected {AttrsInstance.__name__} or {BaseModel.__name__} item type, got {_type.__name__}." ) super().__init__(_type, _iterable) @@ -176,7 +171,7 @@ def __repr__(self) -> str: def __str__(self) -> str: pretty_message = "" for element in self: - if issubclass(element.__class__, (BaseModelV1, BaseModelV2)): + if issubclass(element.__class__, BaseModel): pprint = "\n".join(f" {attr[0]}: {attr[1]}, " for attr in element.dict().items()) # type: ignore else: pprint = "\n".join(f" {attr[0]}: {attr[1]}, " for attr in asdict(element).items()) # type: ignore @@ -264,3 +259,20 @@ def first(self) -> T: raise InvalidOperationError("The input sequence contains no elements.") return self.data[0] + + def find(self, **kwargs) -> T: + """Finds first item in sequence matching values based on attributes. + Works similarily as filter but assures single element is returned or raises exception. + + >>> seq = DataSequence(User, [User(username="User1"), User(username="User2")]) + >>> seq.find(username="User1") + User(username='User1', password=None, group=[], locale=None, description=None, resource_group=None) + + Returns: + [T]: The single element of the input sequence. + """ + annotations = set(kwargs.keys()) + result = next(filter(lambda x: all(getattr(x, a) == kwargs[a] for a in annotations), self.data), None) + if result is None: + raise InvalidOperationError(f"Item matching {kwargs} not found in the input sequence") + return result diff --git a/catalystwan/utils/feature_template/choose_model.py b/catalystwan/utils/feature_template/choose_model.py index 05bb8648..a310870b 100644 --- a/catalystwan/utils/feature_template/choose_model.py +++ b/catalystwan/utils/feature_template/choose_model.py @@ -1,3 +1,5 @@ +# Copyright 2024 Cisco Systems, Inc. and its affiliates + from typing import Any from catalystwan.api.templates.models.supported import available_models diff --git a/endpoints-md.py b/endpoints-md.py index 409c63d8..fa9e8bf5 100644 --- a/endpoints-md.py +++ b/endpoints-md.py @@ -17,7 +17,7 @@ from catalystwan.endpoints import BASE_PATH, APIEndpointRequestMeta, TypeSpecifier, request, versions, view from catalystwan.utils.session_type import SessionType # type: ignore -SOURCE_BASE_PATH = "https://github.com/CiscoDevNet/catalystwan/blob/main/" +SOURCE_BASE_PATH = "https://github.com/cisco-open/cisco-catalyst-wan-sdk/blob/main/" def relative(absolute: str) -> str: diff --git a/pyproject.toml b/pyproject.toml index 0f0d5787..830bf9fa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,10 +1,10 @@ [tool.poetry] name = "catalystwan" -version = "0.31.2" +version = "0.33.6" description = "Cisco Catalyst WAN SDK for Python" authors = ["kagorski "] readme = "README.md" -repository = "https://github.com/CiscoDevNet/catalystwan" +repository = "https://github.com/cisco-open/cisco-catalyst-wan-sdk" [tool.poetry.dependencies] python = "^3.8.0"