ibm-platform-services 0.71.0__tar.gz → 0.72.0__tar.gz

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 (34) hide show
  1. {ibm_platform_services-0.71.0/ibm_platform_services.egg-info → ibm_platform_services-0.72.0}/PKG-INFO +5 -5
  2. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/README.md +2 -2
  3. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/iam_policy_management_v1.py +492 -54
  4. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/version.py +1 -1
  5. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0/ibm_platform_services.egg-info}/PKG-INFO +5 -5
  6. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/pyproject.toml +3 -3
  7. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/LICENSE +0 -0
  8. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/MANIFEST.in +0 -0
  9. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/__init__.py +0 -0
  10. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/case_management_v1.py +0 -0
  11. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/catalog_management_v1.py +0 -0
  12. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/common.py +0 -0
  13. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/context_based_restrictions_v1.py +0 -0
  14. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/enterprise_billing_units_v1.py +0 -0
  15. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/enterprise_management_v1.py +0 -0
  16. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/enterprise_usage_reports_v1.py +0 -0
  17. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/global_catalog_v1.py +0 -0
  18. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/global_search_v2.py +0 -0
  19. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/global_tagging_v1.py +0 -0
  20. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/iam_access_groups_v2.py +0 -0
  21. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/iam_identity_v1.py +0 -0
  22. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/ibm_cloud_shell_v1.py +0 -0
  23. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/open_service_broker_v1.py +0 -0
  24. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/partner_management_v1.py +0 -0
  25. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/resource_controller_v2.py +0 -0
  26. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/resource_manager_v2.py +0 -0
  27. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/usage_metering_v4.py +0 -0
  28. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/usage_reports_v4.py +0 -0
  29. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services/user_management_v1.py +0 -0
  30. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services.egg-info/SOURCES.txt +0 -0
  31. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services.egg-info/dependency_links.txt +0 -0
  32. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services.egg-info/requires.txt +0 -0
  33. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/ibm_platform_services.egg-info/top_level.txt +0 -0
  34. {ibm_platform_services-0.71.0 → ibm_platform_services-0.72.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ibm-platform-services
3
- Version: 0.71.0
3
+ Version: 0.72.0
4
4
  Summary: Python client library for IBM Cloud Platform Services
5
5
  Author-email: IBM <devxsdk@us.ibm.com>
6
6
  Project-URL: Repository, https://github.com/IBM/platform-services-python-sdk
@@ -12,11 +12,11 @@ Project-URL: License, https://github.com/IBM/platform-services-python-sdk/blob/m
12
12
  Keywords: ibm,cloud,ibm cloud services,ibm cloud platform services
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Development Status :: 4 - Beta
21
21
  Classifier: Environment :: Console
22
22
  Classifier: Intended Audience :: Developers
@@ -25,7 +25,7 @@ Classifier: Operating System :: OS Independent
25
25
  Classifier: Topic :: Software Development :: Libraries
26
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
27
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
28
- Requires-Python: >=3.9
28
+ Requires-Python: >=3.10
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
31
  Requires-Dist: ibm_cloud_sdk_core<4.0.0,>=3.24.2
@@ -51,7 +51,7 @@ Dynamic: license-file
51
51
  [![CLA assistant](https://cla-assistant.io/readme/badge/IBM/platform-services-python-sdk)](https://cla-assistant.io/IBM/platform-services-python-sdk)
52
52
 
53
53
 
54
- # IBM Cloud Platform Services Python SDK Version 0.71.0
54
+ # IBM Cloud Platform Services Python SDK Version 0.72.0
55
55
 
56
56
  Python client library to interact with various
57
57
  [IBM Cloud Platform Service APIs](https://cloud.ibm.com/docs?tab=api-docs&category=platform_services).
@@ -124,7 +124,7 @@ Service Name | Module Name | Service Class Name
124
124
 
125
125
  * An [IBM Cloud][ibm-cloud-onboarding] account.
126
126
  * An IAM API key to allow the SDK to access your account. Create one [here](https://cloud.ibm.com/iam/apikeys).
127
- * Python 3.9 or above.
127
+ * Python 3.10 or above.
128
128
 
129
129
  ## Installation
130
130
 
@@ -8,7 +8,7 @@
8
8
  [![CLA assistant](https://cla-assistant.io/readme/badge/IBM/platform-services-python-sdk)](https://cla-assistant.io/IBM/platform-services-python-sdk)
9
9
 
10
10
 
11
- # IBM Cloud Platform Services Python SDK Version 0.71.0
11
+ # IBM Cloud Platform Services Python SDK Version 0.72.0
12
12
 
13
13
  Python client library to interact with various
14
14
  [IBM Cloud Platform Service APIs](https://cloud.ibm.com/docs?tab=api-docs&category=platform_services).
@@ -81,7 +81,7 @@ Service Name | Module Name | Service Class Name
81
81
 
82
82
  * An [IBM Cloud][ibm-cloud-onboarding] account.
83
83
  * An IAM API key to allow the SDK to access your account. Create one [here](https://cloud.ibm.com/iam/apikeys).
84
- * Python 3.9 or above.
84
+ * Python 3.10 or above.
85
85
 
86
86
  ## Installation
87
87
 
@@ -2073,10 +2073,10 @@ class IamPolicyManagementV1(BaseService):
2073
2073
  :param str policy_template_id: The policy template ID.
2074
2074
  :param str version: The policy template version.
2075
2075
  :param str if_match: The revision number for updating a policy template
2076
- version and must match the ETag value of the existing policy template
2076
+ version and must match the Etag value of the existing policy template
2077
2077
  version. The Etag can be retrieved using the GET
2078
2078
  /v1/policy_templates/{policy_template_id}/versions/{version} API and
2079
- looking at the ETag response header.
2079
+ looking at the Etag response header.
2080
2080
  :param TemplatePolicy policy: The core set of properties associated with
2081
2081
  the template's policy object.
2082
2082
  :param str name: (optional) Required field when creating a new template.
@@ -3872,7 +3872,7 @@ class IamPolicyManagementV1(BaseService):
3872
3872
  *,
3873
3873
  description: Optional[str] = None,
3874
3874
  committed: Optional[bool] = None,
3875
- role: Optional['TemplateRole'] = None,
3875
+ role: Optional['RoleTemplatePrototypeRole'] = None,
3876
3876
  accept_language: Optional[str] = None,
3877
3877
  **kwargs,
3878
3878
  ) -> DetailedResponse:
@@ -3893,8 +3893,8 @@ class IamPolicyManagementV1(BaseService):
3893
3893
  :param bool committed: (optional) Committed status of the template. If
3894
3894
  committed is set to true, then the template version can no longer be
3895
3895
  updated.
3896
- :param TemplateRole role: (optional) The role properties that are created
3897
- in an action resource when the template is assigned.
3896
+ :param RoleTemplatePrototypeRole role: (optional) The role properties that
3897
+ are created in an action resource when the template is assigned.
3898
3898
  :param str accept_language: (optional) Language code for translations
3899
3899
  * `default` - English
3900
3900
  * `de` - German (Standard)
@@ -4056,10 +4056,10 @@ class IamPolicyManagementV1(BaseService):
4056
4056
  def create_role_template_version(
4057
4057
  self,
4058
4058
  role_template_id: str,
4059
- role: 'TemplateRole',
4060
4059
  *,
4061
4060
  name: Optional[str] = None,
4062
4061
  description: Optional[str] = None,
4062
+ role: Optional['TemplateRole'] = None,
4063
4063
  committed: Optional[bool] = None,
4064
4064
  **kwargs,
4065
4065
  ) -> DetailedResponse:
@@ -4070,14 +4070,14 @@ class IamPolicyManagementV1(BaseService):
4070
4070
  role template that is committed.
4071
4071
 
4072
4072
  :param str role_template_id: The role template ID.
4073
- :param TemplateRole role: The role properties that are created in an action
4074
- resource when the template is assigned.
4075
4073
  :param str name: (optional) Required field when creating a new template.
4076
4074
  Otherwise, this field is optional. If the field is included, it will change
4077
4075
  the name value for all existing versions of the template.
4078
4076
  :param str description: (optional) Description of the role template. This
4079
4077
  is shown to users in the enterprise account. Use this to describe the
4080
4078
  purpose or context of the role for enterprise users managing IAM templates.
4079
+ :param TemplateRole role: (optional) The role properties that are created
4080
+ in an action resource when the template is assigned.
4081
4081
  :param bool committed: (optional) Committed status of the template version.
4082
4082
  If committed is set to true, then the template version can no longer be
4083
4083
  updated.
@@ -4088,9 +4088,8 @@ class IamPolicyManagementV1(BaseService):
4088
4088
 
4089
4089
  if not role_template_id:
4090
4090
  raise ValueError('role_template_id must be provided')
4091
- if role is None:
4092
- raise ValueError('role must be provided')
4093
- role = convert_model(role)
4091
+ if role is not None:
4092
+ role = convert_model(role)
4094
4093
  headers = {}
4095
4094
  sdk_headers = get_sdk_headers(
4096
4095
  service_name=self.DEFAULT_SERVICE_NAME,
@@ -4100,9 +4099,9 @@ class IamPolicyManagementV1(BaseService):
4100
4099
  headers.update(sdk_headers)
4101
4100
 
4102
4101
  data = {
4103
- 'role': role,
4104
4102
  'name': name,
4105
4103
  'description': description,
4104
+ 'role': role,
4106
4105
  'committed': committed,
4107
4106
  }
4108
4107
  data = {k: v for (k, v) in data.items() if v is not None}
@@ -4193,10 +4192,10 @@ class IamPolicyManagementV1(BaseService):
4193
4192
  role_template_id: str,
4194
4193
  version: str,
4195
4194
  if_match: str,
4196
- role: 'TemplateRole',
4197
4195
  *,
4198
4196
  name: Optional[str] = None,
4199
4197
  description: Optional[str] = None,
4198
+ role: Optional['TemplateRole'] = None,
4200
4199
  committed: Optional[bool] = None,
4201
4200
  **kwargs,
4202
4201
  ) -> DetailedResponse:
@@ -4213,14 +4212,14 @@ class IamPolicyManagementV1(BaseService):
4213
4212
  The Etag can be retrieved using the GET
4214
4213
  /v1/role_templates/{template_id}/versions/{version} API and looking at the
4215
4214
  Etag response header.
4216
- :param TemplateRole role: The role properties that are created in an action
4217
- resource when the template is assigned.
4218
4215
  :param str name: (optional) Required field when creating a new template.
4219
4216
  Otherwise, this field is optional. If the field is included, it will change
4220
4217
  the name value for all existing versions of the template.
4221
4218
  :param str description: (optional) Description of the role template. This
4222
4219
  is shown to users in the enterprise account. Use this to describe the
4223
4220
  purpose or context of the role for enterprise users managing IAM templates.
4221
+ :param TemplateRole role: (optional) The role properties that are created
4222
+ in an action resource when the template is assigned.
4224
4223
  :param bool committed: (optional) Committed status of the template version.
4225
4224
  If committed is set to true, then the template version can no longer be
4226
4225
  updated.
@@ -4235,9 +4234,8 @@ class IamPolicyManagementV1(BaseService):
4235
4234
  raise ValueError('version must be provided')
4236
4235
  if not if_match:
4237
4236
  raise ValueError('if_match must be provided')
4238
- if role is None:
4239
- raise ValueError('role must be provided')
4240
- role = convert_model(role)
4237
+ if role is not None:
4238
+ role = convert_model(role)
4241
4239
  headers = {
4242
4240
  'If-Match': if_match,
4243
4241
  }
@@ -4249,9 +4247,9 @@ class IamPolicyManagementV1(BaseService):
4249
4247
  headers.update(sdk_headers)
4250
4248
 
4251
4249
  data = {
4252
- 'role': role,
4253
4250
  'name': name,
4254
4251
  'description': description,
4252
+ 'role': role,
4255
4253
  'committed': committed,
4256
4254
  }
4257
4255
  data = {k: v for (k, v) in data.items() if v is not None}
@@ -10552,7 +10550,7 @@ class RoleAssignmentResource:
10552
10550
 
10553
10551
  class RoleAssignmentResourceCreated:
10554
10552
  """
10555
- On success, it includes the action control assigned.
10553
+ On success, it includes the role assigned.
10556
10554
 
10557
10555
  :param str id: (optional) role id.
10558
10556
  """
@@ -10613,7 +10611,7 @@ class RoleAssignmentResourceRole:
10613
10611
  Set of properties of the assigned resource or error message if assignment failed.
10614
10612
 
10615
10613
  :param RoleAssignmentResourceCreated resource_created: (optional) On success, it
10616
- includes the action control assigned.
10614
+ includes the role assigned.
10617
10615
  :param AssignmentResourceError error_message: (optional) Body parameters for
10618
10616
  assignment error.
10619
10617
  """
@@ -10628,7 +10626,7 @@ class RoleAssignmentResourceRole:
10628
10626
  Initialize a RoleAssignmentResourceRole object.
10629
10627
 
10630
10628
  :param RoleAssignmentResourceCreated resource_created: (optional) On
10631
- success, it includes the action control assigned.
10629
+ success, it includes the role assigned.
10632
10630
  :param AssignmentResourceError error_message: (optional) Body parameters
10633
10631
  for assignment error.
10634
10632
  """
@@ -10863,8 +10861,8 @@ class RoleTemplate:
10863
10861
  :param str account_id: Enterprise account ID where this template is created.
10864
10862
  :param bool committed: (optional) Committed status of the template. If committed
10865
10863
  is set to true, then the template version can no longer be updated.
10866
- :param TemplateRole role: (optional) The role properties that are created in an
10867
- action resource when the template is assigned.
10864
+ :param RoleTemplatePrototypeRole role: (optional) The role properties that are
10865
+ created in an action resource when the template is assigned.
10868
10866
  :param str id: (optional) The role template ID.
10869
10867
  :param str href: (optional) The href URL that links to the role templates API by
10870
10868
  role template ID.
@@ -10884,13 +10882,13 @@ class RoleTemplate:
10884
10882
  def __init__(
10885
10883
  self,
10886
10884
  name: str,
10887
- description: str,
10888
10885
  account_id: str,
10889
10886
  version: str,
10890
10887
  state: str,
10891
10888
  *,
10889
+ description: Optional[str] = None,
10892
10890
  committed: Optional[bool] = None,
10893
- role: Optional['TemplateRole'] = None,
10891
+ role: Optional['RoleTemplatePrototypeRole'] = None,
10894
10892
  id: Optional[str] = None,
10895
10893
  href: Optional[str] = None,
10896
10894
  created_at: Optional[datetime] = None,
@@ -10915,8 +10913,8 @@ class RoleTemplate:
10915
10913
  :param bool committed: (optional) Committed status of the template. If
10916
10914
  committed is set to true, then the template version can no longer be
10917
10915
  updated.
10918
- :param TemplateRole role: (optional) The role properties that are created
10919
- in an action resource when the template is assigned.
10916
+ :param RoleTemplatePrototypeRole role: (optional) The role properties that
10917
+ are created in an action resource when the template is assigned.
10920
10918
  """
10921
10919
  self.name = name
10922
10920
  self.description = description
@@ -10942,8 +10940,6 @@ class RoleTemplate:
10942
10940
  raise ValueError('Required property \'name\' not present in RoleTemplate JSON')
10943
10941
  if (description := _dict.get('description')) is not None:
10944
10942
  args['description'] = description
10945
- else:
10946
- raise ValueError('Required property \'description\' not present in RoleTemplate JSON')
10947
10943
  if (account_id := _dict.get('account_id')) is not None:
10948
10944
  args['account_id'] = account_id
10949
10945
  else:
@@ -10951,7 +10947,7 @@ class RoleTemplate:
10951
10947
  if (committed := _dict.get('committed')) is not None:
10952
10948
  args['committed'] = committed
10953
10949
  if (role := _dict.get('role')) is not None:
10954
- args['role'] = TemplateRole.from_dict(role)
10950
+ args['role'] = RoleTemplatePrototypeRole.from_dict(role)
10955
10951
  if (id := _dict.get('id')) is not None:
10956
10952
  args['id'] = id
10957
10953
  if (href := _dict.get('href')) is not None:
@@ -11155,6 +11151,176 @@ class RoleTemplateCollection:
11155
11151
  return not self == other
11156
11152
 
11157
11153
 
11154
+ class RoleTemplatePrototypeRole:
11155
+ """
11156
+ The role properties that are created in an action resource when the template is
11157
+ assigned.
11158
+
11159
+ :param str name: The name of the role that is used in the CRN. This must be
11160
+ alphanumeric and capitalized.
11161
+ :param str display_name: The display the name of the role that is shown in the
11162
+ console.
11163
+ :param str service_name: (optional) The service name that the role refers.
11164
+ :param str description: (optional) Description of the role.
11165
+ :param List[str] actions: The actions of the role.
11166
+ """
11167
+
11168
+ def __init__(
11169
+ self,
11170
+ name: str,
11171
+ display_name: str,
11172
+ actions: List[str],
11173
+ *,
11174
+ service_name: Optional[str] = None,
11175
+ description: Optional[str] = None,
11176
+ ) -> None:
11177
+ """
11178
+ Initialize a RoleTemplatePrototypeRole object.
11179
+
11180
+ :param str name: The name of the role that is used in the CRN. This must be
11181
+ alphanumeric and capitalized.
11182
+ :param str display_name: The display the name of the role that is shown in
11183
+ the console.
11184
+ :param List[str] actions: The actions of the role.
11185
+ :param str service_name: (optional) The service name that the role refers.
11186
+ :param str description: (optional) Description of the role.
11187
+ """
11188
+ self.name = name
11189
+ self.display_name = display_name
11190
+ self.service_name = service_name
11191
+ self.description = description
11192
+ self.actions = actions
11193
+
11194
+ @classmethod
11195
+ def from_dict(cls, _dict: Dict) -> 'RoleTemplatePrototypeRole':
11196
+ """Initialize a RoleTemplatePrototypeRole object from a json dictionary."""
11197
+ args = {}
11198
+ if (name := _dict.get('name')) is not None:
11199
+ args['name'] = name
11200
+ else:
11201
+ raise ValueError('Required property \'name\' not present in RoleTemplatePrototypeRole JSON')
11202
+ if (display_name := _dict.get('display_name')) is not None:
11203
+ args['display_name'] = display_name
11204
+ else:
11205
+ raise ValueError('Required property \'display_name\' not present in RoleTemplatePrototypeRole JSON')
11206
+ if (service_name := _dict.get('service_name')) is not None:
11207
+ args['service_name'] = service_name
11208
+ if (description := _dict.get('description')) is not None:
11209
+ args['description'] = description
11210
+ if (actions := _dict.get('actions')) is not None:
11211
+ args['actions'] = actions
11212
+ else:
11213
+ raise ValueError('Required property \'actions\' not present in RoleTemplatePrototypeRole JSON')
11214
+ return cls(**args)
11215
+
11216
+ @classmethod
11217
+ def _from_dict(cls, _dict):
11218
+ """Initialize a RoleTemplatePrototypeRole object from a json dictionary."""
11219
+ return cls.from_dict(_dict)
11220
+
11221
+ def to_dict(self) -> Dict:
11222
+ """Return a json dictionary representing this model."""
11223
+ _dict = {}
11224
+ if hasattr(self, 'name') and self.name is not None:
11225
+ _dict['name'] = self.name
11226
+ if hasattr(self, 'display_name') and self.display_name is not None:
11227
+ _dict['display_name'] = self.display_name
11228
+ if hasattr(self, 'service_name') and self.service_name is not None:
11229
+ _dict['service_name'] = self.service_name
11230
+ if hasattr(self, 'description') and self.description is not None:
11231
+ _dict['description'] = self.description
11232
+ if hasattr(self, 'actions') and self.actions is not None:
11233
+ _dict['actions'] = self.actions
11234
+ return _dict
11235
+
11236
+ def _to_dict(self):
11237
+ """Return a json dictionary representing this model."""
11238
+ return self.to_dict()
11239
+
11240
+ def __str__(self) -> str:
11241
+ """Return a `str` version of this RoleTemplatePrototypeRole object."""
11242
+ return json.dumps(self.to_dict(), indent=2)
11243
+
11244
+ def __eq__(self, other: 'RoleTemplatePrototypeRole') -> bool:
11245
+ """Return `true` when self and other are equal, false otherwise."""
11246
+ if not isinstance(other, self.__class__):
11247
+ return False
11248
+ return self.__dict__ == other.__dict__
11249
+
11250
+ def __ne__(self, other: 'RoleTemplatePrototypeRole') -> bool:
11251
+ """Return `true` when self and other are not equal, false otherwise."""
11252
+ return not self == other
11253
+
11254
+
11255
+ class RoleTemplateReferencesItem:
11256
+ """
11257
+ A role template reference associated with a policy template.
11258
+
11259
+ :param str id: The role template ID.
11260
+ :param str version: Role template version.
11261
+ """
11262
+
11263
+ def __init__(
11264
+ self,
11265
+ id: str,
11266
+ version: str,
11267
+ ) -> None:
11268
+ """
11269
+ Initialize a RoleTemplateReferencesItem object.
11270
+
11271
+ :param str id: The role template ID.
11272
+ :param str version: Role template version.
11273
+ """
11274
+ self.id = id
11275
+ self.version = version
11276
+
11277
+ @classmethod
11278
+ def from_dict(cls, _dict: Dict) -> 'RoleTemplateReferencesItem':
11279
+ """Initialize a RoleTemplateReferencesItem object from a json dictionary."""
11280
+ args = {}
11281
+ if (id := _dict.get('id')) is not None:
11282
+ args['id'] = id
11283
+ else:
11284
+ raise ValueError('Required property \'id\' not present in RoleTemplateReferencesItem JSON')
11285
+ if (version := _dict.get('version')) is not None:
11286
+ args['version'] = version
11287
+ else:
11288
+ raise ValueError('Required property \'version\' not present in RoleTemplateReferencesItem JSON')
11289
+ return cls(**args)
11290
+
11291
+ @classmethod
11292
+ def _from_dict(cls, _dict):
11293
+ """Initialize a RoleTemplateReferencesItem object from a json dictionary."""
11294
+ return cls.from_dict(_dict)
11295
+
11296
+ def to_dict(self) -> Dict:
11297
+ """Return a json dictionary representing this model."""
11298
+ _dict = {}
11299
+ if hasattr(self, 'id') and self.id is not None:
11300
+ _dict['id'] = self.id
11301
+ if hasattr(self, 'version') and self.version is not None:
11302
+ _dict['version'] = self.version
11303
+ return _dict
11304
+
11305
+ def _to_dict(self):
11306
+ """Return a json dictionary representing this model."""
11307
+ return self.to_dict()
11308
+
11309
+ def __str__(self) -> str:
11310
+ """Return a `str` version of this RoleTemplateReferencesItem object."""
11311
+ return json.dumps(self.to_dict(), indent=2)
11312
+
11313
+ def __eq__(self, other: 'RoleTemplateReferencesItem') -> bool:
11314
+ """Return `true` when self and other are equal, false otherwise."""
11315
+ if not isinstance(other, self.__class__):
11316
+ return False
11317
+ return self.__dict__ == other.__dict__
11318
+
11319
+ def __ne__(self, other: 'RoleTemplateReferencesItem') -> bool:
11320
+ """Return `true` when self and other are not equal, false otherwise."""
11321
+ return not self == other
11322
+
11323
+
11158
11324
  class RoleTemplateVersionsCollection:
11159
11325
  """
11160
11326
  A collection of versions for a specific role template.
@@ -11590,6 +11756,68 @@ class TemplateActionControl:
11590
11756
  return not self == other
11591
11757
 
11592
11758
 
11759
+ class TemplateControl:
11760
+ """
11761
+ Specifies the type of access that is granted by the policy.
11762
+
11763
+ :param TemplateGrant grant: Permission is granted by the policy.
11764
+ """
11765
+
11766
+ def __init__(
11767
+ self,
11768
+ grant: 'TemplateGrant',
11769
+ ) -> None:
11770
+ """
11771
+ Initialize a TemplateControl object.
11772
+
11773
+ :param TemplateGrant grant: Permission is granted by the policy.
11774
+ """
11775
+ self.grant = grant
11776
+
11777
+ @classmethod
11778
+ def from_dict(cls, _dict: Dict) -> 'TemplateControl':
11779
+ """Initialize a TemplateControl object from a json dictionary."""
11780
+ args = {}
11781
+ if (grant := _dict.get('grant')) is not None:
11782
+ args['grant'] = grant
11783
+ else:
11784
+ raise ValueError('Required property \'grant\' not present in TemplateControl JSON')
11785
+ return cls(**args)
11786
+
11787
+ @classmethod
11788
+ def _from_dict(cls, _dict):
11789
+ """Initialize a TemplateControl object from a json dictionary."""
11790
+ return cls.from_dict(_dict)
11791
+
11792
+ def to_dict(self) -> Dict:
11793
+ """Return a json dictionary representing this model."""
11794
+ _dict = {}
11795
+ if hasattr(self, 'grant') and self.grant is not None:
11796
+ if isinstance(self.grant, dict):
11797
+ _dict['grant'] = self.grant
11798
+ else:
11799
+ _dict['grant'] = self.grant.to_dict()
11800
+ return _dict
11801
+
11802
+ def _to_dict(self):
11803
+ """Return a json dictionary representing this model."""
11804
+ return self.to_dict()
11805
+
11806
+ def __str__(self) -> str:
11807
+ """Return a `str` version of this TemplateControl object."""
11808
+ return json.dumps(self.to_dict(), indent=2)
11809
+
11810
+ def __eq__(self, other: 'TemplateControl') -> bool:
11811
+ """Return `true` when self and other are equal, false otherwise."""
11812
+ if not isinstance(other, self.__class__):
11813
+ return False
11814
+ return self.__dict__ == other.__dict__
11815
+
11816
+ def __ne__(self, other: 'TemplateControl') -> bool:
11817
+ """Return `true` when self and other are not equal, false otherwise."""
11818
+ return not self == other
11819
+
11820
+
11593
11821
  class TemplateCountData:
11594
11822
  """
11595
11823
  policy template count details.
@@ -11666,6 +11894,90 @@ class TemplateCountData:
11666
11894
  return not self == other
11667
11895
 
11668
11896
 
11897
+ class TemplateGrant:
11898
+ """
11899
+ Permission is granted by the policy.
11900
+
11901
+ :param List[Roles] roles: (optional) A set of role Cloud Resource Names (CRNs)
11902
+ granted by the policy.
11903
+ :param List[RoleTemplateReferencesItem] role_template_references: (optional) A
11904
+ set of role template reference IDs granted by the policy.
11905
+ """
11906
+
11907
+ def __init__(
11908
+ self,
11909
+ *,
11910
+ roles: Optional[List['Roles']] = None,
11911
+ role_template_references: Optional[List['RoleTemplateReferencesItem']] = None,
11912
+ ) -> None:
11913
+ """
11914
+ Initialize a TemplateGrant object.
11915
+
11916
+ :param List[Roles] roles: (optional) A set of role Cloud Resource Names
11917
+ (CRNs) granted by the policy.
11918
+ :param List[RoleTemplateReferencesItem] role_template_references:
11919
+ (optional) A set of role template reference IDs granted by the policy.
11920
+ """
11921
+ self.roles = roles
11922
+ self.role_template_references = role_template_references
11923
+
11924
+ @classmethod
11925
+ def from_dict(cls, _dict: Dict) -> 'TemplateGrant':
11926
+ """Initialize a TemplateGrant object from a json dictionary."""
11927
+ args = {}
11928
+ if (roles := _dict.get('roles')) is not None:
11929
+ args['roles'] = [Roles.from_dict(v) for v in roles]
11930
+ if (role_template_references := _dict.get('role_template_references')) is not None:
11931
+ args['role_template_references'] = [
11932
+ RoleTemplateReferencesItem.from_dict(v) for v in role_template_references
11933
+ ]
11934
+ return cls(**args)
11935
+
11936
+ @classmethod
11937
+ def _from_dict(cls, _dict):
11938
+ """Initialize a TemplateGrant object from a json dictionary."""
11939
+ return cls.from_dict(_dict)
11940
+
11941
+ def to_dict(self) -> Dict:
11942
+ """Return a json dictionary representing this model."""
11943
+ _dict = {}
11944
+ if hasattr(self, 'roles') and self.roles is not None:
11945
+ roles_list = []
11946
+ for v in self.roles:
11947
+ if isinstance(v, dict):
11948
+ roles_list.append(v)
11949
+ else:
11950
+ roles_list.append(v.to_dict())
11951
+ _dict['roles'] = roles_list
11952
+ if hasattr(self, 'role_template_references') and self.role_template_references is not None:
11953
+ role_template_references_list = []
11954
+ for v in self.role_template_references:
11955
+ if isinstance(v, dict):
11956
+ role_template_references_list.append(v)
11957
+ else:
11958
+ role_template_references_list.append(v.to_dict())
11959
+ _dict['role_template_references'] = role_template_references_list
11960
+ return _dict
11961
+
11962
+ def _to_dict(self):
11963
+ """Return a json dictionary representing this model."""
11964
+ return self.to_dict()
11965
+
11966
+ def __str__(self) -> str:
11967
+ """Return a `str` version of this TemplateGrant object."""
11968
+ return json.dumps(self.to_dict(), indent=2)
11969
+
11970
+ def __eq__(self, other: 'TemplateGrant') -> bool:
11971
+ """Return `true` when self and other are equal, false otherwise."""
11972
+ if not isinstance(other, self.__class__):
11973
+ return False
11974
+ return self.__dict__ == other.__dict__
11975
+
11976
+ def __ne__(self, other: 'TemplateGrant') -> bool:
11977
+ """Return `true` when self and other are not equal, false otherwise."""
11978
+ return not self == other
11979
+
11980
+
11669
11981
  class TemplateMetadata:
11670
11982
  """
11671
11983
  The details of the IAM template that was used to create an enterprise-managed policy
@@ -11775,8 +12087,8 @@ class TemplatePolicy:
11775
12087
  'time-based-conditions:weekly:custom-hours'.
11776
12088
  :param V2PolicyRule rule: (optional) Additional access conditions associated
11777
12089
  with the policy.
11778
- :param Control control: (optional) Specifies the type of access that is granted
11779
- by the policy.
12090
+ :param TemplateControl control: (optional) Specifies the type of access that is
12091
+ granted by the policy.
11780
12092
  """
11781
12093
 
11782
12094
  def __init__(
@@ -11788,7 +12100,7 @@ class TemplatePolicy:
11788
12100
  subject: Optional['V2PolicySubject'] = None,
11789
12101
  pattern: Optional[str] = None,
11790
12102
  rule: Optional['V2PolicyRule'] = None,
11791
- control: Optional['Control'] = None,
12103
+ control: Optional['TemplateControl'] = None,
11792
12104
  ) -> None:
11793
12105
  """
11794
12106
  Initialize a TemplatePolicy object.
@@ -11806,8 +12118,8 @@ class TemplatePolicy:
11806
12118
  'time-based-conditions:weekly:custom-hours'.
11807
12119
  :param V2PolicyRule rule: (optional) Additional access conditions
11808
12120
  associated with the policy.
11809
- :param Control control: (optional) Specifies the type of access that is
11810
- granted by the policy.
12121
+ :param TemplateControl control: (optional) Specifies the type of access
12122
+ that is granted by the policy.
11811
12123
  """
11812
12124
  self.type = type
11813
12125
  self.description = description
@@ -11836,7 +12148,7 @@ class TemplatePolicy:
11836
12148
  if (rule := _dict.get('rule')) is not None:
11837
12149
  args['rule'] = rule
11838
12150
  if (control := _dict.get('control')) is not None:
11839
- args['control'] = Control.from_dict(control)
12151
+ args['control'] = TemplateControl.from_dict(control)
11840
12152
  return cls(**args)
11841
12153
 
11842
12154
  @classmethod
@@ -11907,36 +12219,30 @@ class TemplateRole:
11907
12219
  The role properties that are created in an action resource when the template is
11908
12220
  assigned.
11909
12221
 
11910
- :param str name: The name of the role that is used in the CRN. This must be
11911
- alphanumeric and capitalized.
11912
12222
  :param str display_name: The display the name of the role that is shown in the
11913
12223
  console.
11914
- :param str service_name: The service name that the role refers.
12224
+ :param str service_name: (optional) The service name that the role refers.
11915
12225
  :param str description: (optional) Description of the role.
11916
12226
  :param List[str] actions: The actions of the role.
11917
12227
  """
11918
12228
 
11919
12229
  def __init__(
11920
12230
  self,
11921
- name: str,
11922
12231
  display_name: str,
11923
- service_name: str,
11924
12232
  actions: List[str],
11925
12233
  *,
12234
+ service_name: Optional[str] = None,
11926
12235
  description: Optional[str] = None,
11927
12236
  ) -> None:
11928
12237
  """
11929
12238
  Initialize a TemplateRole object.
11930
12239
 
11931
- :param str name: The name of the role that is used in the CRN. This must be
11932
- alphanumeric and capitalized.
11933
12240
  :param str display_name: The display the name of the role that is shown in
11934
12241
  the console.
11935
- :param str service_name: The service name that the role refers.
11936
12242
  :param List[str] actions: The actions of the role.
12243
+ :param str service_name: (optional) The service name that the role refers.
11937
12244
  :param str description: (optional) Description of the role.
11938
12245
  """
11939
- self.name = name
11940
12246
  self.display_name = display_name
11941
12247
  self.service_name = service_name
11942
12248
  self.description = description
@@ -11946,18 +12252,12 @@ class TemplateRole:
11946
12252
  def from_dict(cls, _dict: Dict) -> 'TemplateRole':
11947
12253
  """Initialize a TemplateRole object from a json dictionary."""
11948
12254
  args = {}
11949
- if (name := _dict.get('name')) is not None:
11950
- args['name'] = name
11951
- else:
11952
- raise ValueError('Required property \'name\' not present in TemplateRole JSON')
11953
12255
  if (display_name := _dict.get('display_name')) is not None:
11954
12256
  args['display_name'] = display_name
11955
12257
  else:
11956
12258
  raise ValueError('Required property \'display_name\' not present in TemplateRole JSON')
11957
12259
  if (service_name := _dict.get('service_name')) is not None:
11958
12260
  args['service_name'] = service_name
11959
- else:
11960
- raise ValueError('Required property \'service_name\' not present in TemplateRole JSON')
11961
12261
  if (description := _dict.get('description')) is not None:
11962
12262
  args['description'] = description
11963
12263
  if (actions := _dict.get('actions')) is not None:
@@ -11974,8 +12274,6 @@ class TemplateRole:
11974
12274
  def to_dict(self) -> Dict:
11975
12275
  """Return a json dictionary representing this model."""
11976
12276
  _dict = {}
11977
- if hasattr(self, 'name') and self.name is not None:
11978
- _dict['name'] = self.name
11979
12277
  if hasattr(self, 'display_name') and self.display_name is not None:
11980
12278
  _dict['display_name'] = self.display_name
11981
12279
  if hasattr(self, 'service_name') and self.service_name is not None:
@@ -13775,6 +14073,146 @@ class PolicyTemplateAssignmentItemsPolicyAssignmentV1(PolicyTemplateAssignmentIt
13775
14073
  FAILED = 'failed'
13776
14074
 
13777
14075
 
14076
+ class TemplateGrantRoleReferences(TemplateGrant):
14077
+ """
14078
+ TemplateGrantRoleReferences.
14079
+
14080
+ :param List[RoleTemplateReferencesItem] role_template_references: A set of role
14081
+ template reference IDs granted by the policy.
14082
+ """
14083
+
14084
+ def __init__(
14085
+ self,
14086
+ role_template_references: List['RoleTemplateReferencesItem'],
14087
+ ) -> None:
14088
+ """
14089
+ Initialize a TemplateGrantRoleReferences object.
14090
+
14091
+ :param List[RoleTemplateReferencesItem] role_template_references: A set of
14092
+ role template reference IDs granted by the policy.
14093
+ """
14094
+ # pylint: disable=super-init-not-called
14095
+ self.role_template_references = role_template_references
14096
+
14097
+ @classmethod
14098
+ def from_dict(cls, _dict: Dict) -> 'TemplateGrantRoleReferences':
14099
+ """Initialize a TemplateGrantRoleReferences object from a json dictionary."""
14100
+ args = {}
14101
+ if (role_template_references := _dict.get('role_template_references')) is not None:
14102
+ args['role_template_references'] = [
14103
+ RoleTemplateReferencesItem.from_dict(v) for v in role_template_references
14104
+ ]
14105
+ else:
14106
+ raise ValueError(
14107
+ 'Required property \'role_template_references\' not present in TemplateGrantRoleReferences JSON'
14108
+ )
14109
+ return cls(**args)
14110
+
14111
+ @classmethod
14112
+ def _from_dict(cls, _dict):
14113
+ """Initialize a TemplateGrantRoleReferences object from a json dictionary."""
14114
+ return cls.from_dict(_dict)
14115
+
14116
+ def to_dict(self) -> Dict:
14117
+ """Return a json dictionary representing this model."""
14118
+ _dict = {}
14119
+ if hasattr(self, 'role_template_references') and self.role_template_references is not None:
14120
+ role_template_references_list = []
14121
+ for v in self.role_template_references:
14122
+ if isinstance(v, dict):
14123
+ role_template_references_list.append(v)
14124
+ else:
14125
+ role_template_references_list.append(v.to_dict())
14126
+ _dict['role_template_references'] = role_template_references_list
14127
+ return _dict
14128
+
14129
+ def _to_dict(self):
14130
+ """Return a json dictionary representing this model."""
14131
+ return self.to_dict()
14132
+
14133
+ def __str__(self) -> str:
14134
+ """Return a `str` version of this TemplateGrantRoleReferences object."""
14135
+ return json.dumps(self.to_dict(), indent=2)
14136
+
14137
+ def __eq__(self, other: 'TemplateGrantRoleReferences') -> bool:
14138
+ """Return `true` when self and other are equal, false otherwise."""
14139
+ if not isinstance(other, self.__class__):
14140
+ return False
14141
+ return self.__dict__ == other.__dict__
14142
+
14143
+ def __ne__(self, other: 'TemplateGrantRoleReferences') -> bool:
14144
+ """Return `true` when self and other are not equal, false otherwise."""
14145
+ return not self == other
14146
+
14147
+
14148
+ class TemplateGrantRoles(TemplateGrant):
14149
+ """
14150
+ TemplateGrantRoles.
14151
+
14152
+ :param List[Roles] roles: A set of role Cloud Resource Names (CRNs) granted by
14153
+ the policy.
14154
+ """
14155
+
14156
+ def __init__(
14157
+ self,
14158
+ roles: List['Roles'],
14159
+ ) -> None:
14160
+ """
14161
+ Initialize a TemplateGrantRoles object.
14162
+
14163
+ :param List[Roles] roles: A set of role Cloud Resource Names (CRNs) granted
14164
+ by the policy.
14165
+ """
14166
+ # pylint: disable=super-init-not-called
14167
+ self.roles = roles
14168
+
14169
+ @classmethod
14170
+ def from_dict(cls, _dict: Dict) -> 'TemplateGrantRoles':
14171
+ """Initialize a TemplateGrantRoles object from a json dictionary."""
14172
+ args = {}
14173
+ if (roles := _dict.get('roles')) is not None:
14174
+ args['roles'] = [Roles.from_dict(v) for v in roles]
14175
+ else:
14176
+ raise ValueError('Required property \'roles\' not present in TemplateGrantRoles JSON')
14177
+ return cls(**args)
14178
+
14179
+ @classmethod
14180
+ def _from_dict(cls, _dict):
14181
+ """Initialize a TemplateGrantRoles object from a json dictionary."""
14182
+ return cls.from_dict(_dict)
14183
+
14184
+ def to_dict(self) -> Dict:
14185
+ """Return a json dictionary representing this model."""
14186
+ _dict = {}
14187
+ if hasattr(self, 'roles') and self.roles is not None:
14188
+ roles_list = []
14189
+ for v in self.roles:
14190
+ if isinstance(v, dict):
14191
+ roles_list.append(v)
14192
+ else:
14193
+ roles_list.append(v.to_dict())
14194
+ _dict['roles'] = roles_list
14195
+ return _dict
14196
+
14197
+ def _to_dict(self):
14198
+ """Return a json dictionary representing this model."""
14199
+ return self.to_dict()
14200
+
14201
+ def __str__(self) -> str:
14202
+ """Return a `str` version of this TemplateGrantRoles object."""
14203
+ return json.dumps(self.to_dict(), indent=2)
14204
+
14205
+ def __eq__(self, other: 'TemplateGrantRoles') -> bool:
14206
+ """Return `true` when self and other are equal, false otherwise."""
14207
+ if not isinstance(other, self.__class__):
14208
+ return False
14209
+ return self.__dict__ == other.__dict__
14210
+
14211
+ def __ne__(self, other: 'TemplateGrantRoles') -> bool:
14212
+ """Return `true` when self and other are not equal, false otherwise."""
14213
+ return not self == other
14214
+
14215
+
13778
14216
  class V2PolicyRuleRuleAttribute(V2PolicyRule):
13779
14217
  """
13780
14218
  Rule that specifies additional access that is granted (For example, time-based
@@ -2,4 +2,4 @@
2
2
  Version of platform_services
3
3
  """
4
4
 
5
- __version__ = '0.71.0'
5
+ __version__ = '0.72.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ibm-platform-services
3
- Version: 0.71.0
3
+ Version: 0.72.0
4
4
  Summary: Python client library for IBM Cloud Platform Services
5
5
  Author-email: IBM <devxsdk@us.ibm.com>
6
6
  Project-URL: Repository, https://github.com/IBM/platform-services-python-sdk
@@ -12,11 +12,11 @@ Project-URL: License, https://github.com/IBM/platform-services-python-sdk/blob/m
12
12
  Keywords: ibm,cloud,ibm cloud services,ibm cloud platform services
13
13
  Classifier: Programming Language :: Python
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
17
  Classifier: Programming Language :: Python :: 3.12
19
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Development Status :: 4 - Beta
21
21
  Classifier: Environment :: Console
22
22
  Classifier: Intended Audience :: Developers
@@ -25,7 +25,7 @@ Classifier: Operating System :: OS Independent
25
25
  Classifier: Topic :: Software Development :: Libraries
26
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
27
  Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
28
- Requires-Python: >=3.9
28
+ Requires-Python: >=3.10
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
31
  Requires-Dist: ibm_cloud_sdk_core<4.0.0,>=3.24.2
@@ -51,7 +51,7 @@ Dynamic: license-file
51
51
  [![CLA assistant](https://cla-assistant.io/readme/badge/IBM/platform-services-python-sdk)](https://cla-assistant.io/IBM/platform-services-python-sdk)
52
52
 
53
53
 
54
- # IBM Cloud Platform Services Python SDK Version 0.71.0
54
+ # IBM Cloud Platform Services Python SDK Version 0.72.0
55
55
 
56
56
  Python client library to interact with various
57
57
  [IBM Cloud Platform Service APIs](https://cloud.ibm.com/docs?tab=api-docs&category=platform_services).
@@ -124,7 +124,7 @@ Service Name | Module Name | Service Class Name
124
124
 
125
125
  * An [IBM Cloud][ibm-cloud-onboarding] account.
126
126
  * An IAM API key to allow the SDK to access your account. Create one [here](https://cloud.ibm.com/iam/apikeys).
127
- * Python 3.9 or above.
127
+ * Python 3.10 or above.
128
128
 
129
129
  ## Installation
130
130
 
@@ -1,20 +1,20 @@
1
1
  [project]
2
2
  name = "ibm-platform-services"
3
- version = "0.71.0"
3
+ version = "0.72.0"
4
4
  authors = [
5
5
  { name="IBM", email="devxsdk@us.ibm.com" }
6
6
  ]
7
7
  description = "Python client library for IBM Cloud Platform Services"
8
8
  readme = "README.md"
9
- requires-python = ">=3.9"
9
+ requires-python = ">=3.10"
10
10
  classifiers = [
11
11
  "Programming Language :: Python",
12
12
  "Programming Language :: Python :: 3",
13
- "Programming Language :: Python :: 3.9",
14
13
  "Programming Language :: Python :: 3.10",
15
14
  "Programming Language :: Python :: 3.11",
16
15
  "Programming Language :: Python :: 3.12",
17
16
  "Programming Language :: Python :: 3.13",
17
+ "Programming Language :: Python :: 3.14",
18
18
  "Development Status :: 4 - Beta",
19
19
  "Environment :: Console",
20
20
  "Intended Audience :: Developers",