scc-firewall-manager-sdk 1.15.195__py3-none-any.whl → 1.15.563__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. scc_firewall_manager_sdk/__init__.py +19 -2
  2. scc_firewall_manager_sdk/api/__init__.py +2 -0
  3. scc_firewall_manager_sdk/api/ai_assistant_api.py +12 -12
  4. scc_firewall_manager_sdk/api/asa_access_groups_api.py +12 -12
  5. scc_firewall_manager_sdk/api/asa_access_rules_api.py +12 -12
  6. scc_firewall_manager_sdk/api/asa_interfaces_api.py +72 -72
  7. scc_firewall_manager_sdk/api/audit_logs_api.py +12 -12
  8. scc_firewall_manager_sdk/api/change_requests_api.py +12 -12
  9. scc_firewall_manager_sdk/api/changelogs_api.py +12 -12
  10. scc_firewall_manager_sdk/api/command_line_interface_api.py +24 -24
  11. scc_firewall_manager_sdk/api/connectors_api.py +12 -12
  12. scc_firewall_manager_sdk/api/device_health_aggregations_api.py +19 -19
  13. scc_firewall_manager_sdk/api/device_upgrades_api.py +298 -297
  14. scc_firewall_manager_sdk/api/events_api.py +358 -0
  15. scc_firewall_manager_sdk/api/interface_health_aggregations_api.py +344 -0
  16. scc_firewall_manager_sdk/api/inventory_api.py +48 -48
  17. scc_firewall_manager_sdk/api/licensing_api.py +626 -0
  18. scc_firewall_manager_sdk/api/msp_device_upgrades_api.py +1692 -37
  19. scc_firewall_manager_sdk/api/msp_inventory_api.py +48 -48
  20. scc_firewall_manager_sdk/api/msp_tenant_management_api.py +41 -12
  21. scc_firewall_manager_sdk/api/msp_user_management_api.py +24 -24
  22. scc_firewall_manager_sdk/api/object_management_api.py +17 -0
  23. scc_firewall_manager_sdk/api/remote_access_monitoring_api.py +24 -24
  24. scc_firewall_manager_sdk/api/tenant_management_api.py +21 -18
  25. scc_firewall_manager_sdk/api/users_api.py +30 -30
  26. scc_firewall_manager_sdk/api_client.py +1 -1
  27. scc_firewall_manager_sdk/configuration.py +1 -1
  28. scc_firewall_manager_sdk/models/__init__.py +16 -1
  29. scc_firewall_manager_sdk/models/access_group.py +1 -1
  30. scc_firewall_manager_sdk/models/cdo_token_info.py +3 -1
  31. scc_firewall_manager_sdk/models/cdo_transaction.py +14 -14
  32. scc_firewall_manager_sdk/models/common_api_error.py +3 -3
  33. scc_firewall_manager_sdk/models/compatible_device_dto.py +100 -0
  34. scc_firewall_manager_sdk/models/compatible_version_info_dto.py +112 -0
  35. scc_firewall_manager_sdk/models/completion_status_dto.py +104 -0
  36. scc_firewall_manager_sdk/models/device_license_dto.py +133 -0
  37. scc_firewall_manager_sdk/models/device_license_page.py +102 -0
  38. scc_firewall_manager_sdk/models/{tenant_ftd_compatibility_version.py → device_upgrade_status_dto.py} +14 -18
  39. scc_firewall_manager_sdk/models/enable_cd_fmc_for_tenant_request.py +88 -0
  40. scc_firewall_manager_sdk/models/log_settings.py +1 -1
  41. scc_firewall_manager_sdk/models/metric_aggregation_list_item.py +12 -8
  42. scc_firewall_manager_sdk/models/msp_calculate_compatible_upgrade_versions_input.py +89 -0
  43. scc_firewall_manager_sdk/models/msp_managed_device.py +13 -1
  44. scc_firewall_manager_sdk/models/msp_managed_device_distinct_attribute_values.py +5 -1
  45. scc_firewall_manager_sdk/models/msp_upgrade_ftd_devices_input.py +97 -0
  46. scc_firewall_manager_sdk/models/msp_upgrade_run_dto.py +135 -0
  47. scc_firewall_manager_sdk/models/msp_upgrade_run_dto_page.py +102 -0
  48. scc_firewall_manager_sdk/models/msp_upgrade_runs_attribute_values.py +114 -0
  49. scc_firewall_manager_sdk/models/page.py +94 -0
  50. scc_firewall_manager_sdk/models/smart_account.py +90 -0
  51. scc_firewall_manager_sdk/models/tenant_settings.py +3 -1
  52. scc_firewall_manager_sdk/models/upgrade_compatibility_info_dto.py +107 -0
  53. scc_firewall_manager_sdk/models/upgrade_run_dto.py +14 -4
  54. scc_firewall_manager_sdk/models/upgrade_run_metadata_dto.py +96 -0
  55. {scc_firewall_manager_sdk-1.15.195.dist-info → scc_firewall_manager_sdk-1.15.563.dist-info}/METADATA +1 -1
  56. {scc_firewall_manager_sdk-1.15.195.dist-info → scc_firewall_manager_sdk-1.15.563.dist-info}/RECORD +58 -41
  57. {scc_firewall_manager_sdk-1.15.195.dist-info → scc_firewall_manager_sdk-1.15.563.dist-info}/WHEEL +0 -0
  58. {scc_firewall_manager_sdk-1.15.195.dist-info → scc_firewall_manager_sdk-1.15.563.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,102 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Cisco Security Cloud Control Firewall Manager API
5
+
6
+ Use the documentation to explore the endpoints Security Cloud Control Firewall Manager has to offer
7
+
8
+ The version of the OpenAPI document: 1.15.0
9
+ Contact: cdo.tac@cisco.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
+ from scc_firewall_manager_sdk.models.device_license_dto import DeviceLicenseDto
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class DeviceLicensePage(BaseModel):
28
+ """
29
+ DeviceLicensePage
30
+ """ # noqa: E501
31
+ count: Optional[StrictInt] = Field(default=None, description="The total number of results available.")
32
+ items: Optional[List[DeviceLicenseDto]] = Field(default=None, description="The list of items retrieved.")
33
+ limit: Optional[StrictInt] = Field(default=None, description="The number of results retrieved.")
34
+ offset: Optional[StrictInt] = Field(default=None, description="The offset of the results retrieved. The Security Cloud Control API uses the offset field to determine the index of the first result retrieved, and will retrieve `limit` results from the offset specified.")
35
+ __properties: ClassVar[List[str]] = ["count", "items", "limit", "offset"]
36
+
37
+ model_config = ConfigDict(
38
+ populate_by_name=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
51
+ return json.dumps(self.to_dict())
52
+
53
+ @classmethod
54
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
+ """Create an instance of DeviceLicensePage from a JSON string"""
56
+ return cls.from_dict(json.loads(json_str))
57
+
58
+ def to_dict(self) -> Dict[str, Any]:
59
+ """Return the dictionary representation of the model using alias.
60
+
61
+ This has the following differences from calling pydantic's
62
+ `self.model_dump(by_alias=True)`:
63
+
64
+ * `None` is only added to the output dict for nullable fields that
65
+ were set at model initialization. Other fields with value `None`
66
+ are ignored.
67
+ """
68
+ excluded_fields: Set[str] = set([
69
+ ])
70
+
71
+ _dict = self.model_dump(
72
+ by_alias=True,
73
+ exclude=excluded_fields,
74
+ exclude_none=True,
75
+ )
76
+ # override the default output from pydantic by calling `to_dict()` of each item in items (list)
77
+ _items = []
78
+ if self.items:
79
+ for _item in self.items:
80
+ if _item:
81
+ _items.append(_item.to_dict())
82
+ _dict['items'] = _items
83
+ return _dict
84
+
85
+ @classmethod
86
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
87
+ """Create an instance of DeviceLicensePage from a dict"""
88
+ if obj is None:
89
+ return None
90
+
91
+ if not isinstance(obj, dict):
92
+ return cls.model_validate(obj)
93
+
94
+ _obj = cls.model_validate({
95
+ "count": obj.get("count"),
96
+ "items": [DeviceLicenseDto.from_dict(_item) for _item in obj["items"]] if obj.get("items") is not None else None,
97
+ "limit": obj.get("limit"),
98
+ "offset": obj.get("offset")
99
+ })
100
+ return _obj
101
+
102
+
@@ -20,19 +20,17 @@ import json
20
20
 
21
21
  from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
22
  from typing import Any, ClassVar, Dict, List, Optional
23
- from scc_firewall_manager_sdk.models.ftd_version import FtdVersion
23
+ from scc_firewall_manager_sdk.models.completion_status_dto import CompletionStatusDto
24
24
  from typing import Optional, Set
25
25
  from typing_extensions import Self
26
26
 
27
- class TenantFtdCompatibilityVersion(BaseModel):
27
+ class DeviceUpgradeStatusDto(BaseModel):
28
28
  """
29
- TenantFtdCompatibilityVersion
29
+ DeviceUpgradeStatusDto
30
30
  """ # noqa: E501
31
- compatible_ftd_versions: Optional[List[FtdVersion]] = Field(default=None, alias="compatibleFtdVersions")
32
- device_uids: Optional[List[StrictStr]] = Field(default=None, alias="deviceUids")
33
- hardware_model: Optional[StrictStr] = Field(default=None, alias="hardwareModel")
34
- managed_tenant_uid: Optional[StrictStr] = Field(default=None, alias="managedTenantUid")
35
- __properties: ClassVar[List[str]] = ["compatibleFtdVersions", "deviceUids", "hardwareModel", "managedTenantUid"]
31
+ completion_statuses: Optional[List[CompletionStatusDto]] = Field(default=None, description="The completion status of the upgrade on the device. For HA pairs or clusters, there will be multiple completion statuses; one per node of the pair or cluster.", alias="completionStatuses")
32
+ uid: Optional[StrictStr] = Field(default=None, description="The unique identifier, represented as a UUID, of the device in SCC Firewall Manager.")
33
+ __properties: ClassVar[List[str]] = ["completionStatuses", "uid"]
36
34
 
37
35
  model_config = ConfigDict(
38
36
  populate_by_name=True,
@@ -52,7 +50,7 @@ class TenantFtdCompatibilityVersion(BaseModel):
52
50
 
53
51
  @classmethod
54
52
  def from_json(cls, json_str: str) -> Optional[Self]:
55
- """Create an instance of TenantFtdCompatibilityVersion from a JSON string"""
53
+ """Create an instance of DeviceUpgradeStatusDto from a JSON string"""
56
54
  return cls.from_dict(json.loads(json_str))
57
55
 
58
56
  def to_dict(self) -> Dict[str, Any]:
@@ -73,18 +71,18 @@ class TenantFtdCompatibilityVersion(BaseModel):
73
71
  exclude=excluded_fields,
74
72
  exclude_none=True,
75
73
  )
76
- # override the default output from pydantic by calling `to_dict()` of each item in compatible_ftd_versions (list)
74
+ # override the default output from pydantic by calling `to_dict()` of each item in completion_statuses (list)
77
75
  _items = []
78
- if self.compatible_ftd_versions:
79
- for _item in self.compatible_ftd_versions:
76
+ if self.completion_statuses:
77
+ for _item in self.completion_statuses:
80
78
  if _item:
81
79
  _items.append(_item.to_dict())
82
- _dict['compatibleFtdVersions'] = _items
80
+ _dict['completionStatuses'] = _items
83
81
  return _dict
84
82
 
85
83
  @classmethod
86
84
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
87
- """Create an instance of TenantFtdCompatibilityVersion from a dict"""
85
+ """Create an instance of DeviceUpgradeStatusDto from a dict"""
88
86
  if obj is None:
89
87
  return None
90
88
 
@@ -92,10 +90,8 @@ class TenantFtdCompatibilityVersion(BaseModel):
92
90
  return cls.model_validate(obj)
93
91
 
94
92
  _obj = cls.model_validate({
95
- "compatibleFtdVersions": [FtdVersion.from_dict(_item) for _item in obj["compatibleFtdVersions"]] if obj.get("compatibleFtdVersions") is not None else None,
96
- "deviceUids": obj.get("deviceUids"),
97
- "hardwareModel": obj.get("hardwareModel"),
98
- "managedTenantUid": obj.get("managedTenantUid")
93
+ "completionStatuses": [CompletionStatusDto.from_dict(_item) for _item in obj["completionStatuses"]] if obj.get("completionStatuses") is not None else None,
94
+ "uid": obj.get("uid")
99
95
  })
100
96
  return _obj
101
97
 
@@ -0,0 +1,88 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Cisco Security Cloud Control Firewall Manager API
5
+
6
+ Use the documentation to explore the endpoints Security Cloud Control Firewall Manager has to offer
7
+
8
+ The version of the OpenAPI document: 1.15.0
9
+ Contact: cdo.tac@cisco.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool
22
+ from typing import Any, ClassVar, Dict, List
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class EnableCdFmcForTenantRequest(BaseModel):
27
+ """
28
+ EnableCdFmcForTenantRequest
29
+ """ # noqa: E501
30
+ dedicated_cd_fmc_instance: StrictBool = Field(alias="dedicatedCdFmcInstance")
31
+ __properties: ClassVar[List[str]] = ["dedicatedCdFmcInstance"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of EnableCdFmcForTenantRequest from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of EnableCdFmcForTenantRequest from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "dedicatedCdFmcInstance": obj.get("dedicatedCdFmcInstance")
85
+ })
86
+ return _obj
87
+
88
+
@@ -28,7 +28,7 @@ class LogSettings(BaseModel):
28
28
  LogSettings
29
29
  """ # noqa: E501
30
30
  interval: Optional[StrictInt] = Field(default=None, description="The interval")
31
- level: StrictStr = Field(description="The level")
31
+ level: Optional[StrictStr] = Field(default=None, description="The level")
32
32
  __properties: ClassVar[List[str]] = ["interval", "level"]
33
33
 
34
34
  model_config = ConfigDict(
@@ -18,8 +18,8 @@ import pprint
18
18
  import re # noqa: F401
19
19
  import json
20
20
 
21
- from pydantic import BaseModel, ConfigDict, Field, StrictFloat, StrictInt, StrictStr
22
- from typing import Any, ClassVar, Dict, List, Optional, Union
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
@@ -29,11 +29,13 @@ class MetricAggregationListItem(BaseModel):
29
29
  """ # noqa: E501
30
30
  device_name: Optional[StrictStr] = Field(default=None, alias="deviceName")
31
31
  device_uid: Optional[StrictStr] = Field(default=None, alias="deviceUid")
32
- managed_tenant_name: Optional[StrictStr] = Field(default=None, alias="managedTenantName")
33
- managed_tenant_uid: Optional[StrictStr] = Field(default=None, alias="managedTenantUid")
32
+ interface_name: Optional[StrictStr] = Field(default=None, alias="interfaceName")
33
+ interface_uid: Optional[StrictStr] = Field(default=None, alias="interfaceUid")
34
34
  metric: Optional[StrictStr] = None
35
- value: Optional[Union[StrictFloat, StrictInt]] = None
36
- __properties: ClassVar[List[str]] = ["deviceName", "deviceUid", "managedTenantName", "managedTenantUid", "metric", "value"]
35
+ tenant_name: Optional[StrictStr] = Field(default=None, alias="tenantName")
36
+ tenant_uid: Optional[StrictStr] = Field(default=None, alias="tenantUid")
37
+ value: Optional[StrictStr] = None
38
+ __properties: ClassVar[List[str]] = ["deviceName", "deviceUid", "interfaceName", "interfaceUid", "metric", "tenantName", "tenantUid", "value"]
37
39
 
38
40
  model_config = ConfigDict(
39
41
  populate_by_name=True,
@@ -88,9 +90,11 @@ class MetricAggregationListItem(BaseModel):
88
90
  _obj = cls.model_validate({
89
91
  "deviceName": obj.get("deviceName"),
90
92
  "deviceUid": obj.get("deviceUid"),
91
- "managedTenantName": obj.get("managedTenantName"),
92
- "managedTenantUid": obj.get("managedTenantUid"),
93
+ "interfaceName": obj.get("interfaceName"),
94
+ "interfaceUid": obj.get("interfaceUid"),
93
95
  "metric": obj.get("metric"),
96
+ "tenantName": obj.get("tenantName"),
97
+ "tenantUid": obj.get("tenantUid"),
94
98
  "value": obj.get("value")
95
99
  })
96
100
  return _obj
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Cisco Security Cloud Control Firewall Manager API
5
+
6
+ Use the documentation to explore the endpoints Security Cloud Control Firewall Manager has to offer
7
+
8
+ The version of the OpenAPI document: 1.15.0
9
+ Contact: cdo.tac@cisco.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
+ from typing_extensions import Annotated
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class MspCalculateCompatibleUpgradeVersionsInput(BaseModel):
28
+ """
29
+ List of unique identifiers, represented as UUIDs, of the devices in Security Cloud Control. Note that all the specified devices must be in tenants managed by the MSP portal.
30
+ """ # noqa: E501
31
+ device_uids: Optional[Annotated[List[StrictStr], Field(min_length=1, max_length=50)]] = Field(default=None, description="The list of devices to calculate compatible upgrade versions for. All of the devices must exist, be associated with the managed tenant, and be in the connectivity state 'ONLINE'.", alias="deviceUids")
32
+ __properties: ClassVar[List[str]] = ["deviceUids"]
33
+
34
+ model_config = ConfigDict(
35
+ populate_by_name=True,
36
+ validate_assignment=True,
37
+ protected_namespaces=(),
38
+ )
39
+
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of MspCalculateCompatibleUpgradeVersionsInput from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ return _dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
77
+ """Create an instance of MspCalculateCompatibleUpgradeVersionsInput from a dict"""
78
+ if obj is None:
79
+ return None
80
+
81
+ if not isinstance(obj, dict):
82
+ return cls.model_validate(obj)
83
+
84
+ _obj = cls.model_validate({
85
+ "deviceUids": obj.get("deviceUids")
86
+ })
87
+ return _obj
88
+
89
+
@@ -26,7 +26,9 @@ from scc_firewall_manager_sdk.models.asa_failover_mode import AsaFailoverMode
26
26
  from scc_firewall_manager_sdk.models.config_state import ConfigState
27
27
  from scc_firewall_manager_sdk.models.conflict_detection_state import ConflictDetectionState
28
28
  from scc_firewall_manager_sdk.models.connectivity_state import ConnectivityState
29
+ from scc_firewall_manager_sdk.models.device_maintenance_window import DeviceMaintenanceWindow
29
30
  from scc_firewall_manager_sdk.models.entity_type import EntityType
31
+ from scc_firewall_manager_sdk.models.fmc_device_record import FmcDeviceRecord
30
32
  from scc_firewall_manager_sdk.models.ftd_cluster_info import FtdClusterInfo
31
33
  from scc_firewall_manager_sdk.models.ftd_ha_info import FtdHaInfo
32
34
  from scc_firewall_manager_sdk.models.labels import Labels
@@ -46,6 +48,8 @@ class MspManagedDevice(BaseModel):
46
48
  config_state: Optional[ConfigState] = Field(default=None, alias="configState")
47
49
  conflict_detection_state: Optional[ConflictDetectionState] = Field(default=None, alias="conflictDetectionState")
48
50
  connectivity_state: Optional[ConnectivityState] = Field(default=None, alias="connectivityState")
51
+ device_maintenance_window: Optional[DeviceMaintenanceWindow] = Field(default=None, alias="deviceMaintenanceWindow")
52
+ device_record_on_fmc: Optional[FmcDeviceRecord] = Field(default=None, alias="deviceRecordOnFmc")
49
53
  device_type: Optional[EntityType] = Field(default=None, alias="deviceType")
50
54
  ftd_cluster_info: Optional[FtdClusterInfo] = Field(default=None, alias="ftdClusterInfo")
51
55
  ftd_ha_info: Optional[FtdHaInfo] = Field(default=None, alias="ftdHaInfo")
@@ -63,7 +67,7 @@ class MspManagedDevice(BaseModel):
63
67
  software_version: Optional[StrictStr] = Field(default=None, description="The version of the software running on the device.", alias="softwareVersion")
64
68
  tenant_uid: Optional[StrictStr] = Field(default=None, alias="tenantUid")
65
69
  uid: Optional[StrictStr] = Field(default=None, description="The unique identifier, represented as a UUID, of the device in Security Cloud Control.")
66
- __properties: ClassVar[List[str]] = ["address", "asaFailoverMate", "asaFailoverMode", "asaFailoverState", "certificateExpiryDate", "chassisSerial", "configState", "conflictDetectionState", "connectivityState", "deviceType", "ftdClusterInfo", "ftdHaInfo", "hardwareModel", "labels", "managedTenantDisplayName", "managedTenantName", "managedTenantRegion", "managedTenantUid", "modelNumber", "name", "raVpnCertificateExpiryDate", "redundancyMode", "serial", "softwareVersion", "tenantUid", "uid"]
70
+ __properties: ClassVar[List[str]] = ["address", "asaFailoverMate", "asaFailoverMode", "asaFailoverState", "certificateExpiryDate", "chassisSerial", "configState", "conflictDetectionState", "connectivityState", "deviceMaintenanceWindow", "deviceRecordOnFmc", "deviceType", "ftdClusterInfo", "ftdHaInfo", "hardwareModel", "labels", "managedTenantDisplayName", "managedTenantName", "managedTenantRegion", "managedTenantUid", "modelNumber", "name", "raVpnCertificateExpiryDate", "redundancyMode", "serial", "softwareVersion", "tenantUid", "uid"]
67
71
 
68
72
  @field_validator('redundancy_mode')
69
73
  def redundancy_mode_validate_enum(cls, value):
@@ -117,6 +121,12 @@ class MspManagedDevice(BaseModel):
117
121
  # override the default output from pydantic by calling `to_dict()` of asa_failover_mate
118
122
  if self.asa_failover_mate:
119
123
  _dict['asaFailoverMate'] = self.asa_failover_mate.to_dict()
124
+ # override the default output from pydantic by calling `to_dict()` of device_maintenance_window
125
+ if self.device_maintenance_window:
126
+ _dict['deviceMaintenanceWindow'] = self.device_maintenance_window.to_dict()
127
+ # override the default output from pydantic by calling `to_dict()` of device_record_on_fmc
128
+ if self.device_record_on_fmc:
129
+ _dict['deviceRecordOnFmc'] = self.device_record_on_fmc.to_dict()
120
130
  # override the default output from pydantic by calling `to_dict()` of ftd_cluster_info
121
131
  if self.ftd_cluster_info:
122
132
  _dict['ftdClusterInfo'] = self.ftd_cluster_info.to_dict()
@@ -147,6 +157,8 @@ class MspManagedDevice(BaseModel):
147
157
  "configState": obj.get("configState"),
148
158
  "conflictDetectionState": obj.get("conflictDetectionState"),
149
159
  "connectivityState": obj.get("connectivityState"),
160
+ "deviceMaintenanceWindow": DeviceMaintenanceWindow.from_dict(obj["deviceMaintenanceWindow"]) if obj.get("deviceMaintenanceWindow") is not None else None,
161
+ "deviceRecordOnFmc": FmcDeviceRecord.from_dict(obj["deviceRecordOnFmc"]) if obj.get("deviceRecordOnFmc") is not None else None,
150
162
  "deviceType": obj.get("deviceType"),
151
163
  "ftdClusterInfo": FtdClusterInfo.from_dict(obj["ftdClusterInfo"]) if obj.get("ftdClusterInfo") is not None else None,
152
164
  "ftdHaInfo": FtdHaInfo.from_dict(obj["ftdHaInfo"]) if obj.get("ftdHaInfo") is not None else None,
@@ -35,11 +35,13 @@ class MspManagedDeviceDistinctAttributeValues(BaseModel):
35
35
  conflict_detection_states: Optional[List[ConflictDetectionState]] = Field(default=None, description="The distinct conflict detection states for the devices managed by the MSP Portal.", alias="conflictDetectionStates")
36
36
  connectivity_states: Optional[List[ConnectivityState]] = Field(default=None, description="The distinct connectivity states for the devices managed by the MSP Portal.", alias="connectivityStates")
37
37
  device_types: Optional[List[EntityType]] = Field(default=None, description="The distinct device types for the devices managed by the MSP Portal.", alias="deviceTypes")
38
+ hardware_models: Optional[List[StrictStr]] = Field(default=None, description="The distinct hardware models for the devices managed by the MSP Portal.", alias="hardwareModels")
38
39
  managed_tenant_display_names: Optional[List[StrictStr]] = Field(default=None, description="The display names of the tenants that have devices onboarded and are managed by the MSP Portal.", alias="managedTenantDisplayNames")
39
40
  managed_tenant_names: Optional[List[StrictStr]] = Field(default=None, description="The names of the tenants that have devices onboarded and are managed by the MSP Portal.", alias="managedTenantNames")
41
+ model_numbers: Optional[List[StrictStr]] = Field(default=None, description="The distinct model numbers for the devices managed by the MSP Portal.", alias="modelNumbers")
40
42
  redundancy_modes: Optional[List[StrictStr]] = Field(default=None, description="The distinct redundancy modes for the devices managed by the MSP Portal.", alias="redundancyModes")
41
43
  software_versions: Optional[Dict[str, List[StrictStr]]] = Field(default=None, description="The software versions of the devices managed by the MSP Portal.", alias="softwareVersions")
42
- __properties: ClassVar[List[str]] = ["configStates", "conflictDetectionStates", "connectivityStates", "deviceTypes", "managedTenantDisplayNames", "managedTenantNames", "redundancyModes", "softwareVersions"]
44
+ __properties: ClassVar[List[str]] = ["configStates", "conflictDetectionStates", "connectivityStates", "deviceTypes", "hardwareModels", "managedTenantDisplayNames", "managedTenantNames", "modelNumbers", "redundancyModes", "softwareVersions"]
43
45
 
44
46
  @field_validator('redundancy_modes')
45
47
  def redundancy_modes_validate_enum(cls, value):
@@ -107,8 +109,10 @@ class MspManagedDeviceDistinctAttributeValues(BaseModel):
107
109
  "conflictDetectionStates": obj.get("conflictDetectionStates"),
108
110
  "connectivityStates": obj.get("connectivityStates"),
109
111
  "deviceTypes": obj.get("deviceTypes"),
112
+ "hardwareModels": obj.get("hardwareModels"),
110
113
  "managedTenantDisplayNames": obj.get("managedTenantDisplayNames"),
111
114
  "managedTenantNames": obj.get("managedTenantNames"),
115
+ "modelNumbers": obj.get("modelNumbers"),
112
116
  "redundancyModes": obj.get("redundancyModes"),
113
117
  "softwareVersions": obj.get("softwareVersions")
114
118
  })
@@ -0,0 +1,97 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Cisco Security Cloud Control Firewall Manager API
5
+
6
+ Use the documentation to explore the endpoints Security Cloud Control Firewall Manager has to offer
7
+
8
+ The version of the OpenAPI document: 1.15.0
9
+ Contact: cdo.tac@cisco.com
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+
16
+ from __future__ import annotations
17
+ import pprint
18
+ import re # noqa: F401
19
+ import json
20
+
21
+ from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
22
+ from typing import Any, ClassVar, Dict, List, Optional
23
+ from typing_extensions import Annotated
24
+ from typing import Optional, Set
25
+ from typing_extensions import Self
26
+
27
+ class MspUpgradeFtdDevicesInput(BaseModel):
28
+ """
29
+ MspUpgradeFtdDevicesInput
30
+ """ # noqa: E501
31
+ device_uids: Annotated[List[StrictStr], Field(min_length=1)] = Field(description=" <p>List of device identifiers to upgrade in Security Cloud Control.</p> <p>Each entry must meet all of the following:</p> <ul> <li>The identifier is a UUID (unique identifier).</li> <li>The device is managed by the MSSP portal.</li> <li>The device type is <code>CDFMC_MANAGED_FTD</code>.</li> <li>The connectivity state is <code>ONLINE</code>.</li> <li>The device is compatible with the specified software version.</li> </ul> ", alias="deviceUids")
32
+ ignore_maintenance_window: Optional[StrictBool] = Field(default=None, description=" <p>A boolean flag that determines whether device maintenance windows should be ignored during a full upgrade.</p> <ul> <li>If <code>stageUpgradeOnly</code> is set to <code>false</code>, this field is ignored.</li> <li>If <code>stageUpgradeOnly</code> is <code>true</code> and this field is set to <code>false</code> (the default), the upgrade will fail if any selected device is outside its maintenance window.</li> </ul> ", alias="ignoreMaintenanceWindow")
33
+ name: Optional[StrictStr] = Field(default=None, description="Specify a human-readable name for the upgrade run.")
34
+ software_version: Optional[StrictStr] = Field(default=None, description="Specify the software version to which all devices will be upgraded.", alias="softwareVersion")
35
+ stage_upgrade_only: Optional[StrictBool] = Field(default=False, description="A boolean value, indicating whether the upgrade should be staged. If set to true, the image will be downloaded onto the devices and readiness checks will be performed. However, the upgrade will not be applied to the devices.", alias="stageUpgradeOnly")
36
+ __properties: ClassVar[List[str]] = ["deviceUids", "ignoreMaintenanceWindow", "name", "softwareVersion", "stageUpgradeOnly"]
37
+
38
+ model_config = ConfigDict(
39
+ populate_by_name=True,
40
+ validate_assignment=True,
41
+ protected_namespaces=(),
42
+ )
43
+
44
+
45
+ def to_str(self) -> str:
46
+ """Returns the string representation of the model using alias"""
47
+ return pprint.pformat(self.model_dump(by_alias=True))
48
+
49
+ def to_json(self) -> str:
50
+ """Returns the JSON representation of the model using alias"""
51
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
52
+ return json.dumps(self.to_dict())
53
+
54
+ @classmethod
55
+ def from_json(cls, json_str: str) -> Optional[Self]:
56
+ """Create an instance of MspUpgradeFtdDevicesInput from a JSON string"""
57
+ return cls.from_dict(json.loads(json_str))
58
+
59
+ def to_dict(self) -> Dict[str, Any]:
60
+ """Return the dictionary representation of the model using alias.
61
+
62
+ This has the following differences from calling pydantic's
63
+ `self.model_dump(by_alias=True)`:
64
+
65
+ * `None` is only added to the output dict for nullable fields that
66
+ were set at model initialization. Other fields with value `None`
67
+ are ignored.
68
+ """
69
+ excluded_fields: Set[str] = set([
70
+ ])
71
+
72
+ _dict = self.model_dump(
73
+ by_alias=True,
74
+ exclude=excluded_fields,
75
+ exclude_none=True,
76
+ )
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of MspUpgradeFtdDevicesInput from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "deviceUids": obj.get("deviceUids"),
90
+ "ignoreMaintenanceWindow": obj.get("ignoreMaintenanceWindow"),
91
+ "name": obj.get("name"),
92
+ "softwareVersion": obj.get("softwareVersion"),
93
+ "stageUpgradeOnly": obj.get("stageUpgradeOnly") if obj.get("stageUpgradeOnly") is not None else False
94
+ })
95
+ return _obj
96
+
97
+