ibm-platform-services 0.60.0__py3-none-any.whl → 0.61.1__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.
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- # (C) Copyright IBM Corp. 2021.
3
+ # (C) Copyright IBM Corp. 2025.
4
4
  #
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
@@ -14,7 +14,7 @@
14
14
  # See the License for the specific language governing permissions and
15
15
  # limitations under the License.
16
16
 
17
- # IBM OpenAPI SDK Code Generator Version: 99-SNAPSHOT-4c92c221-20210211-060810
17
+ # IBM OpenAPI SDK Code Generator Version: 3.102.0-615ec964-20250307-203034
18
18
 
19
19
  """
20
20
  The catalog service manages offerings across geographies as the system of record. The
@@ -24,11 +24,13 @@ the endpoints to retrieve metadata about services in the catalog and manage serv
24
24
  visbility. Depending on the kind of object, the metadata can include information about
25
25
  pricing, provisioning, regions, and more. For more information, see the [catalog
26
26
  documentation](https://cloud.ibm.com/docs/overview/catalog.html#global-catalog-overview).
27
+
28
+ API Version: 1.0.3
27
29
  """
28
30
 
29
31
  from datetime import datetime
30
32
  from enum import Enum
31
- from typing import BinaryIO, Dict, List
33
+ from typing import BinaryIO, Dict, List, Optional
32
34
  import json
33
35
 
34
36
  from ibm_cloud_sdk_core import BaseService, DetailedResponse
@@ -71,7 +73,7 @@ class GlobalCatalogV1(BaseService):
71
73
  Construct a new client for the Global Catalog service.
72
74
 
73
75
  :param Authenticator authenticator: The authenticator specifies the authentication mechanism.
74
- Get up to date information from https://github.com/IBM/python-sdk-core/blob/master/README.md
76
+ Get up to date information from https://github.com/IBM/python-sdk-core/blob/main/README.md
75
77
  about initializing the authenticator of your choice.
76
78
  """
77
79
  BaseService.__init__(self, service_url=self.DEFAULT_SERVICE_URL, authenticator=authenticator)
@@ -83,16 +85,16 @@ class GlobalCatalogV1(BaseService):
83
85
  def list_catalog_entries(
84
86
  self,
85
87
  *,
86
- account: str = None,
87
- include: str = None,
88
- q: str = None,
89
- sort_by: str = None,
90
- descending: str = None,
91
- languages: str = None,
92
- catalog: bool = None,
93
- complete: bool = None,
94
- offset: int = None,
95
- limit: int = None,
88
+ account: Optional[str] = None,
89
+ include: Optional[str] = None,
90
+ q: Optional[str] = None,
91
+ sort_by: Optional[str] = None,
92
+ descending: Optional[str] = None,
93
+ languages: Optional[str] = None,
94
+ catalog: Optional[bool] = None,
95
+ complete: Optional[bool] = None,
96
+ offset: Optional[int] = None,
97
+ limit: Optional[int] = None,
96
98
  **kwargs,
97
99
  ) -> DetailedResponse:
98
100
  """
@@ -126,8 +128,8 @@ class GlobalCatalogV1(BaseService):
126
128
  :param str descending: (optional) Sets the sort order. The default is
127
129
  false, which is ascending.
128
130
  :param str languages: (optional) Return the data strings in a specified
129
- langauge. By default, the strings returned are of the language preferred by
130
- your browser through the Accept-Langauge header, which allows an override
131
+ language. By default, the strings returned are of the language preferred by
132
+ your browser through the Accept-Language header, which allows an override
131
133
  of the header. Languages are specified in standard form, such as `en-us`.
132
134
  To include all languages use a wildcard (*).
133
135
  :param bool catalog: (optional) Checks to see if a catalog's object is
@@ -149,7 +151,9 @@ class GlobalCatalogV1(BaseService):
149
151
 
150
152
  headers = {}
151
153
  sdk_headers = get_sdk_headers(
152
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='list_catalog_entries'
154
+ service_name=self.DEFAULT_SERVICE_NAME,
155
+ service_version='V1',
156
+ operation_id='list_catalog_entries',
153
157
  )
154
158
  headers.update(sdk_headers)
155
159
 
@@ -168,12 +172,18 @@ class GlobalCatalogV1(BaseService):
168
172
 
169
173
  if 'headers' in kwargs:
170
174
  headers.update(kwargs.get('headers'))
175
+ del kwargs['headers']
171
176
  headers['Accept'] = 'application/json'
172
177
 
173
178
  url = '/'
174
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
179
+ request = self.prepare_request(
180
+ method='GET',
181
+ url=url,
182
+ headers=headers,
183
+ params=params,
184
+ )
175
185
 
176
- response = self.send(request)
186
+ response = self.send(request, **kwargs)
177
187
  return response
178
188
 
179
189
  def create_catalog_entry(
@@ -187,11 +197,12 @@ class GlobalCatalogV1(BaseService):
187
197
  provider: 'Provider',
188
198
  id: str,
189
199
  *,
190
- parent_id: str = None,
191
- group: bool = None,
192
- active: bool = None,
193
- metadata: 'ObjectMetadataSet' = None,
194
- account: str = None,
200
+ parent_id: Optional[str] = None,
201
+ group: Optional[bool] = None,
202
+ active: Optional[bool] = None,
203
+ url: Optional[str] = None,
204
+ metadata: Optional['ObjectMetadataSet'] = None,
205
+ account: Optional[str] = None,
195
206
  **kwargs,
196
207
  ) -> DetailedResponse:
197
208
  """
@@ -225,6 +236,7 @@ class GlobalCatalogV1(BaseService):
225
236
  catalog entry is a group.
226
237
  :param bool active: (optional) Boolean value that describes whether the
227
238
  service is active.
239
+ :param str url: (optional) Url of the object.
228
240
  :param ObjectMetadataSet metadata: (optional) Model used to describe
229
241
  metadata object that can be set.
230
242
  :param str account: (optional) This changes the scope of the request
@@ -258,11 +270,15 @@ class GlobalCatalogV1(BaseService):
258
270
  metadata = convert_model(metadata)
259
271
  headers = {}
260
272
  sdk_headers = get_sdk_headers(
261
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='create_catalog_entry'
273
+ service_name=self.DEFAULT_SERVICE_NAME,
274
+ service_version='V1',
275
+ operation_id='create_catalog_entry',
262
276
  )
263
277
  headers.update(sdk_headers)
264
278
 
265
- params = {'account': account}
279
+ params = {
280
+ 'account': account,
281
+ }
266
282
 
267
283
  data = {
268
284
  'name': name,
@@ -276,6 +292,7 @@ class GlobalCatalogV1(BaseService):
276
292
  'parent_id': parent_id,
277
293
  'group': group,
278
294
  'active': active,
295
+ 'url': url,
279
296
  'metadata': metadata,
280
297
  }
281
298
  data = {k: v for (k, v) in data.items() if v is not None}
@@ -284,23 +301,30 @@ class GlobalCatalogV1(BaseService):
284
301
 
285
302
  if 'headers' in kwargs:
286
303
  headers.update(kwargs.get('headers'))
304
+ del kwargs['headers']
287
305
  headers['Accept'] = 'application/json'
288
306
 
289
307
  url = '/'
290
- request = self.prepare_request(method='POST', url=url, headers=headers, params=params, data=data)
308
+ request = self.prepare_request(
309
+ method='POST',
310
+ url=url,
311
+ headers=headers,
312
+ params=params,
313
+ data=data,
314
+ )
291
315
 
292
- response = self.send(request)
316
+ response = self.send(request, **kwargs)
293
317
  return response
294
318
 
295
319
  def get_catalog_entry(
296
320
  self,
297
321
  id: str,
298
322
  *,
299
- account: str = None,
300
- include: str = None,
301
- languages: str = None,
302
- complete: bool = None,
303
- depth: int = None,
323
+ account: Optional[str] = None,
324
+ include: Optional[str] = None,
325
+ languages: Optional[str] = None,
326
+ complete: Optional[bool] = None,
327
+ depth: Optional[int] = None,
304
328
  **kwargs,
305
329
  ) -> DetailedResponse:
306
330
  """
@@ -311,7 +335,7 @@ class GlobalCatalogV1(BaseService):
311
335
  enabled. This can be used by an unauthenticated user for publicly available
312
336
  services.
313
337
 
314
- :param str id: The catalog entry's unqiue ID.
338
+ :param str id: The catalog entry's unique ID.
315
339
  :param str account: (optional) This changes the scope of the request
316
340
  regardless of the authorization header. Example scopes are `account` and
317
341
  `global`. `account=global` is reqired if operating with a service ID that
@@ -323,8 +347,8 @@ class GlobalCatalogV1(BaseService):
323
347
  with a colon (:), for example `GET
324
348
  /id?include=metadata.ui:metadata.pricing`.
325
349
  :param str languages: (optional) Return the data strings in the specified
326
- langauge. By default the strings returned are of the language preferred by
327
- your browser through the Accept-Langauge header, which allows an override
350
+ language. By default the strings returned are of the language preferred by
351
+ your browser through the Accept-Language header, which allows an override
328
352
  of the header. Languages are specified in standard form, such as `en-us`.
329
353
  To include all languages use a wildcard (*).
330
354
  :param bool complete: (optional) Returns all available fields for all
@@ -340,27 +364,41 @@ class GlobalCatalogV1(BaseService):
340
364
  :rtype: DetailedResponse with `dict` result representing a `CatalogEntry` object
341
365
  """
342
366
 
343
- if id is None:
367
+ if not id:
344
368
  raise ValueError('id must be provided')
345
369
  headers = {}
346
370
  sdk_headers = get_sdk_headers(
347
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='get_catalog_entry'
371
+ service_name=self.DEFAULT_SERVICE_NAME,
372
+ service_version='V1',
373
+ operation_id='get_catalog_entry',
348
374
  )
349
375
  headers.update(sdk_headers)
350
376
 
351
- params = {'account': account, 'include': include, 'languages': languages, 'complete': complete, 'depth': depth}
377
+ params = {
378
+ 'account': account,
379
+ 'include': include,
380
+ 'languages': languages,
381
+ 'complete': complete,
382
+ 'depth': depth,
383
+ }
352
384
 
353
385
  if 'headers' in kwargs:
354
386
  headers.update(kwargs.get('headers'))
387
+ del kwargs['headers']
355
388
  headers['Accept'] = 'application/json'
356
389
 
357
390
  path_param_keys = ['id']
358
391
  path_param_values = self.encode_path_vars(id)
359
392
  path_param_dict = dict(zip(path_param_keys, path_param_values))
360
393
  url = '/{id}'.format(**path_param_dict)
361
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
394
+ request = self.prepare_request(
395
+ method='GET',
396
+ url=url,
397
+ headers=headers,
398
+ params=params,
399
+ )
362
400
 
363
- response = self.send(request)
401
+ response = self.send(request, **kwargs)
364
402
  return response
365
403
 
366
404
  def update_catalog_entry(
@@ -374,12 +412,13 @@ class GlobalCatalogV1(BaseService):
374
412
  tags: List[str],
375
413
  provider: 'Provider',
376
414
  *,
377
- parent_id: str = None,
378
- group: bool = None,
379
- active: bool = None,
380
- metadata: 'ObjectMetadataSet' = None,
381
- account: str = None,
382
- move: str = None,
415
+ parent_id: Optional[str] = None,
416
+ group: Optional[bool] = None,
417
+ active: Optional[bool] = None,
418
+ url: Optional[str] = None,
419
+ metadata: Optional['ObjectMetadataSet'] = None,
420
+ account: Optional[str] = None,
421
+ move: Optional[str] = None,
383
422
  **kwargs,
384
423
  ) -> DetailedResponse:
385
424
  """
@@ -412,6 +451,7 @@ class GlobalCatalogV1(BaseService):
412
451
  catalog entry is a group.
413
452
  :param bool active: (optional) Boolean value that describes whether the
414
453
  service is active.
454
+ :param str url: (optional) Url of the object.
415
455
  :param ObjectMetadataSet metadata: (optional) Model used to describe
416
456
  metadata object that can be set.
417
457
  :param str account: (optional) This changes the scope of the request
@@ -429,7 +469,7 @@ class GlobalCatalogV1(BaseService):
429
469
  :rtype: DetailedResponse with `dict` result representing a `CatalogEntry` object
430
470
  """
431
471
 
432
- if id is None:
472
+ if not id:
433
473
  raise ValueError('id must be provided')
434
474
  if name is None:
435
475
  raise ValueError('name must be provided')
@@ -451,11 +491,16 @@ class GlobalCatalogV1(BaseService):
451
491
  metadata = convert_model(metadata)
452
492
  headers = {}
453
493
  sdk_headers = get_sdk_headers(
454
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='update_catalog_entry'
494
+ service_name=self.DEFAULT_SERVICE_NAME,
495
+ service_version='V1',
496
+ operation_id='update_catalog_entry',
455
497
  )
456
498
  headers.update(sdk_headers)
457
499
 
458
- params = {'account': account, 'move': move}
500
+ params = {
501
+ 'account': account,
502
+ 'move': move,
503
+ }
459
504
 
460
505
  data = {
461
506
  'name': name,
@@ -468,6 +513,7 @@ class GlobalCatalogV1(BaseService):
468
513
  'parent_id': parent_id,
469
514
  'group': group,
470
515
  'active': active,
516
+ 'url': url,
471
517
  'metadata': metadata,
472
518
  }
473
519
  data = {k: v for (k, v) in data.items() if v is not None}
@@ -476,18 +522,32 @@ class GlobalCatalogV1(BaseService):
476
522
 
477
523
  if 'headers' in kwargs:
478
524
  headers.update(kwargs.get('headers'))
525
+ del kwargs['headers']
479
526
  headers['Accept'] = 'application/json'
480
527
 
481
528
  path_param_keys = ['id']
482
529
  path_param_values = self.encode_path_vars(id)
483
530
  path_param_dict = dict(zip(path_param_keys, path_param_values))
484
531
  url = '/{id}'.format(**path_param_dict)
485
- request = self.prepare_request(method='PUT', url=url, headers=headers, params=params, data=data)
532
+ request = self.prepare_request(
533
+ method='PUT',
534
+ url=url,
535
+ headers=headers,
536
+ params=params,
537
+ data=data,
538
+ )
486
539
 
487
- response = self.send(request)
540
+ response = self.send(request, **kwargs)
488
541
  return response
489
542
 
490
- def delete_catalog_entry(self, id: str, *, account: str = None, force: bool = None, **kwargs) -> DetailedResponse:
543
+ def delete_catalog_entry(
544
+ self,
545
+ id: str,
546
+ *,
547
+ account: Optional[str] = None,
548
+ force: Optional[bool] = None,
549
+ **kwargs,
550
+ ) -> DetailedResponse:
491
551
  """
492
552
  Delete a catalog entry.
493
553
 
@@ -509,26 +569,37 @@ class GlobalCatalogV1(BaseService):
509
569
  :rtype: DetailedResponse
510
570
  """
511
571
 
512
- if id is None:
572
+ if not id:
513
573
  raise ValueError('id must be provided')
514
574
  headers = {}
515
575
  sdk_headers = get_sdk_headers(
516
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='delete_catalog_entry'
576
+ service_name=self.DEFAULT_SERVICE_NAME,
577
+ service_version='V1',
578
+ operation_id='delete_catalog_entry',
517
579
  )
518
580
  headers.update(sdk_headers)
519
581
 
520
- params = {'account': account, 'force': force}
582
+ params = {
583
+ 'account': account,
584
+ 'force': force,
585
+ }
521
586
 
522
587
  if 'headers' in kwargs:
523
588
  headers.update(kwargs.get('headers'))
589
+ del kwargs['headers']
524
590
 
525
591
  path_param_keys = ['id']
526
592
  path_param_values = self.encode_path_vars(id)
527
593
  path_param_dict = dict(zip(path_param_keys, path_param_values))
528
594
  url = '/{id}'.format(**path_param_dict)
529
- request = self.prepare_request(method='DELETE', url=url, headers=headers, params=params)
595
+ request = self.prepare_request(
596
+ method='DELETE',
597
+ url=url,
598
+ headers=headers,
599
+ params=params,
600
+ )
530
601
 
531
- response = self.send(request)
602
+ response = self.send(request, **kwargs)
532
603
  return response
533
604
 
534
605
  def get_child_objects(
@@ -536,15 +607,15 @@ class GlobalCatalogV1(BaseService):
536
607
  id: str,
537
608
  kind: str,
538
609
  *,
539
- account: str = None,
540
- include: str = None,
541
- q: str = None,
542
- sort_by: str = None,
543
- descending: str = None,
544
- languages: str = None,
545
- complete: bool = None,
546
- offset: int = None,
547
- limit: int = None,
610
+ account: Optional[str] = None,
611
+ include: Optional[str] = None,
612
+ q: Optional[str] = None,
613
+ sort_by: Optional[str] = None,
614
+ descending: Optional[str] = None,
615
+ languages: Optional[str] = None,
616
+ complete: Optional[bool] = None,
617
+ offset: Optional[int] = None,
618
+ limit: Optional[int] = None,
548
619
  **kwargs,
549
620
  ) -> DetailedResponse:
550
621
  """
@@ -574,8 +645,8 @@ class GlobalCatalogV1(BaseService):
574
645
  :param str descending: (optional) The sort order. The default is false,
575
646
  which is ascending.
576
647
  :param str languages: (optional) Return the data strings in the specified
577
- langauge. By default the strings returned are of the language preferred by
578
- your browser through the Accept-Langauge header. This allows an override of
648
+ language. By default the strings returned are of the language preferred by
649
+ your browser through the Accept-Language header. This allows an override of
579
650
  the header. Languages are specified in standard form, such as `en-us`. To
580
651
  include all languages use the wildcard (*).
581
652
  :param bool complete: (optional) Use the value `?complete=true` as shortcut
@@ -589,13 +660,15 @@ class GlobalCatalogV1(BaseService):
589
660
  :rtype: DetailedResponse with `dict` result representing a `EntrySearchResult` object
590
661
  """
591
662
 
592
- if id is None:
663
+ if not id:
593
664
  raise ValueError('id must be provided')
594
- if kind is None:
665
+ if not kind:
595
666
  raise ValueError('kind must be provided')
596
667
  headers = {}
597
668
  sdk_headers = get_sdk_headers(
598
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='get_child_objects'
669
+ service_name=self.DEFAULT_SERVICE_NAME,
670
+ service_version='V1',
671
+ operation_id='get_child_objects',
599
672
  )
600
673
  headers.update(sdk_headers)
601
674
 
@@ -613,18 +686,30 @@ class GlobalCatalogV1(BaseService):
613
686
 
614
687
  if 'headers' in kwargs:
615
688
  headers.update(kwargs.get('headers'))
689
+ del kwargs['headers']
616
690
  headers['Accept'] = 'application/json'
617
691
 
618
692
  path_param_keys = ['id', 'kind']
619
693
  path_param_values = self.encode_path_vars(id, kind)
620
694
  path_param_dict = dict(zip(path_param_keys, path_param_values))
621
695
  url = '/{id}/{kind}'.format(**path_param_dict)
622
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
696
+ request = self.prepare_request(
697
+ method='GET',
698
+ url=url,
699
+ headers=headers,
700
+ params=params,
701
+ )
623
702
 
624
- response = self.send(request)
703
+ response = self.send(request, **kwargs)
625
704
  return response
626
705
 
627
- def restore_catalog_entry(self, id: str, *, account: str = None, **kwargs) -> DetailedResponse:
706
+ def restore_catalog_entry(
707
+ self,
708
+ id: str,
709
+ *,
710
+ account: Optional[str] = None,
711
+ **kwargs,
712
+ ) -> DetailedResponse:
628
713
  """
629
714
  Restore archived catalog entry.
630
715
 
@@ -641,33 +726,49 @@ class GlobalCatalogV1(BaseService):
641
726
  :rtype: DetailedResponse
642
727
  """
643
728
 
644
- if id is None:
729
+ if not id:
645
730
  raise ValueError('id must be provided')
646
731
  headers = {}
647
732
  sdk_headers = get_sdk_headers(
648
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='restore_catalog_entry'
733
+ service_name=self.DEFAULT_SERVICE_NAME,
734
+ service_version='V1',
735
+ operation_id='restore_catalog_entry',
649
736
  )
650
737
  headers.update(sdk_headers)
651
738
 
652
- params = {'account': account}
739
+ params = {
740
+ 'account': account,
741
+ }
653
742
 
654
743
  if 'headers' in kwargs:
655
744
  headers.update(kwargs.get('headers'))
745
+ del kwargs['headers']
656
746
 
657
747
  path_param_keys = ['id']
658
748
  path_param_values = self.encode_path_vars(id)
659
749
  path_param_dict = dict(zip(path_param_keys, path_param_values))
660
750
  url = '/{id}/restore'.format(**path_param_dict)
661
- request = self.prepare_request(method='PUT', url=url, headers=headers, params=params)
751
+ request = self.prepare_request(
752
+ method='PUT',
753
+ url=url,
754
+ headers=headers,
755
+ params=params,
756
+ )
662
757
 
663
- response = self.send(request)
758
+ response = self.send(request, **kwargs)
664
759
  return response
665
760
 
666
761
  #########################
667
762
  # Visibility
668
763
  #########################
669
764
 
670
- def get_visibility(self, id: str, *, account: str = None, **kwargs) -> DetailedResponse:
765
+ def get_visibility(
766
+ self,
767
+ id: str,
768
+ *,
769
+ account: Optional[str] = None,
770
+ **kwargs,
771
+ ) -> DetailedResponse:
671
772
  """
672
773
  Get the visibility constraints for an object.
673
774
 
@@ -686,37 +787,47 @@ class GlobalCatalogV1(BaseService):
686
787
  :rtype: DetailedResponse with `dict` result representing a `Visibility` object
687
788
  """
688
789
 
689
- if id is None:
790
+ if not id:
690
791
  raise ValueError('id must be provided')
691
792
  headers = {}
692
793
  sdk_headers = get_sdk_headers(
693
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='get_visibility'
794
+ service_name=self.DEFAULT_SERVICE_NAME,
795
+ service_version='V1',
796
+ operation_id='get_visibility',
694
797
  )
695
798
  headers.update(sdk_headers)
696
799
 
697
- params = {'account': account}
800
+ params = {
801
+ 'account': account,
802
+ }
698
803
 
699
804
  if 'headers' in kwargs:
700
805
  headers.update(kwargs.get('headers'))
806
+ del kwargs['headers']
701
807
  headers['Accept'] = 'application/json'
702
808
 
703
809
  path_param_keys = ['id']
704
810
  path_param_values = self.encode_path_vars(id)
705
811
  path_param_dict = dict(zip(path_param_keys, path_param_values))
706
812
  url = '/{id}/visibility'.format(**path_param_dict)
707
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
813
+ request = self.prepare_request(
814
+ method='GET',
815
+ url=url,
816
+ headers=headers,
817
+ params=params,
818
+ )
708
819
 
709
- response = self.send(request)
820
+ response = self.send(request, **kwargs)
710
821
  return response
711
822
 
712
823
  def update_visibility(
713
824
  self,
714
825
  id: str,
715
826
  *,
716
- extendable: bool = None,
717
- include: 'VisibilityDetail' = None,
718
- exclude: 'VisibilityDetail' = None,
719
- account: str = None,
827
+ extendable: Optional[bool] = None,
828
+ include: Optional['VisibilityDetail'] = None,
829
+ exclude: Optional['VisibilityDetail'] = None,
830
+ account: Optional[str] = None,
720
831
  **kwargs,
721
832
  ) -> DetailedResponse:
722
833
  """
@@ -740,7 +851,7 @@ class GlobalCatalogV1(BaseService):
740
851
  :rtype: DetailedResponse
741
852
  """
742
853
 
743
- if id is None:
854
+ if not id:
744
855
  raise ValueError('id must be provided')
745
856
  if include is not None:
746
857
  include = convert_model(include)
@@ -748,34 +859,56 @@ class GlobalCatalogV1(BaseService):
748
859
  exclude = convert_model(exclude)
749
860
  headers = {}
750
861
  sdk_headers = get_sdk_headers(
751
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='update_visibility'
862
+ service_name=self.DEFAULT_SERVICE_NAME,
863
+ service_version='V1',
864
+ operation_id='update_visibility',
752
865
  )
753
866
  headers.update(sdk_headers)
754
867
 
755
- params = {'account': account}
868
+ params = {
869
+ 'account': account,
870
+ }
756
871
 
757
- data = {'extendable': extendable, 'include': include, 'exclude': exclude}
872
+ data = {
873
+ 'extendable': extendable,
874
+ 'include': include,
875
+ 'exclude': exclude,
876
+ }
758
877
  data = {k: v for (k, v) in data.items() if v is not None}
759
878
  data = json.dumps(data)
760
879
  headers['content-type'] = 'application/json'
761
880
 
762
881
  if 'headers' in kwargs:
763
882
  headers.update(kwargs.get('headers'))
883
+ del kwargs['headers']
764
884
 
765
885
  path_param_keys = ['id']
766
886
  path_param_values = self.encode_path_vars(id)
767
887
  path_param_dict = dict(zip(path_param_keys, path_param_values))
768
888
  url = '/{id}/visibility'.format(**path_param_dict)
769
- request = self.prepare_request(method='PUT', url=url, headers=headers, params=params, data=data)
889
+ request = self.prepare_request(
890
+ method='PUT',
891
+ url=url,
892
+ headers=headers,
893
+ params=params,
894
+ data=data,
895
+ )
770
896
 
771
- response = self.send(request)
897
+ response = self.send(request, **kwargs)
772
898
  return response
773
899
 
774
900
  #########################
775
901
  # Pricing
776
902
  #########################
777
903
 
778
- def get_pricing(self, id: str, *, account: str = None, **kwargs) -> DetailedResponse:
904
+ def get_pricing(
905
+ self,
906
+ id: str,
907
+ *,
908
+ account: Optional[str] = None,
909
+ deployment_region: Optional[str] = None,
910
+ **kwargs,
911
+ ) -> DetailedResponse:
779
912
  """
780
913
  Get the pricing for an object.
781
914
 
@@ -788,32 +921,104 @@ class GlobalCatalogV1(BaseService):
788
921
  regardless of the authorization header. Example scopes are `account` and
789
922
  `global`. `account=global` is reqired if operating with a service ID that
790
923
  has a global admin policy, for example `GET /?account=global`.
924
+ :param str deployment_region: (optional) Specify a region to retrieve plan
925
+ pricing for a global deployment. The value must match an entry in the
926
+ `deployment_regions` list.
791
927
  :param dict headers: A `dict` containing the request headers
792
928
  :return: A `DetailedResponse` containing the result, headers and HTTP status code.
793
929
  :rtype: DetailedResponse with `dict` result representing a `PricingGet` object
794
930
  """
795
931
 
796
- if id is None:
932
+ if not id:
797
933
  raise ValueError('id must be provided')
798
934
  headers = {}
799
935
  sdk_headers = get_sdk_headers(
800
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='get_pricing'
936
+ service_name=self.DEFAULT_SERVICE_NAME,
937
+ service_version='V1',
938
+ operation_id='get_pricing',
801
939
  )
802
940
  headers.update(sdk_headers)
803
941
 
804
- params = {'account': account}
942
+ params = {
943
+ 'account': account,
944
+ 'deployment_region': deployment_region,
945
+ }
805
946
 
806
947
  if 'headers' in kwargs:
807
948
  headers.update(kwargs.get('headers'))
949
+ del kwargs['headers']
808
950
  headers['Accept'] = 'application/json'
809
951
 
810
952
  path_param_keys = ['id']
811
953
  path_param_values = self.encode_path_vars(id)
812
954
  path_param_dict = dict(zip(path_param_keys, path_param_values))
813
955
  url = '/{id}/pricing'.format(**path_param_dict)
814
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
956
+ request = self.prepare_request(
957
+ method='GET',
958
+ url=url,
959
+ headers=headers,
960
+ params=params,
961
+ )
815
962
 
816
- response = self.send(request)
963
+ response = self.send(request, **kwargs)
964
+ return response
965
+
966
+ def get_pricing_deployments(
967
+ self,
968
+ id: str,
969
+ *,
970
+ account: Optional[str] = None,
971
+ **kwargs,
972
+ ) -> DetailedResponse:
973
+ """
974
+ Get the pricing deployments for a plan.
975
+
976
+ This endpoint returns the deployment pricing for a plan. For a plan it returns a
977
+ pricing for each visible child deployment object. Static pricing is defined in the
978
+ catalog. Dynamic pricing is stored in IBM Cloud Pricing Catalog. This can be used
979
+ by an unauthenticated user for publicly available services.
980
+
981
+ :param str id: The object's unique ID.
982
+ :param str account: (optional) This changes the scope of the request
983
+ regardless of the authorization header. Example scopes are `account` and
984
+ `global`. `account=global` is reqired if operating with a service ID that
985
+ has a global admin policy, for example `GET /?account=global`.
986
+ :param dict headers: A `dict` containing the request headers
987
+ :return: A `DetailedResponse` containing the result, headers and HTTP status code.
988
+ :rtype: DetailedResponse with `dict` result representing a `PricingSearchResult` object
989
+ """
990
+
991
+ if not id:
992
+ raise ValueError('id must be provided')
993
+ headers = {}
994
+ sdk_headers = get_sdk_headers(
995
+ service_name=self.DEFAULT_SERVICE_NAME,
996
+ service_version='V1',
997
+ operation_id='get_pricing_deployments',
998
+ )
999
+ headers.update(sdk_headers)
1000
+
1001
+ params = {
1002
+ 'account': account,
1003
+ }
1004
+
1005
+ if 'headers' in kwargs:
1006
+ headers.update(kwargs.get('headers'))
1007
+ del kwargs['headers']
1008
+ headers['Accept'] = 'application/json'
1009
+
1010
+ path_param_keys = ['id']
1011
+ path_param_values = self.encode_path_vars(id)
1012
+ path_param_dict = dict(zip(path_param_keys, path_param_values))
1013
+ url = '/{id}/pricing/deployment'.format(**path_param_dict)
1014
+ request = self.prepare_request(
1015
+ method='GET',
1016
+ url=url,
1017
+ headers=headers,
1018
+ params=params,
1019
+ )
1020
+
1021
+ response = self.send(request, **kwargs)
817
1022
  return response
818
1023
 
819
1024
  #########################
@@ -824,11 +1029,11 @@ class GlobalCatalogV1(BaseService):
824
1029
  self,
825
1030
  id: str,
826
1031
  *,
827
- account: str = None,
828
- ascending: str = None,
829
- startat: str = None,
830
- offset: int = None,
831
- limit: int = None,
1032
+ account: Optional[str] = None,
1033
+ ascending: Optional[str] = None,
1034
+ startat: Optional[str] = None,
1035
+ offset: Optional[int] = None,
1036
+ limit: Optional[int] = None,
832
1037
  **kwargs,
833
1038
  ) -> DetailedResponse:
834
1039
  """
@@ -859,34 +1064,54 @@ class GlobalCatalogV1(BaseService):
859
1064
  :rtype: DetailedResponse with `dict` result representing a `AuditSearchResult` object
860
1065
  """
861
1066
 
862
- if id is None:
1067
+ if not id:
863
1068
  raise ValueError('id must be provided')
864
1069
  headers = {}
865
1070
  sdk_headers = get_sdk_headers(
866
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='get_audit_logs'
1071
+ service_name=self.DEFAULT_SERVICE_NAME,
1072
+ service_version='V1',
1073
+ operation_id='get_audit_logs',
867
1074
  )
868
1075
  headers.update(sdk_headers)
869
1076
 
870
- params = {'account': account, 'ascending': ascending, 'startat': startat, '_offset': offset, '_limit': limit}
1077
+ params = {
1078
+ 'account': account,
1079
+ 'ascending': ascending,
1080
+ 'startat': startat,
1081
+ '_offset': offset,
1082
+ '_limit': limit,
1083
+ }
871
1084
 
872
1085
  if 'headers' in kwargs:
873
1086
  headers.update(kwargs.get('headers'))
1087
+ del kwargs['headers']
874
1088
  headers['Accept'] = 'application/json'
875
1089
 
876
1090
  path_param_keys = ['id']
877
1091
  path_param_values = self.encode_path_vars(id)
878
1092
  path_param_dict = dict(zip(path_param_keys, path_param_values))
879
1093
  url = '/{id}/logs'.format(**path_param_dict)
880
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
1094
+ request = self.prepare_request(
1095
+ method='GET',
1096
+ url=url,
1097
+ headers=headers,
1098
+ params=params,
1099
+ )
881
1100
 
882
- response = self.send(request)
1101
+ response = self.send(request, **kwargs)
883
1102
  return response
884
1103
 
885
1104
  #########################
886
1105
  # Artifact
887
1106
  #########################
888
1107
 
889
- def list_artifacts(self, object_id: str, *, account: str = None, **kwargs) -> DetailedResponse:
1108
+ def list_artifacts(
1109
+ self,
1110
+ object_id: str,
1111
+ *,
1112
+ account: Optional[str] = None,
1113
+ **kwargs,
1114
+ ) -> DetailedResponse:
890
1115
  """
891
1116
  Get artifacts.
892
1117
 
@@ -902,30 +1127,47 @@ class GlobalCatalogV1(BaseService):
902
1127
  :rtype: DetailedResponse with `dict` result representing a `Artifacts` object
903
1128
  """
904
1129
 
905
- if object_id is None:
1130
+ if not object_id:
906
1131
  raise ValueError('object_id must be provided')
907
1132
  headers = {}
908
1133
  sdk_headers = get_sdk_headers(
909
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='list_artifacts'
1134
+ service_name=self.DEFAULT_SERVICE_NAME,
1135
+ service_version='V1',
1136
+ operation_id='list_artifacts',
910
1137
  )
911
1138
  headers.update(sdk_headers)
912
1139
 
913
- params = {'account': account}
1140
+ params = {
1141
+ 'account': account,
1142
+ }
914
1143
 
915
1144
  if 'headers' in kwargs:
916
1145
  headers.update(kwargs.get('headers'))
1146
+ del kwargs['headers']
917
1147
  headers['Accept'] = 'application/json'
918
1148
 
919
1149
  path_param_keys = ['object_id']
920
1150
  path_param_values = self.encode_path_vars(object_id)
921
1151
  path_param_dict = dict(zip(path_param_keys, path_param_values))
922
1152
  url = '/{object_id}/artifacts'.format(**path_param_dict)
923
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
1153
+ request = self.prepare_request(
1154
+ method='GET',
1155
+ url=url,
1156
+ headers=headers,
1157
+ params=params,
1158
+ )
924
1159
 
925
- response = self.send(request)
1160
+ response = self.send(request, **kwargs)
926
1161
  return response
927
1162
 
928
- def get_artifact(self, object_id: str, artifact_id: str, *, account: str = None, **kwargs) -> DetailedResponse:
1163
+ def get_artifact(
1164
+ self,
1165
+ object_id: str,
1166
+ artifact_id: str,
1167
+ *,
1168
+ account: Optional[str] = None,
1169
+ **kwargs,
1170
+ ) -> DetailedResponse:
929
1171
  """
930
1172
  Get artifact.
931
1173
 
@@ -942,29 +1184,39 @@ class GlobalCatalogV1(BaseService):
942
1184
  :rtype: DetailedResponse with `BinaryIO` result
943
1185
  """
944
1186
 
945
- if object_id is None:
1187
+ if not object_id:
946
1188
  raise ValueError('object_id must be provided')
947
- if artifact_id is None:
1189
+ if not artifact_id:
948
1190
  raise ValueError('artifact_id must be provided')
949
1191
  headers = {}
950
1192
  sdk_headers = get_sdk_headers(
951
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='get_artifact'
1193
+ service_name=self.DEFAULT_SERVICE_NAME,
1194
+ service_version='V1',
1195
+ operation_id='get_artifact',
952
1196
  )
953
1197
  headers.update(sdk_headers)
954
1198
 
955
- params = {'account': account}
1199
+ params = {
1200
+ 'account': account,
1201
+ }
956
1202
 
957
1203
  if 'headers' in kwargs:
958
1204
  headers.update(kwargs.get('headers'))
1205
+ del kwargs['headers']
959
1206
  headers['Accept'] = '*/*'
960
1207
 
961
1208
  path_param_keys = ['object_id', 'artifact_id']
962
1209
  path_param_values = self.encode_path_vars(object_id, artifact_id)
963
1210
  path_param_dict = dict(zip(path_param_keys, path_param_values))
964
1211
  url = '/{object_id}/artifacts/{artifact_id}'.format(**path_param_dict)
965
- request = self.prepare_request(method='GET', url=url, headers=headers, params=params)
1212
+ request = self.prepare_request(
1213
+ method='GET',
1214
+ url=url,
1215
+ headers=headers,
1216
+ params=params,
1217
+ )
966
1218
 
967
- response = self.send(request)
1219
+ response = self.send(request, **kwargs)
968
1220
  return response
969
1221
 
970
1222
  def upload_artifact(
@@ -972,9 +1224,9 @@ class GlobalCatalogV1(BaseService):
972
1224
  object_id: str,
973
1225
  artifact_id: str,
974
1226
  *,
975
- artifact: BinaryIO = None,
976
- content_type: str = None,
977
- account: str = None,
1227
+ artifact: Optional[BinaryIO] = None,
1228
+ content_type: Optional[str] = None,
1229
+ account: Optional[str] = None,
978
1230
  **kwargs,
979
1231
  ) -> DetailedResponse:
980
1232
  """
@@ -996,33 +1248,53 @@ class GlobalCatalogV1(BaseService):
996
1248
  :rtype: DetailedResponse
997
1249
  """
998
1250
 
999
- if object_id is None:
1251
+ if not object_id:
1000
1252
  raise ValueError('object_id must be provided')
1001
- if artifact_id is None:
1253
+ if not artifact_id:
1002
1254
  raise ValueError('artifact_id must be provided')
1003
- headers = {'Content-Type': content_type}
1255
+ headers = {
1256
+ 'Content-Type': content_type,
1257
+ }
1004
1258
  sdk_headers = get_sdk_headers(
1005
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='upload_artifact'
1259
+ service_name=self.DEFAULT_SERVICE_NAME,
1260
+ service_version='V1',
1261
+ operation_id='upload_artifact',
1006
1262
  )
1007
1263
  headers.update(sdk_headers)
1008
1264
 
1009
- params = {'account': account}
1265
+ params = {
1266
+ 'account': account,
1267
+ }
1010
1268
 
1011
1269
  data = artifact
1012
1270
 
1013
1271
  if 'headers' in kwargs:
1014
1272
  headers.update(kwargs.get('headers'))
1273
+ del kwargs['headers']
1015
1274
 
1016
1275
  path_param_keys = ['object_id', 'artifact_id']
1017
1276
  path_param_values = self.encode_path_vars(object_id, artifact_id)
1018
1277
  path_param_dict = dict(zip(path_param_keys, path_param_values))
1019
1278
  url = '/{object_id}/artifacts/{artifact_id}'.format(**path_param_dict)
1020
- request = self.prepare_request(method='PUT', url=url, headers=headers, params=params, data=data)
1279
+ request = self.prepare_request(
1280
+ method='PUT',
1281
+ url=url,
1282
+ headers=headers,
1283
+ params=params,
1284
+ data=data,
1285
+ )
1021
1286
 
1022
- response = self.send(request)
1287
+ response = self.send(request, **kwargs)
1023
1288
  return response
1024
1289
 
1025
- def delete_artifact(self, object_id: str, artifact_id: str, *, account: str = None, **kwargs) -> DetailedResponse:
1290
+ def delete_artifact(
1291
+ self,
1292
+ object_id: str,
1293
+ artifact_id: str,
1294
+ *,
1295
+ account: Optional[str] = None,
1296
+ **kwargs,
1297
+ ) -> DetailedResponse:
1026
1298
  """
1027
1299
  Delete artifact.
1028
1300
 
@@ -1040,28 +1312,38 @@ class GlobalCatalogV1(BaseService):
1040
1312
  :rtype: DetailedResponse
1041
1313
  """
1042
1314
 
1043
- if object_id is None:
1315
+ if not object_id:
1044
1316
  raise ValueError('object_id must be provided')
1045
- if artifact_id is None:
1317
+ if not artifact_id:
1046
1318
  raise ValueError('artifact_id must be provided')
1047
1319
  headers = {}
1048
1320
  sdk_headers = get_sdk_headers(
1049
- service_name=self.DEFAULT_SERVICE_NAME, service_version='V1', operation_id='delete_artifact'
1321
+ service_name=self.DEFAULT_SERVICE_NAME,
1322
+ service_version='V1',
1323
+ operation_id='delete_artifact',
1050
1324
  )
1051
1325
  headers.update(sdk_headers)
1052
1326
 
1053
- params = {'account': account}
1327
+ params = {
1328
+ 'account': account,
1329
+ }
1054
1330
 
1055
1331
  if 'headers' in kwargs:
1056
1332
  headers.update(kwargs.get('headers'))
1333
+ del kwargs['headers']
1057
1334
 
1058
1335
  path_param_keys = ['object_id', 'artifact_id']
1059
1336
  path_param_values = self.encode_path_vars(object_id, artifact_id)
1060
1337
  path_param_dict = dict(zip(path_param_keys, path_param_values))
1061
1338
  url = '/{object_id}/artifacts/{artifact_id}'.format(**path_param_dict)
1062
- request = self.prepare_request(method='DELETE', url=url, headers=headers, params=params)
1339
+ request = self.prepare_request(
1340
+ method='DELETE',
1341
+ url=url,
1342
+ headers=headers,
1343
+ params=params,
1344
+ )
1063
1345
 
1064
- response = self.send(request)
1346
+ response = self.send(request, **kwargs)
1065
1347
  return response
1066
1348
 
1067
1349
 
@@ -1074,12 +1356,17 @@ class AliasMetaData:
1074
1356
  """
1075
1357
  Alias-related metadata.
1076
1358
 
1077
- :attr str type: (optional) Type of alias.
1078
- :attr str plan_id: (optional) Points to the plan that this object is an alias
1359
+ :param str type: (optional) Type of alias.
1360
+ :param str plan_id: (optional) Points to the plan that this object is an alias
1079
1361
  for.
1080
1362
  """
1081
1363
 
1082
- def __init__(self, *, type: str = None, plan_id: str = None) -> None:
1364
+ def __init__(
1365
+ self,
1366
+ *,
1367
+ type: Optional[str] = None,
1368
+ plan_id: Optional[str] = None,
1369
+ ) -> None:
1083
1370
  """
1084
1371
  Initialize a AliasMetaData object.
1085
1372
 
@@ -1094,10 +1381,10 @@ class AliasMetaData:
1094
1381
  def from_dict(cls, _dict: Dict) -> 'AliasMetaData':
1095
1382
  """Initialize a AliasMetaData object from a json dictionary."""
1096
1383
  args = {}
1097
- if 'type' in _dict:
1098
- args['type'] = _dict.get('type')
1099
- if 'plan_id' in _dict:
1100
- args['plan_id'] = _dict.get('plan_id')
1384
+ if (type := _dict.get('type')) is not None:
1385
+ args['type'] = type
1386
+ if (plan_id := _dict.get('plan_id')) is not None:
1387
+ args['plan_id'] = plan_id
1101
1388
  return cls(**args)
1102
1389
 
1103
1390
  @classmethod
@@ -1137,12 +1424,18 @@ class Amount:
1137
1424
  """
1138
1425
  Country-specific pricing information.
1139
1426
 
1140
- :attr str country: (optional) Country.
1141
- :attr str currency: (optional) Currency.
1142
- :attr List[Price] prices: (optional) See Price for nested fields.
1427
+ :param str country: (optional) Country.
1428
+ :param str currency: (optional) Currency.
1429
+ :param List[Price] prices: (optional) See Price for nested fields.
1143
1430
  """
1144
1431
 
1145
- def __init__(self, *, country: str = None, currency: str = None, prices: List['Price'] = None) -> None:
1432
+ def __init__(
1433
+ self,
1434
+ *,
1435
+ country: Optional[str] = None,
1436
+ currency: Optional[str] = None,
1437
+ prices: Optional[List['Price']] = None,
1438
+ ) -> None:
1146
1439
  """
1147
1440
  Initialize a Amount object.
1148
1441
 
@@ -1158,12 +1451,12 @@ class Amount:
1158
1451
  def from_dict(cls, _dict: Dict) -> 'Amount':
1159
1452
  """Initialize a Amount object from a json dictionary."""
1160
1453
  args = {}
1161
- if 'country' in _dict:
1162
- args['country'] = _dict.get('country')
1163
- if 'currency' in _dict:
1164
- args['currency'] = _dict.get('currency')
1165
- if 'prices' in _dict:
1166
- args['prices'] = [Price.from_dict(x) for x in _dict.get('prices')]
1454
+ if (country := _dict.get('country')) is not None:
1455
+ args['country'] = country
1456
+ if (currency := _dict.get('currency')) is not None:
1457
+ args['currency'] = currency
1458
+ if (prices := _dict.get('prices')) is not None:
1459
+ args['prices'] = [Price.from_dict(v) for v in prices]
1167
1460
  return cls(**args)
1168
1461
 
1169
1462
  @classmethod
@@ -1179,7 +1472,13 @@ class Amount:
1179
1472
  if hasattr(self, 'currency') and self.currency is not None:
1180
1473
  _dict['currency'] = self.currency
1181
1474
  if hasattr(self, 'prices') and self.prices is not None:
1182
- _dict['prices'] = [x.to_dict() for x in self.prices]
1475
+ prices_list = []
1476
+ for v in self.prices:
1477
+ if isinstance(v, dict):
1478
+ prices_list.append(v)
1479
+ else:
1480
+ prices_list.append(v.to_dict())
1481
+ _dict['prices'] = prices_list
1183
1482
  return _dict
1184
1483
 
1185
1484
  def _to_dict(self):
@@ -1205,16 +1504,22 @@ class Artifact:
1205
1504
  """
1206
1505
  Artifact Details.
1207
1506
 
1208
- :attr str name: (optional) The name of the artifact.
1209
- :attr datetime updated: (optional) The timestamp of the last update to the
1507
+ :param str name: (optional) The name of the artifact.
1508
+ :param datetime updated: (optional) The timestamp of the last update to the
1210
1509
  artifact.
1211
- :attr str url: (optional) The url for the artifact.
1212
- :attr str etag: (optional) The etag of the artifact.
1213
- :attr int size: (optional) The content length of the artifact.
1510
+ :param str url: (optional) The url for the artifact.
1511
+ :param str etag: (optional) The etag of the artifact.
1512
+ :param int size: (optional) The content length of the artifact.
1214
1513
  """
1215
1514
 
1216
1515
  def __init__(
1217
- self, *, name: str = None, updated: datetime = None, url: str = None, etag: str = None, size: int = None
1516
+ self,
1517
+ *,
1518
+ name: Optional[str] = None,
1519
+ updated: Optional[datetime] = None,
1520
+ url: Optional[str] = None,
1521
+ etag: Optional[str] = None,
1522
+ size: Optional[int] = None,
1218
1523
  ) -> None:
1219
1524
  """
1220
1525
  Initialize a Artifact object.
@@ -1236,16 +1541,16 @@ class Artifact:
1236
1541
  def from_dict(cls, _dict: Dict) -> 'Artifact':
1237
1542
  """Initialize a Artifact object from a json dictionary."""
1238
1543
  args = {}
1239
- if 'name' in _dict:
1240
- args['name'] = _dict.get('name')
1241
- if 'updated' in _dict:
1242
- args['updated'] = string_to_datetime(_dict.get('updated'))
1243
- if 'url' in _dict:
1244
- args['url'] = _dict.get('url')
1245
- if 'etag' in _dict:
1246
- args['etag'] = _dict.get('etag')
1247
- if 'size' in _dict:
1248
- args['size'] = _dict.get('size')
1544
+ if (name := _dict.get('name')) is not None:
1545
+ args['name'] = name
1546
+ if (updated := _dict.get('updated')) is not None:
1547
+ args['updated'] = string_to_datetime(updated)
1548
+ if (url := _dict.get('url')) is not None:
1549
+ args['url'] = url
1550
+ if (etag := _dict.get('etag')) is not None:
1551
+ args['etag'] = etag
1552
+ if (size := _dict.get('size')) is not None:
1553
+ args['size'] = size
1249
1554
  return cls(**args)
1250
1555
 
1251
1556
  @classmethod
@@ -1291,11 +1596,16 @@ class Artifacts:
1291
1596
  """
1292
1597
  Artifacts List.
1293
1598
 
1294
- :attr int count: (optional) The total number of artifacts.
1295
- :attr List[Artifact] resources: (optional) The list of artifacts.
1599
+ :param int count: (optional) The total number of artifacts.
1600
+ :param List[Artifact] resources: (optional) The list of artifacts.
1296
1601
  """
1297
1602
 
1298
- def __init__(self, *, count: int = None, resources: List['Artifact'] = None) -> None:
1603
+ def __init__(
1604
+ self,
1605
+ *,
1606
+ count: Optional[int] = None,
1607
+ resources: Optional[List['Artifact']] = None,
1608
+ ) -> None:
1299
1609
  """
1300
1610
  Initialize a Artifacts object.
1301
1611
 
@@ -1309,10 +1619,10 @@ class Artifacts:
1309
1619
  def from_dict(cls, _dict: Dict) -> 'Artifacts':
1310
1620
  """Initialize a Artifacts object from a json dictionary."""
1311
1621
  args = {}
1312
- if 'count' in _dict:
1313
- args['count'] = _dict.get('count')
1314
- if 'resources' in _dict:
1315
- args['resources'] = [Artifact.from_dict(x) for x in _dict.get('resources')]
1622
+ if (count := _dict.get('count')) is not None:
1623
+ args['count'] = count
1624
+ if (resources := _dict.get('resources')) is not None:
1625
+ args['resources'] = [Artifact.from_dict(v) for v in resources]
1316
1626
  return cls(**args)
1317
1627
 
1318
1628
  @classmethod
@@ -1326,7 +1636,13 @@ class Artifacts:
1326
1636
  if hasattr(self, 'count') and self.count is not None:
1327
1637
  _dict['count'] = self.count
1328
1638
  if hasattr(self, 'resources') and self.resources is not None:
1329
- _dict['resources'] = [x.to_dict() for x in self.resources]
1639
+ resources_list = []
1640
+ for v in self.resources:
1641
+ if isinstance(v, dict):
1642
+ resources_list.append(v)
1643
+ else:
1644
+ resources_list.append(v.to_dict())
1645
+ _dict['resources'] = resources_list
1330
1646
  return _dict
1331
1647
 
1332
1648
  def _to_dict(self):
@@ -1352,36 +1668,38 @@ class AuditSearchResult:
1352
1668
  """
1353
1669
  A paginated search result containing audit logs.
1354
1670
 
1355
- :attr int offset: (optional) The offset (origin 0) of the first resource in this
1356
- page of search results.
1357
- :attr int limit: (optional) The maximum number of resources returned in each
1671
+ :param int offset: (optional) The offset (origin 0) of the first resource in
1672
+ this page of search results.
1673
+ :param int limit: (optional) The maximum number of resources returned in each
1358
1674
  page of search results.
1359
- :attr int count: (optional) The overall total number of resources in the search
1675
+ :param int count: (optional) The overall total number of resources in the search
1360
1676
  result set.
1361
- :attr int resource_count: (optional) The number of resources returned in this
1677
+ :param int resource_count: (optional) The number of resources returned in this
1362
1678
  page of search results.
1363
- :attr str first: (optional) A URL for retrieving the first page of search
1679
+ :param str first: (optional) A URL for retrieving the first page of search
1364
1680
  results.
1365
- :attr str last: (optional) A URL for retrieving the last page of search results.
1366
- :attr str prev: (optional) A URL for retrieving the previous page of search
1681
+ :param str last: (optional) A URL for retrieving the last page of search
1367
1682
  results.
1368
- :attr str next: (optional) A URL for retrieving the next page of search results.
1369
- :attr List[Message] resources: (optional) The resources (audit messages)
1683
+ :param str prev: (optional) A URL for retrieving the previous page of search
1684
+ results.
1685
+ :param str next: (optional) A URL for retrieving the next page of search
1686
+ results.
1687
+ :param List[Message] resources: (optional) The resources (audit messages)
1370
1688
  contained in this page of search results.
1371
1689
  """
1372
1690
 
1373
1691
  def __init__(
1374
1692
  self,
1375
1693
  *,
1376
- offset: int = None,
1377
- limit: int = None,
1378
- count: int = None,
1379
- resource_count: int = None,
1380
- first: str = None,
1381
- last: str = None,
1382
- prev: str = None,
1383
- next: str = None,
1384
- resources: List['Message'] = None,
1694
+ offset: Optional[int] = None,
1695
+ limit: Optional[int] = None,
1696
+ count: Optional[int] = None,
1697
+ resource_count: Optional[int] = None,
1698
+ first: Optional[str] = None,
1699
+ last: Optional[str] = None,
1700
+ prev: Optional[str] = None,
1701
+ next: Optional[str] = None,
1702
+ resources: Optional[List['Message']] = None,
1385
1703
  ) -> None:
1386
1704
  """
1387
1705
  Initialize a AuditSearchResult object.
@@ -1419,24 +1737,24 @@ class AuditSearchResult:
1419
1737
  def from_dict(cls, _dict: Dict) -> 'AuditSearchResult':
1420
1738
  """Initialize a AuditSearchResult object from a json dictionary."""
1421
1739
  args = {}
1422
- if 'offset' in _dict:
1423
- args['offset'] = _dict.get('offset')
1424
- if 'limit' in _dict:
1425
- args['limit'] = _dict.get('limit')
1426
- if 'count' in _dict:
1427
- args['count'] = _dict.get('count')
1428
- if 'resource_count' in _dict:
1429
- args['resource_count'] = _dict.get('resource_count')
1430
- if 'first' in _dict:
1431
- args['first'] = _dict.get('first')
1432
- if 'last' in _dict:
1433
- args['last'] = _dict.get('last')
1434
- if 'prev' in _dict:
1435
- args['prev'] = _dict.get('prev')
1436
- if 'next' in _dict:
1437
- args['next'] = _dict.get('next')
1438
- if 'resources' in _dict:
1439
- args['resources'] = [Message.from_dict(x) for x in _dict.get('resources')]
1740
+ if (offset := _dict.get('offset')) is not None:
1741
+ args['offset'] = offset
1742
+ if (limit := _dict.get('limit')) is not None:
1743
+ args['limit'] = limit
1744
+ if (count := _dict.get('count')) is not None:
1745
+ args['count'] = count
1746
+ if (resource_count := _dict.get('resource_count')) is not None:
1747
+ args['resource_count'] = resource_count
1748
+ if (first := _dict.get('first')) is not None:
1749
+ args['first'] = first
1750
+ if (last := _dict.get('last')) is not None:
1751
+ args['last'] = last
1752
+ if (prev := _dict.get('prev')) is not None:
1753
+ args['prev'] = prev
1754
+ if (next := _dict.get('next')) is not None:
1755
+ args['next'] = next
1756
+ if (resources := _dict.get('resources')) is not None:
1757
+ args['resources'] = [Message.from_dict(v) for v in resources]
1440
1758
  return cls(**args)
1441
1759
 
1442
1760
  @classmethod
@@ -1464,7 +1782,13 @@ class AuditSearchResult:
1464
1782
  if hasattr(self, 'next') and self.next is not None:
1465
1783
  _dict['next'] = self.next
1466
1784
  if hasattr(self, 'resources') and self.resources is not None:
1467
- _dict['resources'] = [x.to_dict() for x in self.resources]
1785
+ resources_list = []
1786
+ for v in self.resources:
1787
+ if isinstance(v, dict):
1788
+ resources_list.append(v)
1789
+ else:
1790
+ resources_list.append(v.to_dict())
1791
+ _dict['resources'] = resources_list
1468
1792
  return _dict
1469
1793
 
1470
1794
  def _to_dict(self):
@@ -1490,11 +1814,16 @@ class Broker:
1490
1814
  """
1491
1815
  The broker associated with a catalog entry.
1492
1816
 
1493
- :attr str name: (optional) Broker name.
1494
- :attr str guid: (optional) Broker guid.
1817
+ :param str name: (optional) Broker name.
1818
+ :param str guid: (optional) Broker guid.
1495
1819
  """
1496
1820
 
1497
- def __init__(self, *, name: str = None, guid: str = None) -> None:
1821
+ def __init__(
1822
+ self,
1823
+ *,
1824
+ name: Optional[str] = None,
1825
+ guid: Optional[str] = None,
1826
+ ) -> None:
1498
1827
  """
1499
1828
  Initialize a Broker object.
1500
1829
 
@@ -1508,10 +1837,10 @@ class Broker:
1508
1837
  def from_dict(cls, _dict: Dict) -> 'Broker':
1509
1838
  """Initialize a Broker object from a json dictionary."""
1510
1839
  args = {}
1511
- if 'name' in _dict:
1512
- args['name'] = _dict.get('name')
1513
- if 'guid' in _dict:
1514
- args['guid'] = _dict.get('guid')
1840
+ if (name := _dict.get('name')) is not None:
1841
+ args['name'] = name
1842
+ if (guid := _dict.get('guid')) is not None:
1843
+ args['guid'] = guid
1515
1844
  return cls(**args)
1516
1845
 
1517
1846
  @classmethod
@@ -1551,13 +1880,20 @@ class Bullets:
1551
1880
  """
1552
1881
  Information related to list delimiters.
1553
1882
 
1554
- :attr str title: (optional) The bullet title.
1555
- :attr str description: (optional) The bullet description.
1556
- :attr str icon: (optional) The icon to use for rendering the bullet.
1557
- :attr int quantity: (optional) The bullet quantity.
1883
+ :param str title: (optional) The bullet title.
1884
+ :param str description: (optional) The bullet description.
1885
+ :param str icon: (optional) The icon to use for rendering the bullet.
1886
+ :param int quantity: (optional) The bullet quantity.
1558
1887
  """
1559
1888
 
1560
- def __init__(self, *, title: str = None, description: str = None, icon: str = None, quantity: int = None) -> None:
1889
+ def __init__(
1890
+ self,
1891
+ *,
1892
+ title: Optional[str] = None,
1893
+ description: Optional[str] = None,
1894
+ icon: Optional[str] = None,
1895
+ quantity: Optional[int] = None,
1896
+ ) -> None:
1561
1897
  """
1562
1898
  Initialize a Bullets object.
1563
1899
 
@@ -1575,14 +1911,14 @@ class Bullets:
1575
1911
  def from_dict(cls, _dict: Dict) -> 'Bullets':
1576
1912
  """Initialize a Bullets object from a json dictionary."""
1577
1913
  args = {}
1578
- if 'title' in _dict:
1579
- args['title'] = _dict.get('title')
1580
- if 'description' in _dict:
1581
- args['description'] = _dict.get('description')
1582
- if 'icon' in _dict:
1583
- args['icon'] = _dict.get('icon')
1584
- if 'quantity' in _dict:
1585
- args['quantity'] = _dict.get('quantity')
1914
+ if (title := _dict.get('title')) is not None:
1915
+ args['title'] = title
1916
+ if (description := _dict.get('description')) is not None:
1917
+ args['description'] = description
1918
+ if (icon := _dict.get('icon')) is not None:
1919
+ args['icon'] = icon
1920
+ if (quantity := _dict.get('quantity')) is not None:
1921
+ args['quantity'] = quantity
1586
1922
  return cls(**args)
1587
1923
 
1588
1924
  @classmethod
@@ -1626,31 +1962,31 @@ class CFMetaData:
1626
1962
  """
1627
1963
  Service-related metadata.
1628
1964
 
1629
- :attr str type: (optional) Type of service.
1630
- :attr bool iam_compatible: (optional) Boolean value that describes whether the
1965
+ :param str type: (optional) Type of service.
1966
+ :param bool iam_compatible: (optional) Boolean value that describes whether the
1631
1967
  service is compatible with Identity and Access Management.
1632
- :attr bool unique_api_key: (optional) Boolean value that describes whether the
1968
+ :param bool unique_api_key: (optional) Boolean value that describes whether the
1633
1969
  service has a unique API key.
1634
- :attr bool provisionable: (optional) Boolean value that describes whether the
1970
+ :param bool provisionable: (optional) Boolean value that describes whether the
1635
1971
  service is provisionable or not. You may need sales or support to create this
1636
1972
  service.
1637
- :attr bool bindable: (optional) Boolean value that describes whether you can
1973
+ :param bool bindable: (optional) Boolean value that describes whether you can
1638
1974
  create bindings for this service.
1639
- :attr bool async_provisioning_supported: (optional) Boolean value that describes
1640
- whether the service supports asynchronous provisioning.
1641
- :attr bool async_unprovisioning_supported: (optional) Boolean value that
1975
+ :param bool async_provisioning_supported: (optional) Boolean value that
1976
+ describes whether the service supports asynchronous provisioning.
1977
+ :param bool async_unprovisioning_supported: (optional) Boolean value that
1642
1978
  describes whether the service supports asynchronous unprovisioning.
1643
- :attr List[str] requires: (optional) Service dependencies.
1644
- :attr bool plan_updateable: (optional) Boolean value that describes whether the
1979
+ :param List[str] requires: (optional) Service dependencies.
1980
+ :param bool plan_updateable: (optional) Boolean value that describes whether the
1645
1981
  service supports upgrade or downgrade for some plans.
1646
- :attr str state: (optional) String that describes whether the service is active
1982
+ :param str state: (optional) String that describes whether the service is active
1647
1983
  or inactive.
1648
- :attr bool service_check_enabled: (optional) Boolean value that describes
1984
+ :param bool service_check_enabled: (optional) Boolean value that describes
1649
1985
  whether the service check is enabled.
1650
- :attr int test_check_interval: (optional) Test check interval.
1651
- :attr bool service_key_supported: (optional) Boolean value that describes
1986
+ :param int test_check_interval: (optional) Test check interval.
1987
+ :param bool service_key_supported: (optional) Boolean value that describes
1652
1988
  whether the service supports service keys.
1653
- :attr dict cf_guid: (optional) If the field is imported from Cloud Foundry, the
1989
+ :param dict cf_guid: (optional) If the field is imported from Cloud Foundry, the
1654
1990
  Cloud Foundry region's GUID. This is a required field. For example,
1655
1991
  `us-south=123`.
1656
1992
  """
@@ -1658,20 +1994,20 @@ class CFMetaData:
1658
1994
  def __init__(
1659
1995
  self,
1660
1996
  *,
1661
- type: str = None,
1662
- iam_compatible: bool = None,
1663
- unique_api_key: bool = None,
1664
- provisionable: bool = None,
1665
- bindable: bool = None,
1666
- async_provisioning_supported: bool = None,
1667
- async_unprovisioning_supported: bool = None,
1668
- requires: List[str] = None,
1669
- plan_updateable: bool = None,
1670
- state: str = None,
1671
- service_check_enabled: bool = None,
1672
- test_check_interval: int = None,
1673
- service_key_supported: bool = None,
1674
- cf_guid: dict = None,
1997
+ type: Optional[str] = None,
1998
+ iam_compatible: Optional[bool] = None,
1999
+ unique_api_key: Optional[bool] = None,
2000
+ provisionable: Optional[bool] = None,
2001
+ bindable: Optional[bool] = None,
2002
+ async_provisioning_supported: Optional[bool] = None,
2003
+ async_unprovisioning_supported: Optional[bool] = None,
2004
+ requires: Optional[List[str]] = None,
2005
+ plan_updateable: Optional[bool] = None,
2006
+ state: Optional[str] = None,
2007
+ service_check_enabled: Optional[bool] = None,
2008
+ test_check_interval: Optional[int] = None,
2009
+ service_key_supported: Optional[bool] = None,
2010
+ cf_guid: Optional[dict] = None,
1675
2011
  ) -> None:
1676
2012
  """
1677
2013
  Initialize a CFMetaData object.
@@ -1723,34 +2059,34 @@ class CFMetaData:
1723
2059
  def from_dict(cls, _dict: Dict) -> 'CFMetaData':
1724
2060
  """Initialize a CFMetaData object from a json dictionary."""
1725
2061
  args = {}
1726
- if 'type' in _dict:
1727
- args['type'] = _dict.get('type')
1728
- if 'iam_compatible' in _dict:
1729
- args['iam_compatible'] = _dict.get('iam_compatible')
1730
- if 'unique_api_key' in _dict:
1731
- args['unique_api_key'] = _dict.get('unique_api_key')
1732
- if 'provisionable' in _dict:
1733
- args['provisionable'] = _dict.get('provisionable')
1734
- if 'bindable' in _dict:
1735
- args['bindable'] = _dict.get('bindable')
1736
- if 'async_provisioning_supported' in _dict:
1737
- args['async_provisioning_supported'] = _dict.get('async_provisioning_supported')
1738
- if 'async_unprovisioning_supported' in _dict:
1739
- args['async_unprovisioning_supported'] = _dict.get('async_unprovisioning_supported')
1740
- if 'requires' in _dict:
1741
- args['requires'] = _dict.get('requires')
1742
- if 'plan_updateable' in _dict:
1743
- args['plan_updateable'] = _dict.get('plan_updateable')
1744
- if 'state' in _dict:
1745
- args['state'] = _dict.get('state')
1746
- if 'service_check_enabled' in _dict:
1747
- args['service_check_enabled'] = _dict.get('service_check_enabled')
1748
- if 'test_check_interval' in _dict:
1749
- args['test_check_interval'] = _dict.get('test_check_interval')
1750
- if 'service_key_supported' in _dict:
1751
- args['service_key_supported'] = _dict.get('service_key_supported')
1752
- if 'cf_guid' in _dict:
1753
- args['cf_guid'] = _dict.get('cf_guid')
2062
+ if (type := _dict.get('type')) is not None:
2063
+ args['type'] = type
2064
+ if (iam_compatible := _dict.get('iam_compatible')) is not None:
2065
+ args['iam_compatible'] = iam_compatible
2066
+ if (unique_api_key := _dict.get('unique_api_key')) is not None:
2067
+ args['unique_api_key'] = unique_api_key
2068
+ if (provisionable := _dict.get('provisionable')) is not None:
2069
+ args['provisionable'] = provisionable
2070
+ if (bindable := _dict.get('bindable')) is not None:
2071
+ args['bindable'] = bindable
2072
+ if (async_provisioning_supported := _dict.get('async_provisioning_supported')) is not None:
2073
+ args['async_provisioning_supported'] = async_provisioning_supported
2074
+ if (async_unprovisioning_supported := _dict.get('async_unprovisioning_supported')) is not None:
2075
+ args['async_unprovisioning_supported'] = async_unprovisioning_supported
2076
+ if (requires := _dict.get('requires')) is not None:
2077
+ args['requires'] = requires
2078
+ if (plan_updateable := _dict.get('plan_updateable')) is not None:
2079
+ args['plan_updateable'] = plan_updateable
2080
+ if (state := _dict.get('state')) is not None:
2081
+ args['state'] = state
2082
+ if (service_check_enabled := _dict.get('service_check_enabled')) is not None:
2083
+ args['service_check_enabled'] = service_check_enabled
2084
+ if (test_check_interval := _dict.get('test_check_interval')) is not None:
2085
+ args['test_check_interval'] = test_check_interval
2086
+ if (service_key_supported := _dict.get('service_key_supported')) is not None:
2087
+ args['service_key_supported'] = service_key_supported
2088
+ if (cf_guid := _dict.get('cf_guid')) is not None:
2089
+ args['cf_guid'] = cf_guid
1754
2090
  return cls(**args)
1755
2091
 
1756
2092
  @classmethod
@@ -1814,34 +2150,34 @@ class Callbacks:
1814
2150
  """
1815
2151
  Callback-related information associated with a catalog entry.
1816
2152
 
1817
- :attr str controller_url: (optional) The URL of the deployment controller.
1818
- :attr str broker_url: (optional) The URL of the deployment broker.
1819
- :attr str broker_proxy_url: (optional) The URL of the deployment broker SC
2153
+ :param str controller_url: (optional) The URL of the deployment controller.
2154
+ :param str broker_url: (optional) The URL of the deployment broker.
2155
+ :param str broker_proxy_url: (optional) The URL of the deployment broker SC
1820
2156
  proxy.
1821
- :attr str dashboard_url: (optional) The URL of dashboard callback.
1822
- :attr str dashboard_data_url: (optional) The URL of dashboard data.
1823
- :attr str dashboard_detail_tab_url: (optional) The URL of the dashboard detail
2157
+ :param str dashboard_url: (optional) The URL of dashboard callback.
2158
+ :param str dashboard_data_url: (optional) The URL of dashboard data.
2159
+ :param str dashboard_detail_tab_url: (optional) The URL of the dashboard detail
1824
2160
  tab.
1825
- :attr str dashboard_detail_tab_ext_url: (optional) The URL of the dashboard
2161
+ :param str dashboard_detail_tab_ext_url: (optional) The URL of the dashboard
1826
2162
  detail tab extension.
1827
- :attr str service_monitor_api: (optional) Service monitor API URL.
1828
- :attr str service_monitor_app: (optional) Service monitor app URL.
1829
- :attr dict api_endpoint: (optional) API endpoint.
2163
+ :param str service_monitor_api: (optional) Service monitor API URL.
2164
+ :param str service_monitor_app: (optional) Service monitor app URL.
2165
+ :param dict api_endpoint: (optional) API endpoint.
1830
2166
  """
1831
2167
 
1832
2168
  def __init__(
1833
2169
  self,
1834
2170
  *,
1835
- controller_url: str = None,
1836
- broker_url: str = None,
1837
- broker_proxy_url: str = None,
1838
- dashboard_url: str = None,
1839
- dashboard_data_url: str = None,
1840
- dashboard_detail_tab_url: str = None,
1841
- dashboard_detail_tab_ext_url: str = None,
1842
- service_monitor_api: str = None,
1843
- service_monitor_app: str = None,
1844
- api_endpoint: dict = None,
2171
+ controller_url: Optional[str] = None,
2172
+ broker_url: Optional[str] = None,
2173
+ broker_proxy_url: Optional[str] = None,
2174
+ dashboard_url: Optional[str] = None,
2175
+ dashboard_data_url: Optional[str] = None,
2176
+ dashboard_detail_tab_url: Optional[str] = None,
2177
+ dashboard_detail_tab_ext_url: Optional[str] = None,
2178
+ service_monitor_api: Optional[str] = None,
2179
+ service_monitor_app: Optional[str] = None,
2180
+ api_endpoint: Optional[dict] = None,
1845
2181
  ) -> None:
1846
2182
  """
1847
2183
  Initialize a Callbacks object.
@@ -1875,26 +2211,26 @@ class Callbacks:
1875
2211
  def from_dict(cls, _dict: Dict) -> 'Callbacks':
1876
2212
  """Initialize a Callbacks object from a json dictionary."""
1877
2213
  args = {}
1878
- if 'controller_url' in _dict:
1879
- args['controller_url'] = _dict.get('controller_url')
1880
- if 'broker_url' in _dict:
1881
- args['broker_url'] = _dict.get('broker_url')
1882
- if 'broker_proxy_url' in _dict:
1883
- args['broker_proxy_url'] = _dict.get('broker_proxy_url')
1884
- if 'dashboard_url' in _dict:
1885
- args['dashboard_url'] = _dict.get('dashboard_url')
1886
- if 'dashboard_data_url' in _dict:
1887
- args['dashboard_data_url'] = _dict.get('dashboard_data_url')
1888
- if 'dashboard_detail_tab_url' in _dict:
1889
- args['dashboard_detail_tab_url'] = _dict.get('dashboard_detail_tab_url')
1890
- if 'dashboard_detail_tab_ext_url' in _dict:
1891
- args['dashboard_detail_tab_ext_url'] = _dict.get('dashboard_detail_tab_ext_url')
1892
- if 'service_monitor_api' in _dict:
1893
- args['service_monitor_api'] = _dict.get('service_monitor_api')
1894
- if 'service_monitor_app' in _dict:
1895
- args['service_monitor_app'] = _dict.get('service_monitor_app')
1896
- if 'api_endpoint' in _dict:
1897
- args['api_endpoint'] = _dict.get('api_endpoint')
2214
+ if (controller_url := _dict.get('controller_url')) is not None:
2215
+ args['controller_url'] = controller_url
2216
+ if (broker_url := _dict.get('broker_url')) is not None:
2217
+ args['broker_url'] = broker_url
2218
+ if (broker_proxy_url := _dict.get('broker_proxy_url')) is not None:
2219
+ args['broker_proxy_url'] = broker_proxy_url
2220
+ if (dashboard_url := _dict.get('dashboard_url')) is not None:
2221
+ args['dashboard_url'] = dashboard_url
2222
+ if (dashboard_data_url := _dict.get('dashboard_data_url')) is not None:
2223
+ args['dashboard_data_url'] = dashboard_data_url
2224
+ if (dashboard_detail_tab_url := _dict.get('dashboard_detail_tab_url')) is not None:
2225
+ args['dashboard_detail_tab_url'] = dashboard_detail_tab_url
2226
+ if (dashboard_detail_tab_ext_url := _dict.get('dashboard_detail_tab_ext_url')) is not None:
2227
+ args['dashboard_detail_tab_ext_url'] = dashboard_detail_tab_ext_url
2228
+ if (service_monitor_api := _dict.get('service_monitor_api')) is not None:
2229
+ args['service_monitor_api'] = service_monitor_api
2230
+ if (service_monitor_app := _dict.get('service_monitor_app')) is not None:
2231
+ args['service_monitor_app'] = service_monitor_app
2232
+ if (api_endpoint := _dict.get('api_endpoint')) is not None:
2233
+ args['api_endpoint'] = api_endpoint
1898
2234
  return cls(**args)
1899
2235
 
1900
2236
  @classmethod
@@ -1950,39 +2286,42 @@ class CatalogEntry:
1950
2286
  """
1951
2287
  An entry in the global catalog.
1952
2288
 
1953
- :attr str name: Programmatic name for this catalog entry, which must be
2289
+ :param str name: Programmatic name for this catalog entry, which must be
1954
2290
  formatted like a CRN segment. See the display name in OverviewUI for a
1955
2291
  user-readable name.
1956
- :attr str kind: The type of catalog entry, **service**, **template**,
2292
+ :param str kind: The type of catalog entry, **service**, **template**,
1957
2293
  **dashboard**, which determines the type and shape of the object.
1958
- :attr dict overview_ui: Overview is nested in the top level. The key value pair
2294
+ :param dict overview_ui: Overview is nested in the top level. The key value pair
1959
2295
  is `[_language_]overview_ui`.
1960
- :attr Image images: Image annotation for this catalog entry. The image is a URL.
1961
- :attr str parent_id: (optional) The ID of the parent catalog entry if it exists.
1962
- :attr bool disabled: Boolean value that determines the global visibility for the
1963
- catalog entry, and its children. If it is not enabled, all plans are disabled.
1964
- :attr List[str] tags: A list of tags. For example, IBM, 3rd Party, Beta, GA, and
1965
- Single Tenant.
1966
- :attr bool group: (optional) Boolean value that determines whether the catalog
2296
+ :param Image images: Image annotation for this catalog entry. The image is a
2297
+ URL.
2298
+ :param str parent_id: (optional) The ID of the parent catalog entry if it
2299
+ exists.
2300
+ :param bool disabled: Boolean value that determines the global visibility for
2301
+ the catalog entry, and its children. If it is not enabled, all plans are
2302
+ disabled.
2303
+ :param List[str] tags: A list of tags. For example, IBM, 3rd Party, Beta, GA,
2304
+ and Single Tenant.
2305
+ :param bool group: (optional) Boolean value that determines whether the catalog
1967
2306
  entry is a group.
1968
- :attr Provider provider: Information related to the provider associated with a
2307
+ :param Provider provider: Information related to the provider associated with a
1969
2308
  catalog entry.
1970
- :attr bool active: (optional) Boolean value that describes whether the service
2309
+ :param bool active: (optional) Boolean value that describes whether the service
1971
2310
  is active.
1972
- :attr CatalogEntryMetadata metadata: (optional) Model used to describe metadata
2311
+ :param str url: (optional) URL to get details about this object.
2312
+ :param CatalogEntryMetadata metadata: (optional) Model used to describe metadata
1973
2313
  object returned.
1974
- :attr str id: (optional) Catalog entry's unique ID. It's the same across all
2314
+ :param str id: (optional) Catalog entry's unique ID. It's the same across all
1975
2315
  catalog instances.
1976
- :attr str catalog_crn: (optional) The CRN associated with the catalog entry.
1977
- :attr str url: (optional) URL to get details about this object.
1978
- :attr str children_url: (optional) URL to get details about children of this
2316
+ :param str catalog_crn: (optional) The CRN associated with the catalog entry.
2317
+ :param str children_url: (optional) URL to get details about children of this
1979
2318
  object.
1980
- :attr List[str] geo_tags: (optional) tags to indicate the locations this service
1981
- is deployable to.
1982
- :attr List[str] pricing_tags: (optional) tags to indicate the type of pricing
2319
+ :param List[str] geo_tags: (optional) tags to indicate the locations this
2320
+ service is deployable to.
2321
+ :param List[str] pricing_tags: (optional) tags to indicate the type of pricing
1983
2322
  plans this service supports.
1984
- :attr datetime created: (optional) Date created.
1985
- :attr datetime updated: (optional) Date last updated.
2323
+ :param datetime created: (optional) Date created.
2324
+ :param datetime updated: (optional) Date last updated.
1986
2325
  """
1987
2326
 
1988
2327
  def __init__(
@@ -1995,18 +2334,18 @@ class CatalogEntry:
1995
2334
  tags: List[str],
1996
2335
  provider: 'Provider',
1997
2336
  *,
1998
- parent_id: str = None,
1999
- group: bool = None,
2000
- active: bool = None,
2001
- metadata: 'CatalogEntryMetadata' = None,
2002
- id: str = None,
2003
- catalog_crn: str = None,
2004
- url: str = None,
2005
- children_url: str = None,
2006
- geo_tags: List[str] = None,
2007
- pricing_tags: List[str] = None,
2008
- created: datetime = None,
2009
- updated: datetime = None,
2337
+ parent_id: Optional[str] = None,
2338
+ group: Optional[bool] = None,
2339
+ active: Optional[bool] = None,
2340
+ url: Optional[str] = None,
2341
+ metadata: Optional['CatalogEntryMetadata'] = None,
2342
+ id: Optional[str] = None,
2343
+ catalog_crn: Optional[str] = None,
2344
+ children_url: Optional[str] = None,
2345
+ geo_tags: Optional[List[str]] = None,
2346
+ pricing_tags: Optional[List[str]] = None,
2347
+ created: Optional[datetime] = None,
2348
+ updated: Optional[datetime] = None,
2010
2349
  ) -> None:
2011
2350
  """
2012
2351
  Initialize a CatalogEntry object.
@@ -2046,10 +2385,10 @@ class CatalogEntry:
2046
2385
  self.group = group
2047
2386
  self.provider = provider
2048
2387
  self.active = active
2388
+ self.url = url
2049
2389
  self.metadata = metadata
2050
2390
  self.id = id
2051
2391
  self.catalog_crn = catalog_crn
2052
- self.url = url
2053
2392
  self.children_url = children_url
2054
2393
  self.geo_tags = geo_tags
2055
2394
  self.pricing_tags = pricing_tags
@@ -2060,58 +2399,58 @@ class CatalogEntry:
2060
2399
  def from_dict(cls, _dict: Dict) -> 'CatalogEntry':
2061
2400
  """Initialize a CatalogEntry object from a json dictionary."""
2062
2401
  args = {}
2063
- if 'name' in _dict:
2064
- args['name'] = _dict.get('name')
2402
+ if (name := _dict.get('name')) is not None:
2403
+ args['name'] = name
2065
2404
  else:
2066
2405
  raise ValueError('Required property \'name\' not present in CatalogEntry JSON')
2067
- if 'kind' in _dict:
2068
- args['kind'] = _dict.get('kind')
2406
+ if (kind := _dict.get('kind')) is not None:
2407
+ args['kind'] = kind
2069
2408
  else:
2070
2409
  raise ValueError('Required property \'kind\' not present in CatalogEntry JSON')
2071
- if 'overview_ui' in _dict:
2072
- args['overview_ui'] = {k: Overview.from_dict(v) for k, v in _dict.get('overview_ui').items()}
2410
+ if (overview_ui := _dict.get('overview_ui')) is not None:
2411
+ args['overview_ui'] = {k: Overview.from_dict(v) for k, v in overview_ui.items()}
2073
2412
  else:
2074
2413
  raise ValueError('Required property \'overview_ui\' not present in CatalogEntry JSON')
2075
- if 'images' in _dict:
2076
- args['images'] = Image.from_dict(_dict.get('images'))
2414
+ if (images := _dict.get('images')) is not None:
2415
+ args['images'] = Image.from_dict(images)
2077
2416
  else:
2078
2417
  raise ValueError('Required property \'images\' not present in CatalogEntry JSON')
2079
- if 'parent_id' in _dict:
2080
- args['parent_id'] = _dict.get('parent_id')
2081
- if 'disabled' in _dict:
2082
- args['disabled'] = _dict.get('disabled')
2418
+ if (parent_id := _dict.get('parent_id')) is not None:
2419
+ args['parent_id'] = parent_id
2420
+ if (disabled := _dict.get('disabled')) is not None:
2421
+ args['disabled'] = disabled
2083
2422
  else:
2084
2423
  raise ValueError('Required property \'disabled\' not present in CatalogEntry JSON')
2085
- if 'tags' in _dict:
2086
- args['tags'] = _dict.get('tags')
2424
+ if (tags := _dict.get('tags')) is not None:
2425
+ args['tags'] = tags
2087
2426
  else:
2088
2427
  raise ValueError('Required property \'tags\' not present in CatalogEntry JSON')
2089
- if 'group' in _dict:
2090
- args['group'] = _dict.get('group')
2091
- if 'provider' in _dict:
2092
- args['provider'] = Provider.from_dict(_dict.get('provider'))
2428
+ if (group := _dict.get('group')) is not None:
2429
+ args['group'] = group
2430
+ if (provider := _dict.get('provider')) is not None:
2431
+ args['provider'] = Provider.from_dict(provider)
2093
2432
  else:
2094
2433
  raise ValueError('Required property \'provider\' not present in CatalogEntry JSON')
2095
- if 'active' in _dict:
2096
- args['active'] = _dict.get('active')
2097
- if 'metadata' in _dict:
2098
- args['metadata'] = CatalogEntryMetadata.from_dict(_dict.get('metadata'))
2099
- if 'id' in _dict:
2100
- args['id'] = _dict.get('id')
2101
- if 'catalog_crn' in _dict:
2102
- args['catalog_crn'] = _dict.get('catalog_crn')
2103
- if 'url' in _dict:
2104
- args['url'] = _dict.get('url')
2105
- if 'children_url' in _dict:
2106
- args['children_url'] = _dict.get('children_url')
2107
- if 'geo_tags' in _dict:
2108
- args['geo_tags'] = _dict.get('geo_tags')
2109
- if 'pricing_tags' in _dict:
2110
- args['pricing_tags'] = _dict.get('pricing_tags')
2111
- if 'created' in _dict:
2112
- args['created'] = string_to_datetime(_dict.get('created'))
2113
- if 'updated' in _dict:
2114
- args['updated'] = string_to_datetime(_dict.get('updated'))
2434
+ if (active := _dict.get('active')) is not None:
2435
+ args['active'] = active
2436
+ if (url := _dict.get('url')) is not None:
2437
+ args['url'] = url
2438
+ if (metadata := _dict.get('metadata')) is not None:
2439
+ args['metadata'] = CatalogEntryMetadata.from_dict(metadata)
2440
+ if (id := _dict.get('id')) is not None:
2441
+ args['id'] = id
2442
+ if (catalog_crn := _dict.get('catalog_crn')) is not None:
2443
+ args['catalog_crn'] = catalog_crn
2444
+ if (children_url := _dict.get('children_url')) is not None:
2445
+ args['children_url'] = children_url
2446
+ if (geo_tags := _dict.get('geo_tags')) is not None:
2447
+ args['geo_tags'] = geo_tags
2448
+ if (pricing_tags := _dict.get('pricing_tags')) is not None:
2449
+ args['pricing_tags'] = pricing_tags
2450
+ if (created := _dict.get('created')) is not None:
2451
+ args['created'] = string_to_datetime(created)
2452
+ if (updated := _dict.get('updated')) is not None:
2453
+ args['updated'] = string_to_datetime(updated)
2115
2454
  return cls(**args)
2116
2455
 
2117
2456
  @classmethod
@@ -2127,9 +2466,18 @@ class CatalogEntry:
2127
2466
  if hasattr(self, 'kind') and self.kind is not None:
2128
2467
  _dict['kind'] = self.kind
2129
2468
  if hasattr(self, 'overview_ui') and self.overview_ui is not None:
2130
- _dict['overview_ui'] = {k: v.to_dict() for k, v in self.overview_ui.items()}
2469
+ overview_ui_map = {}
2470
+ for k, v in self.overview_ui.items():
2471
+ if isinstance(v, dict):
2472
+ overview_ui_map[k] = v
2473
+ else:
2474
+ overview_ui_map[k] = v.to_dict()
2475
+ _dict['overview_ui'] = overview_ui_map
2131
2476
  if hasattr(self, 'images') and self.images is not None:
2132
- _dict['images'] = self.images.to_dict()
2477
+ if isinstance(self.images, dict):
2478
+ _dict['images'] = self.images
2479
+ else:
2480
+ _dict['images'] = self.images.to_dict()
2133
2481
  if hasattr(self, 'parent_id') and self.parent_id is not None:
2134
2482
  _dict['parent_id'] = self.parent_id
2135
2483
  if hasattr(self, 'disabled') and self.disabled is not None:
@@ -2139,17 +2487,23 @@ class CatalogEntry:
2139
2487
  if hasattr(self, 'group') and self.group is not None:
2140
2488
  _dict['group'] = self.group
2141
2489
  if hasattr(self, 'provider') and self.provider is not None:
2142
- _dict['provider'] = self.provider.to_dict()
2490
+ if isinstance(self.provider, dict):
2491
+ _dict['provider'] = self.provider
2492
+ else:
2493
+ _dict['provider'] = self.provider.to_dict()
2143
2494
  if hasattr(self, 'active') and self.active is not None:
2144
2495
  _dict['active'] = self.active
2496
+ if hasattr(self, 'url') and getattr(self, 'url') is not None:
2497
+ _dict['url'] = getattr(self, 'url')
2145
2498
  if hasattr(self, 'metadata') and self.metadata is not None:
2146
- _dict['metadata'] = self.metadata.to_dict()
2499
+ if isinstance(self.metadata, dict):
2500
+ _dict['metadata'] = self.metadata
2501
+ else:
2502
+ _dict['metadata'] = self.metadata.to_dict()
2147
2503
  if hasattr(self, 'id') and getattr(self, 'id') is not None:
2148
2504
  _dict['id'] = getattr(self, 'id')
2149
2505
  if hasattr(self, 'catalog_crn') and getattr(self, 'catalog_crn') is not None:
2150
2506
  _dict['catalog_crn'] = getattr(self, 'catalog_crn')
2151
- if hasattr(self, 'url') and getattr(self, 'url') is not None:
2152
- _dict['url'] = getattr(self, 'url')
2153
2507
  if hasattr(self, 'children_url') and getattr(self, 'children_url') is not None:
2154
2508
  _dict['children_url'] = getattr(self, 'children_url')
2155
2509
  if hasattr(self, 'geo_tags') and getattr(self, 'geo_tags') is not None:
@@ -2195,44 +2549,45 @@ class CatalogEntryMetadata:
2195
2549
  """
2196
2550
  Model used to describe metadata object returned.
2197
2551
 
2198
- :attr bool rc_compatible: (optional) Boolean value that describes whether the
2552
+ :param bool rc_compatible: (optional) Boolean value that describes whether the
2199
2553
  service is compatible with the Resource Controller.
2200
- :attr CFMetaData service: (optional) Service-related metadata.
2201
- :attr PlanMetaData plan: (optional) Plan-related metadata.
2202
- :attr AliasMetaData alias: (optional) Alias-related metadata.
2203
- :attr TemplateMetaData template: (optional) Template-related metadata.
2204
- :attr UIMetaData ui: (optional) Information related to the UI presentation
2554
+ :param CFMetaData service: (optional) Service-related metadata.
2555
+ :param PlanMetaData plan: (optional) Plan-related metadata.
2556
+ :param AliasMetaData alias: (optional) Alias-related metadata.
2557
+ :param TemplateMetaData template: (optional) Template-related metadata.
2558
+ :param UIMetaData ui: (optional) Information related to the UI presentation
2205
2559
  associated with a catalog entry.
2206
- :attr List[str] compliance: (optional) Compliance information for HIPAA and PCI.
2207
- :attr SLAMetaData sla: (optional) Service Level Agreement related metadata.
2208
- :attr Callbacks callbacks: (optional) Callback-related information associated
2560
+ :param List[str] compliance: (optional) Compliance information for HIPAA and
2561
+ PCI.
2562
+ :param SLAMetaData sla: (optional) Service Level Agreement related metadata.
2563
+ :param Callbacks callbacks: (optional) Callback-related information associated
2209
2564
  with a catalog entry.
2210
- :attr str original_name: (optional) The original name of the object.
2211
- :attr str version: (optional) Optional version of the object.
2212
- :attr dict other: (optional) Additional information.
2213
- :attr CatalogEntryMetadataPricing pricing: (optional) Pricing-related
2565
+ :param str original_name: (optional) The original name of the object.
2566
+ :param str version: (optional) Optional version of the object.
2567
+ :param dict other: (optional) Additional information.
2568
+ :param CatalogEntryMetadataPricing pricing: (optional) Pricing-related
2214
2569
  information.
2215
- :attr CatalogEntryMetadataDeployment deployment: (optional) Deployment-related
2570
+ :param CatalogEntryMetadataDeployment deployment: (optional) Deployment-related
2216
2571
  metadata.
2217
2572
  """
2218
2573
 
2219
2574
  def __init__(
2220
2575
  self,
2221
2576
  *,
2222
- rc_compatible: bool = None,
2223
- service: 'CFMetaData' = None,
2224
- plan: 'PlanMetaData' = None,
2225
- alias: 'AliasMetaData' = None,
2226
- template: 'TemplateMetaData' = None,
2227
- ui: 'UIMetaData' = None,
2228
- compliance: List[str] = None,
2229
- sla: 'SLAMetaData' = None,
2230
- callbacks: 'Callbacks' = None,
2231
- original_name: str = None,
2232
- version: str = None,
2233
- other: dict = None,
2234
- pricing: 'CatalogEntryMetadataPricing' = None,
2235
- deployment: 'CatalogEntryMetadataDeployment' = None,
2577
+ rc_compatible: Optional[bool] = None,
2578
+ service: Optional['CFMetaData'] = None,
2579
+ plan: Optional['PlanMetaData'] = None,
2580
+ alias: Optional['AliasMetaData'] = None,
2581
+ template: Optional['TemplateMetaData'] = None,
2582
+ ui: Optional['UIMetaData'] = None,
2583
+ compliance: Optional[List[str]] = None,
2584
+ sla: Optional['SLAMetaData'] = None,
2585
+ callbacks: Optional['Callbacks'] = None,
2586
+ original_name: Optional[str] = None,
2587
+ version: Optional[str] = None,
2588
+ other: Optional[dict] = None,
2589
+ pricing: Optional['CatalogEntryMetadataPricing'] = None,
2590
+ deployment: Optional['CatalogEntryMetadataDeployment'] = None,
2236
2591
  ) -> None:
2237
2592
  """
2238
2593
  Initialize a CatalogEntryMetadata object.
@@ -2278,34 +2633,34 @@ class CatalogEntryMetadata:
2278
2633
  def from_dict(cls, _dict: Dict) -> 'CatalogEntryMetadata':
2279
2634
  """Initialize a CatalogEntryMetadata object from a json dictionary."""
2280
2635
  args = {}
2281
- if 'rc_compatible' in _dict:
2282
- args['rc_compatible'] = _dict.get('rc_compatible')
2283
- if 'service' in _dict:
2284
- args['service'] = CFMetaData.from_dict(_dict.get('service'))
2285
- if 'plan' in _dict:
2286
- args['plan'] = PlanMetaData.from_dict(_dict.get('plan'))
2287
- if 'alias' in _dict:
2288
- args['alias'] = AliasMetaData.from_dict(_dict.get('alias'))
2289
- if 'template' in _dict:
2290
- args['template'] = TemplateMetaData.from_dict(_dict.get('template'))
2291
- if 'ui' in _dict:
2292
- args['ui'] = UIMetaData.from_dict(_dict.get('ui'))
2293
- if 'compliance' in _dict:
2294
- args['compliance'] = _dict.get('compliance')
2295
- if 'sla' in _dict:
2296
- args['sla'] = SLAMetaData.from_dict(_dict.get('sla'))
2297
- if 'callbacks' in _dict:
2298
- args['callbacks'] = Callbacks.from_dict(_dict.get('callbacks'))
2299
- if 'original_name' in _dict:
2300
- args['original_name'] = _dict.get('original_name')
2301
- if 'version' in _dict:
2302
- args['version'] = _dict.get('version')
2303
- if 'other' in _dict:
2304
- args['other'] = _dict.get('other')
2305
- if 'pricing' in _dict:
2306
- args['pricing'] = CatalogEntryMetadataPricing.from_dict(_dict.get('pricing'))
2307
- if 'deployment' in _dict:
2308
- args['deployment'] = CatalogEntryMetadataDeployment.from_dict(_dict.get('deployment'))
2636
+ if (rc_compatible := _dict.get('rc_compatible')) is not None:
2637
+ args['rc_compatible'] = rc_compatible
2638
+ if (service := _dict.get('service')) is not None:
2639
+ args['service'] = CFMetaData.from_dict(service)
2640
+ if (plan := _dict.get('plan')) is not None:
2641
+ args['plan'] = PlanMetaData.from_dict(plan)
2642
+ if (alias := _dict.get('alias')) is not None:
2643
+ args['alias'] = AliasMetaData.from_dict(alias)
2644
+ if (template := _dict.get('template')) is not None:
2645
+ args['template'] = TemplateMetaData.from_dict(template)
2646
+ if (ui := _dict.get('ui')) is not None:
2647
+ args['ui'] = UIMetaData.from_dict(ui)
2648
+ if (compliance := _dict.get('compliance')) is not None:
2649
+ args['compliance'] = compliance
2650
+ if (sla := _dict.get('sla')) is not None:
2651
+ args['sla'] = SLAMetaData.from_dict(sla)
2652
+ if (callbacks := _dict.get('callbacks')) is not None:
2653
+ args['callbacks'] = Callbacks.from_dict(callbacks)
2654
+ if (original_name := _dict.get('original_name')) is not None:
2655
+ args['original_name'] = original_name
2656
+ if (version := _dict.get('version')) is not None:
2657
+ args['version'] = version
2658
+ if (other := _dict.get('other')) is not None:
2659
+ args['other'] = other
2660
+ if (pricing := _dict.get('pricing')) is not None:
2661
+ args['pricing'] = CatalogEntryMetadataPricing.from_dict(pricing)
2662
+ if (deployment := _dict.get('deployment')) is not None:
2663
+ args['deployment'] = CatalogEntryMetadataDeployment.from_dict(deployment)
2309
2664
  return cls(**args)
2310
2665
 
2311
2666
  @classmethod
@@ -2319,21 +2674,42 @@ class CatalogEntryMetadata:
2319
2674
  if hasattr(self, 'rc_compatible') and self.rc_compatible is not None:
2320
2675
  _dict['rc_compatible'] = self.rc_compatible
2321
2676
  if hasattr(self, 'service') and self.service is not None:
2322
- _dict['service'] = self.service.to_dict()
2677
+ if isinstance(self.service, dict):
2678
+ _dict['service'] = self.service
2679
+ else:
2680
+ _dict['service'] = self.service.to_dict()
2323
2681
  if hasattr(self, 'plan') and self.plan is not None:
2324
- _dict['plan'] = self.plan.to_dict()
2682
+ if isinstance(self.plan, dict):
2683
+ _dict['plan'] = self.plan
2684
+ else:
2685
+ _dict['plan'] = self.plan.to_dict()
2325
2686
  if hasattr(self, 'alias') and self.alias is not None:
2326
- _dict['alias'] = self.alias.to_dict()
2687
+ if isinstance(self.alias, dict):
2688
+ _dict['alias'] = self.alias
2689
+ else:
2690
+ _dict['alias'] = self.alias.to_dict()
2327
2691
  if hasattr(self, 'template') and self.template is not None:
2328
- _dict['template'] = self.template.to_dict()
2692
+ if isinstance(self.template, dict):
2693
+ _dict['template'] = self.template
2694
+ else:
2695
+ _dict['template'] = self.template.to_dict()
2329
2696
  if hasattr(self, 'ui') and self.ui is not None:
2330
- _dict['ui'] = self.ui.to_dict()
2697
+ if isinstance(self.ui, dict):
2698
+ _dict['ui'] = self.ui
2699
+ else:
2700
+ _dict['ui'] = self.ui.to_dict()
2331
2701
  if hasattr(self, 'compliance') and self.compliance is not None:
2332
2702
  _dict['compliance'] = self.compliance
2333
2703
  if hasattr(self, 'sla') and self.sla is not None:
2334
- _dict['sla'] = self.sla.to_dict()
2704
+ if isinstance(self.sla, dict):
2705
+ _dict['sla'] = self.sla
2706
+ else:
2707
+ _dict['sla'] = self.sla.to_dict()
2335
2708
  if hasattr(self, 'callbacks') and self.callbacks is not None:
2336
- _dict['callbacks'] = self.callbacks.to_dict()
2709
+ if isinstance(self.callbacks, dict):
2710
+ _dict['callbacks'] = self.callbacks
2711
+ else:
2712
+ _dict['callbacks'] = self.callbacks.to_dict()
2337
2713
  if hasattr(self, 'original_name') and self.original_name is not None:
2338
2714
  _dict['original_name'] = self.original_name
2339
2715
  if hasattr(self, 'version') and self.version is not None:
@@ -2341,9 +2717,15 @@ class CatalogEntryMetadata:
2341
2717
  if hasattr(self, 'other') and self.other is not None:
2342
2718
  _dict['other'] = self.other
2343
2719
  if hasattr(self, 'pricing') and self.pricing is not None:
2344
- _dict['pricing'] = self.pricing.to_dict()
2720
+ if isinstance(self.pricing, dict):
2721
+ _dict['pricing'] = self.pricing
2722
+ else:
2723
+ _dict['pricing'] = self.pricing.to_dict()
2345
2724
  if hasattr(self, 'deployment') and self.deployment is not None:
2346
- _dict['deployment'] = self.deployment.to_dict()
2725
+ if isinstance(self.deployment, dict):
2726
+ _dict['deployment'] = self.deployment
2727
+ else:
2728
+ _dict['deployment'] = self.deployment.to_dict()
2347
2729
  return _dict
2348
2730
 
2349
2731
  def _to_dict(self):
@@ -2369,33 +2751,33 @@ class CatalogEntryMetadataDeployment:
2369
2751
  """
2370
2752
  Deployment-related metadata.
2371
2753
 
2372
- :attr str location: (optional) Describes the region where the service is
2754
+ :param str location: (optional) Describes the region where the service is
2373
2755
  located.
2374
- :attr str location_url: (optional) Pointer to the location resource in the
2756
+ :param str location_url: (optional) Pointer to the location resource in the
2375
2757
  catalog.
2376
- :attr str original_location: (optional) Original service location.
2377
- :attr str target_crn: (optional) A CRN that describes the deployment.
2758
+ :param str original_location: (optional) Original service location.
2759
+ :param str target_crn: (optional) A CRN that describes the deployment.
2378
2760
  crn:v1:[cname]:[ctype]:[location]:[scope]::[resource-type]:[resource].
2379
- :attr str service_crn: (optional) CRN for the service.
2380
- :attr str mccp_id: (optional) ID for MCCP.
2381
- :attr Broker broker: (optional) The broker associated with a catalog entry.
2382
- :attr bool supports_rc_migration: (optional) This deployment not only supports
2761
+ :param str service_crn: (optional) CRN for the service.
2762
+ :param str mccp_id: (optional) ID for MCCP.
2763
+ :param Broker broker: (optional) The broker associated with a catalog entry.
2764
+ :param bool supports_rc_migration: (optional) This deployment not only supports
2383
2765
  RC but is ready to migrate and support the RC broker for a location.
2384
- :attr str target_network: (optional) network to use during deployment.
2766
+ :param str target_network: (optional) network to use during deployment.
2385
2767
  """
2386
2768
 
2387
2769
  def __init__(
2388
2770
  self,
2389
2771
  *,
2390
- location: str = None,
2391
- location_url: str = None,
2392
- original_location: str = None,
2393
- target_crn: str = None,
2394
- service_crn: str = None,
2395
- mccp_id: str = None,
2396
- broker: 'Broker' = None,
2397
- supports_rc_migration: bool = None,
2398
- target_network: str = None,
2772
+ location: Optional[str] = None,
2773
+ location_url: Optional[str] = None,
2774
+ original_location: Optional[str] = None,
2775
+ target_crn: Optional[str] = None,
2776
+ service_crn: Optional[str] = None,
2777
+ mccp_id: Optional[str] = None,
2778
+ broker: Optional['Broker'] = None,
2779
+ supports_rc_migration: Optional[bool] = None,
2780
+ target_network: Optional[str] = None,
2399
2781
  ) -> None:
2400
2782
  """
2401
2783
  Initialize a CatalogEntryMetadataDeployment object.
@@ -2428,24 +2810,24 @@ class CatalogEntryMetadataDeployment:
2428
2810
  def from_dict(cls, _dict: Dict) -> 'CatalogEntryMetadataDeployment':
2429
2811
  """Initialize a CatalogEntryMetadataDeployment object from a json dictionary."""
2430
2812
  args = {}
2431
- if 'location' in _dict:
2432
- args['location'] = _dict.get('location')
2433
- if 'location_url' in _dict:
2434
- args['location_url'] = _dict.get('location_url')
2435
- if 'original_location' in _dict:
2436
- args['original_location'] = _dict.get('original_location')
2437
- if 'target_crn' in _dict:
2438
- args['target_crn'] = _dict.get('target_crn')
2439
- if 'service_crn' in _dict:
2440
- args['service_crn'] = _dict.get('service_crn')
2441
- if 'mccp_id' in _dict:
2442
- args['mccp_id'] = _dict.get('mccp_id')
2443
- if 'broker' in _dict:
2444
- args['broker'] = Broker.from_dict(_dict.get('broker'))
2445
- if 'supports_rc_migration' in _dict:
2446
- args['supports_rc_migration'] = _dict.get('supports_rc_migration')
2447
- if 'target_network' in _dict:
2448
- args['target_network'] = _dict.get('target_network')
2813
+ if (location := _dict.get('location')) is not None:
2814
+ args['location'] = location
2815
+ if (location_url := _dict.get('location_url')) is not None:
2816
+ args['location_url'] = location_url
2817
+ if (original_location := _dict.get('original_location')) is not None:
2818
+ args['original_location'] = original_location
2819
+ if (target_crn := _dict.get('target_crn')) is not None:
2820
+ args['target_crn'] = target_crn
2821
+ if (service_crn := _dict.get('service_crn')) is not None:
2822
+ args['service_crn'] = service_crn
2823
+ if (mccp_id := _dict.get('mccp_id')) is not None:
2824
+ args['mccp_id'] = mccp_id
2825
+ if (broker := _dict.get('broker')) is not None:
2826
+ args['broker'] = Broker.from_dict(broker)
2827
+ if (supports_rc_migration := _dict.get('supports_rc_migration')) is not None:
2828
+ args['supports_rc_migration'] = supports_rc_migration
2829
+ if (target_network := _dict.get('target_network')) is not None:
2830
+ args['target_network'] = target_network
2449
2831
  return cls(**args)
2450
2832
 
2451
2833
  @classmethod
@@ -2469,7 +2851,10 @@ class CatalogEntryMetadataDeployment:
2469
2851
  if hasattr(self, 'mccp_id') and self.mccp_id is not None:
2470
2852
  _dict['mccp_id'] = self.mccp_id
2471
2853
  if hasattr(self, 'broker') and self.broker is not None:
2472
- _dict['broker'] = self.broker.to_dict()
2854
+ if isinstance(self.broker, dict):
2855
+ _dict['broker'] = self.broker
2856
+ else:
2857
+ _dict['broker'] = self.broker.to_dict()
2473
2858
  if hasattr(self, 'supports_rc_migration') and self.supports_rc_migration is not None:
2474
2859
  _dict['supports_rc_migration'] = self.supports_rc_migration
2475
2860
  if hasattr(self, 'target_network') and self.target_network is not None:
@@ -2499,21 +2884,35 @@ class CatalogEntryMetadataPricing:
2499
2884
  """
2500
2885
  Pricing-related information.
2501
2886
 
2502
- :attr str type: (optional) Type of plan. Valid values are `free`, `trial`,
2887
+ :param str type: (optional) Type of plan. Valid values are `free`, `trial`,
2503
2888
  `paygo`, `bluemix-subscription`, and `ibm-subscription`.
2504
- :attr str origin: (optional) Defines where the pricing originates.
2505
- :attr StartingPrice starting_price: (optional) Plan-specific starting price
2889
+ :param str origin: (optional) Defines where the pricing originates.
2890
+ :param StartingPrice starting_price: (optional) Plan-specific starting price
2506
2891
  information.
2507
- :attr List[Metrics] metrics: (optional) Plan-specific cost metric structure.
2892
+ :param str deployment_id: (optional) The deployment object id this pricing is
2893
+ from. Only set if object kind is deployment.
2894
+ :param str deployment_location: (optional) The deployment location this pricing
2895
+ is from. Only set if object kind is deployment.
2896
+ :param bool deployment_location_no_price_available: (optional) Is the location
2897
+ price not available. Only set in api /pricing/deployment and only set if true.
2898
+ This means for the given deployment object there was no pricing set in pricing
2899
+ catalog.
2900
+ :param List[Metrics] metrics: (optional) Plan-specific cost metric structure.
2901
+ :param List[str] deployment_regions: (optional) List of regions where region
2902
+ pricing is available. Only set on global deployments if enabled by owner.
2508
2903
  """
2509
2904
 
2510
2905
  def __init__(
2511
2906
  self,
2512
2907
  *,
2513
- type: str = None,
2514
- origin: str = None,
2515
- starting_price: 'StartingPrice' = None,
2516
- metrics: List['Metrics'] = None,
2908
+ type: Optional[str] = None,
2909
+ origin: Optional[str] = None,
2910
+ starting_price: Optional['StartingPrice'] = None,
2911
+ deployment_id: Optional[str] = None,
2912
+ deployment_location: Optional[str] = None,
2913
+ deployment_location_no_price_available: Optional[bool] = None,
2914
+ metrics: Optional[List['Metrics']] = None,
2915
+ deployment_regions: Optional[List[str]] = None,
2517
2916
  ) -> None:
2518
2917
  """
2519
2918
  Initialize a CatalogEntryMetadataPricing object.
@@ -2523,26 +2922,49 @@ class CatalogEntryMetadataPricing:
2523
2922
  :param str origin: (optional) Defines where the pricing originates.
2524
2923
  :param StartingPrice starting_price: (optional) Plan-specific starting
2525
2924
  price information.
2925
+ :param str deployment_id: (optional) The deployment object id this pricing
2926
+ is from. Only set if object kind is deployment.
2927
+ :param str deployment_location: (optional) The deployment location this
2928
+ pricing is from. Only set if object kind is deployment.
2929
+ :param bool deployment_location_no_price_available: (optional) Is the
2930
+ location price not available. Only set in api /pricing/deployment and only
2931
+ set if true. This means for the given deployment object there was no
2932
+ pricing set in pricing catalog.
2526
2933
  :param List[Metrics] metrics: (optional) Plan-specific cost metric
2527
2934
  structure.
2935
+ :param List[str] deployment_regions: (optional) List of regions where
2936
+ region pricing is available. Only set on global deployments if enabled by
2937
+ owner.
2528
2938
  """
2529
2939
  self.type = type
2530
2940
  self.origin = origin
2531
2941
  self.starting_price = starting_price
2942
+ self.deployment_id = deployment_id
2943
+ self.deployment_location = deployment_location
2944
+ self.deployment_location_no_price_available = deployment_location_no_price_available
2532
2945
  self.metrics = metrics
2946
+ self.deployment_regions = deployment_regions
2533
2947
 
2534
2948
  @classmethod
2535
2949
  def from_dict(cls, _dict: Dict) -> 'CatalogEntryMetadataPricing':
2536
2950
  """Initialize a CatalogEntryMetadataPricing object from a json dictionary."""
2537
2951
  args = {}
2538
- if 'type' in _dict:
2539
- args['type'] = _dict.get('type')
2540
- if 'origin' in _dict:
2541
- args['origin'] = _dict.get('origin')
2542
- if 'starting_price' in _dict:
2543
- args['starting_price'] = StartingPrice.from_dict(_dict.get('starting_price'))
2544
- if 'metrics' in _dict:
2545
- args['metrics'] = [Metrics.from_dict(x) for x in _dict.get('metrics')]
2952
+ if (type := _dict.get('type')) is not None:
2953
+ args['type'] = type
2954
+ if (origin := _dict.get('origin')) is not None:
2955
+ args['origin'] = origin
2956
+ if (starting_price := _dict.get('starting_price')) is not None:
2957
+ args['starting_price'] = StartingPrice.from_dict(starting_price)
2958
+ if (deployment_id := _dict.get('deployment_id')) is not None:
2959
+ args['deployment_id'] = deployment_id
2960
+ if (deployment_location := _dict.get('deployment_location')) is not None:
2961
+ args['deployment_location'] = deployment_location
2962
+ if (deployment_location_no_price_available := _dict.get('deployment_location_no_price_available')) is not None:
2963
+ args['deployment_location_no_price_available'] = deployment_location_no_price_available
2964
+ if (metrics := _dict.get('metrics')) is not None:
2965
+ args['metrics'] = [Metrics.from_dict(v) for v in metrics]
2966
+ if (deployment_regions := _dict.get('deployment_regions')) is not None:
2967
+ args['deployment_regions'] = deployment_regions
2546
2968
  return cls(**args)
2547
2969
 
2548
2970
  @classmethod
@@ -2558,9 +2980,29 @@ class CatalogEntryMetadataPricing:
2558
2980
  if hasattr(self, 'origin') and self.origin is not None:
2559
2981
  _dict['origin'] = self.origin
2560
2982
  if hasattr(self, 'starting_price') and self.starting_price is not None:
2561
- _dict['starting_price'] = self.starting_price.to_dict()
2983
+ if isinstance(self.starting_price, dict):
2984
+ _dict['starting_price'] = self.starting_price
2985
+ else:
2986
+ _dict['starting_price'] = self.starting_price.to_dict()
2987
+ if hasattr(self, 'deployment_id') and self.deployment_id is not None:
2988
+ _dict['deployment_id'] = self.deployment_id
2989
+ if hasattr(self, 'deployment_location') and self.deployment_location is not None:
2990
+ _dict['deployment_location'] = self.deployment_location
2991
+ if (
2992
+ hasattr(self, 'deployment_location_no_price_available')
2993
+ and self.deployment_location_no_price_available is not None
2994
+ ):
2995
+ _dict['deployment_location_no_price_available'] = self.deployment_location_no_price_available
2562
2996
  if hasattr(self, 'metrics') and self.metrics is not None:
2563
- _dict['metrics'] = [x.to_dict() for x in self.metrics]
2997
+ metrics_list = []
2998
+ for v in self.metrics:
2999
+ if isinstance(v, dict):
3000
+ metrics_list.append(v)
3001
+ else:
3002
+ metrics_list.append(v.to_dict())
3003
+ _dict['metrics'] = metrics_list
3004
+ if hasattr(self, 'deployment_regions') and self.deployment_regions is not None:
3005
+ _dict['deployment_regions'] = self.deployment_regions
2564
3006
  return _dict
2565
3007
 
2566
3008
  def _to_dict(self):
@@ -2586,13 +3028,18 @@ class DRMetaData:
2586
3028
  """
2587
3029
  SLA Disaster Recovery-related metadata.
2588
3030
 
2589
- :attr bool dr: (optional) Required boolean value that describes whether disaster
2590
- recovery is on.
2591
- :attr str description: (optional) Description of the disaster recovery
3031
+ :param bool dr: (optional) Required boolean value that describes whether
3032
+ disaster recovery is on.
3033
+ :param str description: (optional) Description of the disaster recovery
2592
3034
  implementation.
2593
3035
  """
2594
3036
 
2595
- def __init__(self, *, dr: bool = None, description: str = None) -> None:
3037
+ def __init__(
3038
+ self,
3039
+ *,
3040
+ dr: Optional[bool] = None,
3041
+ description: Optional[str] = None,
3042
+ ) -> None:
2596
3043
  """
2597
3044
  Initialize a DRMetaData object.
2598
3045
 
@@ -2608,10 +3055,10 @@ class DRMetaData:
2608
3055
  def from_dict(cls, _dict: Dict) -> 'DRMetaData':
2609
3056
  """Initialize a DRMetaData object from a json dictionary."""
2610
3057
  args = {}
2611
- if 'dr' in _dict:
2612
- args['dr'] = _dict.get('dr')
2613
- if 'description' in _dict:
2614
- args['description'] = _dict.get('description')
3058
+ if (dr := _dict.get('dr')) is not None:
3059
+ args['dr'] = dr
3060
+ if (description := _dict.get('description')) is not None:
3061
+ args['description'] = description
2615
3062
  return cls(**args)
2616
3063
 
2617
3064
  @classmethod
@@ -2651,32 +3098,32 @@ class DeploymentBase:
2651
3098
  """
2652
3099
  Deployment-related metadata.
2653
3100
 
2654
- :attr str location: (optional) Describes the region where the service is
3101
+ :param str location: (optional) Describes the region where the service is
2655
3102
  located.
2656
- :attr str location_url: (optional) URL of deployment.
2657
- :attr str original_location: (optional) Original service location.
2658
- :attr str target_crn: (optional) A CRN that describes the deployment.
3103
+ :param str location_url: (optional) URL of deployment.
3104
+ :param str original_location: (optional) Original service location.
3105
+ :param str target_crn: (optional) A CRN that describes the deployment.
2659
3106
  crn:v1:[cname]:[ctype]:[location]:[scope]::[resource-type]:[resource].
2660
- :attr str service_crn: (optional) CRN for the service.
2661
- :attr str mccp_id: (optional) ID for MCCP.
2662
- :attr Broker broker: (optional) The broker associated with a catalog entry.
2663
- :attr bool supports_rc_migration: (optional) This deployment not only supports
3107
+ :param str service_crn: (optional) CRN for the service.
3108
+ :param str mccp_id: (optional) ID for MCCP.
3109
+ :param Broker broker: (optional) The broker associated with a catalog entry.
3110
+ :param bool supports_rc_migration: (optional) This deployment not only supports
2664
3111
  RC but is ready to migrate and support the RC broker for a location.
2665
- :attr str target_network: (optional) network to use during deployment.
3112
+ :param str target_network: (optional) network to use during deployment.
2666
3113
  """
2667
3114
 
2668
3115
  def __init__(
2669
3116
  self,
2670
3117
  *,
2671
- location: str = None,
2672
- location_url: str = None,
2673
- original_location: str = None,
2674
- target_crn: str = None,
2675
- service_crn: str = None,
2676
- mccp_id: str = None,
2677
- broker: 'Broker' = None,
2678
- supports_rc_migration: bool = None,
2679
- target_network: str = None,
3118
+ location: Optional[str] = None,
3119
+ location_url: Optional[str] = None,
3120
+ original_location: Optional[str] = None,
3121
+ target_crn: Optional[str] = None,
3122
+ service_crn: Optional[str] = None,
3123
+ mccp_id: Optional[str] = None,
3124
+ broker: Optional['Broker'] = None,
3125
+ supports_rc_migration: Optional[bool] = None,
3126
+ target_network: Optional[str] = None,
2680
3127
  ) -> None:
2681
3128
  """
2682
3129
  Initialize a DeploymentBase object.
@@ -2710,24 +3157,24 @@ class DeploymentBase:
2710
3157
  def from_dict(cls, _dict: Dict) -> 'DeploymentBase':
2711
3158
  """Initialize a DeploymentBase object from a json dictionary."""
2712
3159
  args = {}
2713
- if 'location' in _dict:
2714
- args['location'] = _dict.get('location')
2715
- if 'location_url' in _dict:
2716
- args['location_url'] = _dict.get('location_url')
2717
- if 'original_location' in _dict:
2718
- args['original_location'] = _dict.get('original_location')
2719
- if 'target_crn' in _dict:
2720
- args['target_crn'] = _dict.get('target_crn')
2721
- if 'service_crn' in _dict:
2722
- args['service_crn'] = _dict.get('service_crn')
2723
- if 'mccp_id' in _dict:
2724
- args['mccp_id'] = _dict.get('mccp_id')
2725
- if 'broker' in _dict:
2726
- args['broker'] = Broker.from_dict(_dict.get('broker'))
2727
- if 'supports_rc_migration' in _dict:
2728
- args['supports_rc_migration'] = _dict.get('supports_rc_migration')
2729
- if 'target_network' in _dict:
2730
- args['target_network'] = _dict.get('target_network')
3160
+ if (location := _dict.get('location')) is not None:
3161
+ args['location'] = location
3162
+ if (location_url := _dict.get('location_url')) is not None:
3163
+ args['location_url'] = location_url
3164
+ if (original_location := _dict.get('original_location')) is not None:
3165
+ args['original_location'] = original_location
3166
+ if (target_crn := _dict.get('target_crn')) is not None:
3167
+ args['target_crn'] = target_crn
3168
+ if (service_crn := _dict.get('service_crn')) is not None:
3169
+ args['service_crn'] = service_crn
3170
+ if (mccp_id := _dict.get('mccp_id')) is not None:
3171
+ args['mccp_id'] = mccp_id
3172
+ if (broker := _dict.get('broker')) is not None:
3173
+ args['broker'] = Broker.from_dict(broker)
3174
+ if (supports_rc_migration := _dict.get('supports_rc_migration')) is not None:
3175
+ args['supports_rc_migration'] = supports_rc_migration
3176
+ if (target_network := _dict.get('target_network')) is not None:
3177
+ args['target_network'] = target_network
2731
3178
  return cls(**args)
2732
3179
 
2733
3180
  @classmethod
@@ -2751,7 +3198,10 @@ class DeploymentBase:
2751
3198
  if hasattr(self, 'mccp_id') and self.mccp_id is not None:
2752
3199
  _dict['mccp_id'] = self.mccp_id
2753
3200
  if hasattr(self, 'broker') and self.broker is not None:
2754
- _dict['broker'] = self.broker.to_dict()
3201
+ if isinstance(self.broker, dict):
3202
+ _dict['broker'] = self.broker
3203
+ else:
3204
+ _dict['broker'] = self.broker.to_dict()
2755
3205
  if hasattr(self, 'supports_rc_migration') and self.supports_rc_migration is not None:
2756
3206
  _dict['supports_rc_migration'] = self.supports_rc_migration
2757
3207
  if hasattr(self, 'target_network') and self.target_network is not None:
@@ -2781,36 +3231,38 @@ class EntrySearchResult:
2781
3231
  """
2782
3232
  A paginated search result containing catalog entries.
2783
3233
 
2784
- :attr int offset: (optional) The offset (origin 0) of the first resource in this
2785
- page of search results.
2786
- :attr int limit: (optional) The maximum number of resources returned in each
3234
+ :param int offset: (optional) The offset (origin 0) of the first resource in
3235
+ this page of search results.
3236
+ :param int limit: (optional) The maximum number of resources returned in each
2787
3237
  page of search results.
2788
- :attr int count: (optional) The overall total number of resources in the search
3238
+ :param int count: (optional) The overall total number of resources in the search
2789
3239
  result set.
2790
- :attr int resource_count: (optional) The number of resources returned in this
3240
+ :param int resource_count: (optional) The number of resources returned in this
2791
3241
  page of search results.
2792
- :attr str first: (optional) A URL for retrieving the first page of search
3242
+ :param str first: (optional) A URL for retrieving the first page of search
2793
3243
  results.
2794
- :attr str last: (optional) A URL for retrieving the last page of search results.
2795
- :attr str prev: (optional) A URL for retrieving the previous page of search
3244
+ :param str last: (optional) A URL for retrieving the last page of search
2796
3245
  results.
2797
- :attr str next: (optional) A URL for retrieving the next page of search results.
2798
- :attr List[CatalogEntry] resources: (optional) The resources (catalog entries)
3246
+ :param str prev: (optional) A URL for retrieving the previous page of search
3247
+ results.
3248
+ :param str next: (optional) A URL for retrieving the next page of search
3249
+ results.
3250
+ :param List[CatalogEntry] resources: (optional) The resources (catalog entries)
2799
3251
  contained in this page of search results.
2800
3252
  """
2801
3253
 
2802
3254
  def __init__(
2803
3255
  self,
2804
3256
  *,
2805
- offset: int = None,
2806
- limit: int = None,
2807
- count: int = None,
2808
- resource_count: int = None,
2809
- first: str = None,
2810
- last: str = None,
2811
- prev: str = None,
2812
- next: str = None,
2813
- resources: List['CatalogEntry'] = None,
3257
+ offset: Optional[int] = None,
3258
+ limit: Optional[int] = None,
3259
+ count: Optional[int] = None,
3260
+ resource_count: Optional[int] = None,
3261
+ first: Optional[str] = None,
3262
+ last: Optional[str] = None,
3263
+ prev: Optional[str] = None,
3264
+ next: Optional[str] = None,
3265
+ resources: Optional[List['CatalogEntry']] = None,
2814
3266
  ) -> None:
2815
3267
  """
2816
3268
  Initialize a EntrySearchResult object.
@@ -2848,24 +3300,24 @@ class EntrySearchResult:
2848
3300
  def from_dict(cls, _dict: Dict) -> 'EntrySearchResult':
2849
3301
  """Initialize a EntrySearchResult object from a json dictionary."""
2850
3302
  args = {}
2851
- if 'offset' in _dict:
2852
- args['offset'] = _dict.get('offset')
2853
- if 'limit' in _dict:
2854
- args['limit'] = _dict.get('limit')
2855
- if 'count' in _dict:
2856
- args['count'] = _dict.get('count')
2857
- if 'resource_count' in _dict:
2858
- args['resource_count'] = _dict.get('resource_count')
2859
- if 'first' in _dict:
2860
- args['first'] = _dict.get('first')
2861
- if 'last' in _dict:
2862
- args['last'] = _dict.get('last')
2863
- if 'prev' in _dict:
2864
- args['prev'] = _dict.get('prev')
2865
- if 'next' in _dict:
2866
- args['next'] = _dict.get('next')
2867
- if 'resources' in _dict:
2868
- args['resources'] = [CatalogEntry.from_dict(x) for x in _dict.get('resources')]
3303
+ if (offset := _dict.get('offset')) is not None:
3304
+ args['offset'] = offset
3305
+ if (limit := _dict.get('limit')) is not None:
3306
+ args['limit'] = limit
3307
+ if (count := _dict.get('count')) is not None:
3308
+ args['count'] = count
3309
+ if (resource_count := _dict.get('resource_count')) is not None:
3310
+ args['resource_count'] = resource_count
3311
+ if (first := _dict.get('first')) is not None:
3312
+ args['first'] = first
3313
+ if (last := _dict.get('last')) is not None:
3314
+ args['last'] = last
3315
+ if (prev := _dict.get('prev')) is not None:
3316
+ args['prev'] = prev
3317
+ if (next := _dict.get('next')) is not None:
3318
+ args['next'] = next
3319
+ if (resources := _dict.get('resources')) is not None:
3320
+ args['resources'] = [CatalogEntry.from_dict(v) for v in resources]
2869
3321
  return cls(**args)
2870
3322
 
2871
3323
  @classmethod
@@ -2893,7 +3345,13 @@ class EntrySearchResult:
2893
3345
  if hasattr(self, 'next') and self.next is not None:
2894
3346
  _dict['next'] = self.next
2895
3347
  if hasattr(self, 'resources') and self.resources is not None:
2896
- _dict['resources'] = [x.to_dict() for x in self.resources]
3348
+ resources_list = []
3349
+ for v in self.resources:
3350
+ if isinstance(v, dict):
3351
+ resources_list.append(v)
3352
+ else:
3353
+ resources_list.append(v.to_dict())
3354
+ _dict['resources'] = resources_list
2897
3355
  return _dict
2898
3356
 
2899
3357
  def _to_dict(self):
@@ -2919,14 +3377,19 @@ class Image:
2919
3377
  """
2920
3378
  Image annotation for this catalog entry. The image is a URL.
2921
3379
 
2922
- :attr str image: URL for the large, default image.
2923
- :attr str small_image: (optional) URL for a small image.
2924
- :attr str medium_image: (optional) URL for a medium image.
2925
- :attr str feature_image: (optional) URL for a featured image.
3380
+ :param str image: URL for the large, default image.
3381
+ :param str small_image: (optional) URL for a small image.
3382
+ :param str medium_image: (optional) URL for a medium image.
3383
+ :param str feature_image: (optional) URL for a featured image.
2926
3384
  """
2927
3385
 
2928
3386
  def __init__(
2929
- self, image: str, *, small_image: str = None, medium_image: str = None, feature_image: str = None
3387
+ self,
3388
+ image: str,
3389
+ *,
3390
+ small_image: Optional[str] = None,
3391
+ medium_image: Optional[str] = None,
3392
+ feature_image: Optional[str] = None,
2930
3393
  ) -> None:
2931
3394
  """
2932
3395
  Initialize a Image object.
@@ -2945,16 +3408,16 @@ class Image:
2945
3408
  def from_dict(cls, _dict: Dict) -> 'Image':
2946
3409
  """Initialize a Image object from a json dictionary."""
2947
3410
  args = {}
2948
- if 'image' in _dict:
2949
- args['image'] = _dict.get('image')
3411
+ if (image := _dict.get('image')) is not None:
3412
+ args['image'] = image
2950
3413
  else:
2951
3414
  raise ValueError('Required property \'image\' not present in Image JSON')
2952
- if 'small_image' in _dict:
2953
- args['small_image'] = _dict.get('small_image')
2954
- if 'medium_image' in _dict:
2955
- args['medium_image'] = _dict.get('medium_image')
2956
- if 'feature_image' in _dict:
2957
- args['feature_image'] = _dict.get('feature_image')
3415
+ if (small_image := _dict.get('small_image')) is not None:
3416
+ args['small_image'] = small_image
3417
+ if (medium_image := _dict.get('medium_image')) is not None:
3418
+ args['medium_image'] = medium_image
3419
+ if (feature_image := _dict.get('feature_image')) is not None:
3420
+ args['feature_image'] = feature_image
2958
3421
  return cls(**args)
2959
3422
 
2960
3423
  @classmethod
@@ -2998,35 +3461,35 @@ class Message:
2998
3461
  """
2999
3462
  log object describing who did what.
3000
3463
 
3001
- :attr str id: (optional) id of catalog entry.
3002
- :attr Visibility effective: (optional) Information related to the visibility of
3464
+ :param str id: (optional) id of catalog entry.
3465
+ :param Visibility effective: (optional) Information related to the visibility of
3003
3466
  a catalog entry.
3004
- :attr datetime time: (optional) time of action.
3005
- :attr str who_id: (optional) user ID of person who did action.
3006
- :attr str who_name: (optional) name of person who did action.
3007
- :attr str who_email: (optional) user email of person who did action.
3008
- :attr str instance: (optional) Global catalog instance where this occured.
3009
- :attr str gid: (optional) transaction id associatd with action.
3010
- :attr str type: (optional) type of action taken.
3011
- :attr str message: (optional) message describing action.
3012
- :attr dict data: (optional) An object containing details on changes made to
3467
+ :param datetime time: (optional) time of action.
3468
+ :param str who_id: (optional) user ID of person who did action.
3469
+ :param str who_name: (optional) name of person who did action.
3470
+ :param str who_email: (optional) user email of person who did action.
3471
+ :param str instance: (optional) Global catalog instance where this occured.
3472
+ :param str gid: (optional) transaction id associatd with action.
3473
+ :param str type: (optional) type of action taken.
3474
+ :param str message: (optional) message describing action.
3475
+ :param dict data: (optional) An object containing details on changes made to
3013
3476
  object data.
3014
3477
  """
3015
3478
 
3016
3479
  def __init__(
3017
3480
  self,
3018
3481
  *,
3019
- id: str = None,
3020
- effective: 'Visibility' = None,
3021
- time: datetime = None,
3022
- who_id: str = None,
3023
- who_name: str = None,
3024
- who_email: str = None,
3025
- instance: str = None,
3026
- gid: str = None,
3027
- type: str = None,
3028
- message: str = None,
3029
- data: dict = None,
3482
+ id: Optional[str] = None,
3483
+ effective: Optional['Visibility'] = None,
3484
+ time: Optional[datetime] = None,
3485
+ who_id: Optional[str] = None,
3486
+ who_name: Optional[str] = None,
3487
+ who_email: Optional[str] = None,
3488
+ instance: Optional[str] = None,
3489
+ gid: Optional[str] = None,
3490
+ type: Optional[str] = None,
3491
+ message: Optional[str] = None,
3492
+ data: Optional[dict] = None,
3030
3493
  ) -> None:
3031
3494
  """
3032
3495
  Initialize a Message object.
@@ -3061,28 +3524,28 @@ class Message:
3061
3524
  def from_dict(cls, _dict: Dict) -> 'Message':
3062
3525
  """Initialize a Message object from a json dictionary."""
3063
3526
  args = {}
3064
- if 'id' in _dict:
3065
- args['id'] = _dict.get('id')
3066
- if 'effective' in _dict:
3067
- args['effective'] = Visibility.from_dict(_dict.get('effective'))
3068
- if 'time' in _dict:
3069
- args['time'] = string_to_datetime(_dict.get('time'))
3070
- if 'who_id' in _dict:
3071
- args['who_id'] = _dict.get('who_id')
3072
- if 'who_name' in _dict:
3073
- args['who_name'] = _dict.get('who_name')
3074
- if 'who_email' in _dict:
3075
- args['who_email'] = _dict.get('who_email')
3076
- if 'instance' in _dict:
3077
- args['instance'] = _dict.get('instance')
3078
- if 'gid' in _dict:
3079
- args['gid'] = _dict.get('gid')
3080
- if 'type' in _dict:
3081
- args['type'] = _dict.get('type')
3082
- if 'message' in _dict:
3083
- args['message'] = _dict.get('message')
3084
- if 'data' in _dict:
3085
- args['data'] = _dict.get('data')
3527
+ if (id := _dict.get('id')) is not None:
3528
+ args['id'] = id
3529
+ if (effective := _dict.get('effective')) is not None:
3530
+ args['effective'] = Visibility.from_dict(effective)
3531
+ if (time := _dict.get('time')) is not None:
3532
+ args['time'] = string_to_datetime(time)
3533
+ if (who_id := _dict.get('who_id')) is not None:
3534
+ args['who_id'] = who_id
3535
+ if (who_name := _dict.get('who_name')) is not None:
3536
+ args['who_name'] = who_name
3537
+ if (who_email := _dict.get('who_email')) is not None:
3538
+ args['who_email'] = who_email
3539
+ if (instance := _dict.get('instance')) is not None:
3540
+ args['instance'] = instance
3541
+ if (gid := _dict.get('gid')) is not None:
3542
+ args['gid'] = gid
3543
+ if (type := _dict.get('type')) is not None:
3544
+ args['type'] = type
3545
+ if (message := _dict.get('message')) is not None:
3546
+ args['message'] = message
3547
+ if (data := _dict.get('data')) is not None:
3548
+ args['data'] = data
3086
3549
  return cls(**args)
3087
3550
 
3088
3551
  @classmethod
@@ -3096,7 +3559,10 @@ class Message:
3096
3559
  if hasattr(self, 'id') and self.id is not None:
3097
3560
  _dict['id'] = self.id
3098
3561
  if hasattr(self, 'effective') and self.effective is not None:
3099
- _dict['effective'] = self.effective.to_dict()
3562
+ if isinstance(self.effective, dict):
3563
+ _dict['effective'] = self.effective
3564
+ else:
3565
+ _dict['effective'] = self.effective.to_dict()
3100
3566
  if hasattr(self, 'time') and self.time is not None:
3101
3567
  _dict['time'] = datetime_to_string(self.time)
3102
3568
  if hasattr(self, 'who_id') and self.who_id is not None:
@@ -3140,38 +3606,38 @@ class Metrics:
3140
3606
  """
3141
3607
  Plan-specific cost metrics information.
3142
3608
 
3143
- :attr str part_ref: (optional) The part reference.
3144
- :attr str metric_id: (optional) The metric ID or part number.
3145
- :attr str tier_model: (optional) The tier model.
3146
- :attr str charge_unit: (optional) The unit to charge.
3147
- :attr str charge_unit_name: (optional) The charge unit name.
3148
- :attr str charge_unit_quantity: (optional) The charge unit quantity.
3149
- :attr str resource_display_name: (optional) Display name of the resource.
3150
- :attr str charge_unit_display_name: (optional) Display name of the charge unit.
3151
- :attr int usage_cap_qty: (optional) Usage limit for the metric.
3152
- :attr int display_cap: (optional) Display capacity.
3153
- :attr datetime effective_from: (optional) Effective from time.
3154
- :attr datetime effective_until: (optional) Effective until time.
3155
- :attr List[Amount] amounts: (optional) The pricing per metric by country and
3609
+ :param str part_ref: (optional) The part reference.
3610
+ :param str metric_id: (optional) The metric ID or part number.
3611
+ :param str tier_model: (optional) The tier model.
3612
+ :param str charge_unit: (optional) The unit to charge.
3613
+ :param str charge_unit_name: (optional) The charge unit name.
3614
+ :param int charge_unit_quantity: (optional) The charge unit quantity.
3615
+ :param str resource_display_name: (optional) Display name of the resource.
3616
+ :param str charge_unit_display_name: (optional) Display name of the charge unit.
3617
+ :param int usage_cap_qty: (optional) Usage limit for the metric.
3618
+ :param int display_cap: (optional) Display capacity.
3619
+ :param datetime effective_from: (optional) Effective from time.
3620
+ :param datetime effective_until: (optional) Effective until time.
3621
+ :param List[Amount] amounts: (optional) The pricing per metric by country and
3156
3622
  currency.
3157
3623
  """
3158
3624
 
3159
3625
  def __init__(
3160
3626
  self,
3161
3627
  *,
3162
- part_ref: str = None,
3163
- metric_id: str = None,
3164
- tier_model: str = None,
3165
- charge_unit: str = None,
3166
- charge_unit_name: str = None,
3167
- charge_unit_quantity: str = None,
3168
- resource_display_name: str = None,
3169
- charge_unit_display_name: str = None,
3170
- usage_cap_qty: int = None,
3171
- display_cap: int = None,
3172
- effective_from: datetime = None,
3173
- effective_until: datetime = None,
3174
- amounts: List['Amount'] = None,
3628
+ part_ref: Optional[str] = None,
3629
+ metric_id: Optional[str] = None,
3630
+ tier_model: Optional[str] = None,
3631
+ charge_unit: Optional[str] = None,
3632
+ charge_unit_name: Optional[str] = None,
3633
+ charge_unit_quantity: Optional[int] = None,
3634
+ resource_display_name: Optional[str] = None,
3635
+ charge_unit_display_name: Optional[str] = None,
3636
+ usage_cap_qty: Optional[int] = None,
3637
+ display_cap: Optional[int] = None,
3638
+ effective_from: Optional[datetime] = None,
3639
+ effective_until: Optional[datetime] = None,
3640
+ amounts: Optional[List['Amount']] = None,
3175
3641
  ) -> None:
3176
3642
  """
3177
3643
  Initialize a Metrics object.
@@ -3181,7 +3647,7 @@ class Metrics:
3181
3647
  :param str tier_model: (optional) The tier model.
3182
3648
  :param str charge_unit: (optional) The unit to charge.
3183
3649
  :param str charge_unit_name: (optional) The charge unit name.
3184
- :param str charge_unit_quantity: (optional) The charge unit quantity.
3650
+ :param int charge_unit_quantity: (optional) The charge unit quantity.
3185
3651
  :param str resource_display_name: (optional) Display name of the resource.
3186
3652
  :param str charge_unit_display_name: (optional) Display name of the charge
3187
3653
  unit.
@@ -3210,32 +3676,32 @@ class Metrics:
3210
3676
  def from_dict(cls, _dict: Dict) -> 'Metrics':
3211
3677
  """Initialize a Metrics object from a json dictionary."""
3212
3678
  args = {}
3213
- if 'part_ref' in _dict:
3214
- args['part_ref'] = _dict.get('part_ref')
3215
- if 'metric_id' in _dict:
3216
- args['metric_id'] = _dict.get('metric_id')
3217
- if 'tier_model' in _dict:
3218
- args['tier_model'] = _dict.get('tier_model')
3219
- if 'charge_unit' in _dict:
3220
- args['charge_unit'] = _dict.get('charge_unit')
3221
- if 'charge_unit_name' in _dict:
3222
- args['charge_unit_name'] = _dict.get('charge_unit_name')
3223
- if 'charge_unit_quantity' in _dict:
3224
- args['charge_unit_quantity'] = _dict.get('charge_unit_quantity')
3225
- if 'resource_display_name' in _dict:
3226
- args['resource_display_name'] = _dict.get('resource_display_name')
3227
- if 'charge_unit_display_name' in _dict:
3228
- args['charge_unit_display_name'] = _dict.get('charge_unit_display_name')
3229
- if 'usage_cap_qty' in _dict:
3230
- args['usage_cap_qty'] = _dict.get('usage_cap_qty')
3231
- if 'display_cap' in _dict:
3232
- args['display_cap'] = _dict.get('display_cap')
3233
- if 'effective_from' in _dict:
3234
- args['effective_from'] = string_to_datetime(_dict.get('effective_from'))
3235
- if 'effective_until' in _dict:
3236
- args['effective_until'] = string_to_datetime(_dict.get('effective_until'))
3237
- if 'amounts' in _dict:
3238
- args['amounts'] = [Amount.from_dict(x) for x in _dict.get('amounts')]
3679
+ if (part_ref := _dict.get('part_ref')) is not None:
3680
+ args['part_ref'] = part_ref
3681
+ if (metric_id := _dict.get('metric_id')) is not None:
3682
+ args['metric_id'] = metric_id
3683
+ if (tier_model := _dict.get('tier_model')) is not None:
3684
+ args['tier_model'] = tier_model
3685
+ if (charge_unit := _dict.get('charge_unit')) is not None:
3686
+ args['charge_unit'] = charge_unit
3687
+ if (charge_unit_name := _dict.get('charge_unit_name')) is not None:
3688
+ args['charge_unit_name'] = charge_unit_name
3689
+ if (charge_unit_quantity := _dict.get('charge_unit_quantity')) is not None:
3690
+ args['charge_unit_quantity'] = charge_unit_quantity
3691
+ if (resource_display_name := _dict.get('resource_display_name')) is not None:
3692
+ args['resource_display_name'] = resource_display_name
3693
+ if (charge_unit_display_name := _dict.get('charge_unit_display_name')) is not None:
3694
+ args['charge_unit_display_name'] = charge_unit_display_name
3695
+ if (usage_cap_qty := _dict.get('usage_cap_qty')) is not None:
3696
+ args['usage_cap_qty'] = usage_cap_qty
3697
+ if (display_cap := _dict.get('display_cap')) is not None:
3698
+ args['display_cap'] = display_cap
3699
+ if (effective_from := _dict.get('effective_from')) is not None:
3700
+ args['effective_from'] = string_to_datetime(effective_from)
3701
+ if (effective_until := _dict.get('effective_until')) is not None:
3702
+ args['effective_until'] = string_to_datetime(effective_until)
3703
+ if (amounts := _dict.get('amounts')) is not None:
3704
+ args['amounts'] = [Amount.from_dict(v) for v in amounts]
3239
3705
  return cls(**args)
3240
3706
 
3241
3707
  @classmethod
@@ -3271,7 +3737,13 @@ class Metrics:
3271
3737
  if hasattr(self, 'effective_until') and self.effective_until is not None:
3272
3738
  _dict['effective_until'] = datetime_to_string(self.effective_until)
3273
3739
  if hasattr(self, 'amounts') and self.amounts is not None:
3274
- _dict['amounts'] = [x.to_dict() for x in self.amounts]
3740
+ amounts_list = []
3741
+ for v in self.amounts:
3742
+ if isinstance(v, dict):
3743
+ amounts_list.append(v)
3744
+ else:
3745
+ amounts_list.append(v.to_dict())
3746
+ _dict['amounts'] = amounts_list
3275
3747
  return _dict
3276
3748
 
3277
3749
  def _to_dict(self):
@@ -3297,42 +3769,43 @@ class ObjectMetadataSet:
3297
3769
  """
3298
3770
  Model used to describe metadata object that can be set.
3299
3771
 
3300
- :attr bool rc_compatible: (optional) Boolean value that describes whether the
3772
+ :param bool rc_compatible: (optional) Boolean value that describes whether the
3301
3773
  service is compatible with the Resource Controller.
3302
- :attr CFMetaData service: (optional) Service-related metadata.
3303
- :attr PlanMetaData plan: (optional) Plan-related metadata.
3304
- :attr AliasMetaData alias: (optional) Alias-related metadata.
3305
- :attr TemplateMetaData template: (optional) Template-related metadata.
3306
- :attr UIMetaData ui: (optional) Information related to the UI presentation
3774
+ :param CFMetaData service: (optional) Service-related metadata.
3775
+ :param PlanMetaData plan: (optional) Plan-related metadata.
3776
+ :param AliasMetaData alias: (optional) Alias-related metadata.
3777
+ :param TemplateMetaData template: (optional) Template-related metadata.
3778
+ :param UIMetaData ui: (optional) Information related to the UI presentation
3307
3779
  associated with a catalog entry.
3308
- :attr List[str] compliance: (optional) Compliance information for HIPAA and PCI.
3309
- :attr SLAMetaData sla: (optional) Service Level Agreement related metadata.
3310
- :attr Callbacks callbacks: (optional) Callback-related information associated
3780
+ :param List[str] compliance: (optional) Compliance information for HIPAA and
3781
+ PCI.
3782
+ :param SLAMetaData sla: (optional) Service Level Agreement related metadata.
3783
+ :param Callbacks callbacks: (optional) Callback-related information associated
3311
3784
  with a catalog entry.
3312
- :attr str original_name: (optional) The original name of the object.
3313
- :attr str version: (optional) Optional version of the object.
3314
- :attr dict other: (optional) Additional information.
3315
- :attr PricingSet pricing: (optional) Pricing-related information.
3316
- :attr DeploymentBase deployment: (optional) Deployment-related metadata.
3785
+ :param str original_name: (optional) The original name of the object.
3786
+ :param str version: (optional) Optional version of the object.
3787
+ :param dict other: (optional) Additional information.
3788
+ :param PricingSet pricing: (optional) Pricing-related information.
3789
+ :param DeploymentBase deployment: (optional) Deployment-related metadata.
3317
3790
  """
3318
3791
 
3319
3792
  def __init__(
3320
3793
  self,
3321
3794
  *,
3322
- rc_compatible: bool = None,
3323
- service: 'CFMetaData' = None,
3324
- plan: 'PlanMetaData' = None,
3325
- alias: 'AliasMetaData' = None,
3326
- template: 'TemplateMetaData' = None,
3327
- ui: 'UIMetaData' = None,
3328
- compliance: List[str] = None,
3329
- sla: 'SLAMetaData' = None,
3330
- callbacks: 'Callbacks' = None,
3331
- original_name: str = None,
3332
- version: str = None,
3333
- other: dict = None,
3334
- pricing: 'PricingSet' = None,
3335
- deployment: 'DeploymentBase' = None,
3795
+ rc_compatible: Optional[bool] = None,
3796
+ service: Optional['CFMetaData'] = None,
3797
+ plan: Optional['PlanMetaData'] = None,
3798
+ alias: Optional['AliasMetaData'] = None,
3799
+ template: Optional['TemplateMetaData'] = None,
3800
+ ui: Optional['UIMetaData'] = None,
3801
+ compliance: Optional[List[str]] = None,
3802
+ sla: Optional['SLAMetaData'] = None,
3803
+ callbacks: Optional['Callbacks'] = None,
3804
+ original_name: Optional[str] = None,
3805
+ version: Optional[str] = None,
3806
+ other: Optional[dict] = None,
3807
+ pricing: Optional['PricingSet'] = None,
3808
+ deployment: Optional['DeploymentBase'] = None,
3336
3809
  ) -> None:
3337
3810
  """
3338
3811
  Initialize a ObjectMetadataSet object.
@@ -3376,34 +3849,34 @@ class ObjectMetadataSet:
3376
3849
  def from_dict(cls, _dict: Dict) -> 'ObjectMetadataSet':
3377
3850
  """Initialize a ObjectMetadataSet object from a json dictionary."""
3378
3851
  args = {}
3379
- if 'rc_compatible' in _dict:
3380
- args['rc_compatible'] = _dict.get('rc_compatible')
3381
- if 'service' in _dict:
3382
- args['service'] = CFMetaData.from_dict(_dict.get('service'))
3383
- if 'plan' in _dict:
3384
- args['plan'] = PlanMetaData.from_dict(_dict.get('plan'))
3385
- if 'alias' in _dict:
3386
- args['alias'] = AliasMetaData.from_dict(_dict.get('alias'))
3387
- if 'template' in _dict:
3388
- args['template'] = TemplateMetaData.from_dict(_dict.get('template'))
3389
- if 'ui' in _dict:
3390
- args['ui'] = UIMetaData.from_dict(_dict.get('ui'))
3391
- if 'compliance' in _dict:
3392
- args['compliance'] = _dict.get('compliance')
3393
- if 'sla' in _dict:
3394
- args['sla'] = SLAMetaData.from_dict(_dict.get('sla'))
3395
- if 'callbacks' in _dict:
3396
- args['callbacks'] = Callbacks.from_dict(_dict.get('callbacks'))
3397
- if 'original_name' in _dict:
3398
- args['original_name'] = _dict.get('original_name')
3399
- if 'version' in _dict:
3400
- args['version'] = _dict.get('version')
3401
- if 'other' in _dict:
3402
- args['other'] = _dict.get('other')
3403
- if 'pricing' in _dict:
3404
- args['pricing'] = PricingSet.from_dict(_dict.get('pricing'))
3405
- if 'deployment' in _dict:
3406
- args['deployment'] = DeploymentBase.from_dict(_dict.get('deployment'))
3852
+ if (rc_compatible := _dict.get('rc_compatible')) is not None:
3853
+ args['rc_compatible'] = rc_compatible
3854
+ if (service := _dict.get('service')) is not None:
3855
+ args['service'] = CFMetaData.from_dict(service)
3856
+ if (plan := _dict.get('plan')) is not None:
3857
+ args['plan'] = PlanMetaData.from_dict(plan)
3858
+ if (alias := _dict.get('alias')) is not None:
3859
+ args['alias'] = AliasMetaData.from_dict(alias)
3860
+ if (template := _dict.get('template')) is not None:
3861
+ args['template'] = TemplateMetaData.from_dict(template)
3862
+ if (ui := _dict.get('ui')) is not None:
3863
+ args['ui'] = UIMetaData.from_dict(ui)
3864
+ if (compliance := _dict.get('compliance')) is not None:
3865
+ args['compliance'] = compliance
3866
+ if (sla := _dict.get('sla')) is not None:
3867
+ args['sla'] = SLAMetaData.from_dict(sla)
3868
+ if (callbacks := _dict.get('callbacks')) is not None:
3869
+ args['callbacks'] = Callbacks.from_dict(callbacks)
3870
+ if (original_name := _dict.get('original_name')) is not None:
3871
+ args['original_name'] = original_name
3872
+ if (version := _dict.get('version')) is not None:
3873
+ args['version'] = version
3874
+ if (other := _dict.get('other')) is not None:
3875
+ args['other'] = other
3876
+ if (pricing := _dict.get('pricing')) is not None:
3877
+ args['pricing'] = PricingSet.from_dict(pricing)
3878
+ if (deployment := _dict.get('deployment')) is not None:
3879
+ args['deployment'] = DeploymentBase.from_dict(deployment)
3407
3880
  return cls(**args)
3408
3881
 
3409
3882
  @classmethod
@@ -3417,21 +3890,42 @@ class ObjectMetadataSet:
3417
3890
  if hasattr(self, 'rc_compatible') and self.rc_compatible is not None:
3418
3891
  _dict['rc_compatible'] = self.rc_compatible
3419
3892
  if hasattr(self, 'service') and self.service is not None:
3420
- _dict['service'] = self.service.to_dict()
3893
+ if isinstance(self.service, dict):
3894
+ _dict['service'] = self.service
3895
+ else:
3896
+ _dict['service'] = self.service.to_dict()
3421
3897
  if hasattr(self, 'plan') and self.plan is not None:
3422
- _dict['plan'] = self.plan.to_dict()
3898
+ if isinstance(self.plan, dict):
3899
+ _dict['plan'] = self.plan
3900
+ else:
3901
+ _dict['plan'] = self.plan.to_dict()
3423
3902
  if hasattr(self, 'alias') and self.alias is not None:
3424
- _dict['alias'] = self.alias.to_dict()
3903
+ if isinstance(self.alias, dict):
3904
+ _dict['alias'] = self.alias
3905
+ else:
3906
+ _dict['alias'] = self.alias.to_dict()
3425
3907
  if hasattr(self, 'template') and self.template is not None:
3426
- _dict['template'] = self.template.to_dict()
3908
+ if isinstance(self.template, dict):
3909
+ _dict['template'] = self.template
3910
+ else:
3911
+ _dict['template'] = self.template.to_dict()
3427
3912
  if hasattr(self, 'ui') and self.ui is not None:
3428
- _dict['ui'] = self.ui.to_dict()
3913
+ if isinstance(self.ui, dict):
3914
+ _dict['ui'] = self.ui
3915
+ else:
3916
+ _dict['ui'] = self.ui.to_dict()
3429
3917
  if hasattr(self, 'compliance') and self.compliance is not None:
3430
3918
  _dict['compliance'] = self.compliance
3431
3919
  if hasattr(self, 'sla') and self.sla is not None:
3432
- _dict['sla'] = self.sla.to_dict()
3920
+ if isinstance(self.sla, dict):
3921
+ _dict['sla'] = self.sla
3922
+ else:
3923
+ _dict['sla'] = self.sla.to_dict()
3433
3924
  if hasattr(self, 'callbacks') and self.callbacks is not None:
3434
- _dict['callbacks'] = self.callbacks.to_dict()
3925
+ if isinstance(self.callbacks, dict):
3926
+ _dict['callbacks'] = self.callbacks
3927
+ else:
3928
+ _dict['callbacks'] = self.callbacks.to_dict()
3435
3929
  if hasattr(self, 'original_name') and self.original_name is not None:
3436
3930
  _dict['original_name'] = self.original_name
3437
3931
  if hasattr(self, 'version') and self.version is not None:
@@ -3439,9 +3933,15 @@ class ObjectMetadataSet:
3439
3933
  if hasattr(self, 'other') and self.other is not None:
3440
3934
  _dict['other'] = self.other
3441
3935
  if hasattr(self, 'pricing') and self.pricing is not None:
3442
- _dict['pricing'] = self.pricing.to_dict()
3936
+ if isinstance(self.pricing, dict):
3937
+ _dict['pricing'] = self.pricing
3938
+ else:
3939
+ _dict['pricing'] = self.pricing.to_dict()
3443
3940
  if hasattr(self, 'deployment') and self.deployment is not None:
3444
- _dict['deployment'] = self.deployment.to_dict()
3941
+ if isinstance(self.deployment, dict):
3942
+ _dict['deployment'] = self.deployment
3943
+ else:
3944
+ _dict['deployment'] = self.deployment.to_dict()
3445
3945
  return _dict
3446
3946
 
3447
3947
  def _to_dict(self):
@@ -3467,15 +3967,20 @@ class Overview:
3467
3967
  """
3468
3968
  Overview is nested in the top level. The key value pair is `[_language_]overview_ui`.
3469
3969
 
3470
- :attr str display_name: The translated display name.
3471
- :attr str long_description: The translated long description.
3472
- :attr str description: The translated description.
3473
- :attr str featured_description: (optional) The translated description that will
3970
+ :param str display_name: The translated display name.
3971
+ :param str long_description: The translated long description.
3972
+ :param str description: The translated description.
3973
+ :param str featured_description: (optional) The translated description that will
3474
3974
  be featured.
3475
3975
  """
3476
3976
 
3477
3977
  def __init__(
3478
- self, display_name: str, long_description: str, description: str, *, featured_description: str = None
3978
+ self,
3979
+ display_name: str,
3980
+ long_description: str,
3981
+ description: str,
3982
+ *,
3983
+ featured_description: Optional[str] = None,
3479
3984
  ) -> None:
3480
3985
  """
3481
3986
  Initialize a Overview object.
@@ -3495,20 +4000,20 @@ class Overview:
3495
4000
  def from_dict(cls, _dict: Dict) -> 'Overview':
3496
4001
  """Initialize a Overview object from a json dictionary."""
3497
4002
  args = {}
3498
- if 'display_name' in _dict:
3499
- args['display_name'] = _dict.get('display_name')
4003
+ if (display_name := _dict.get('display_name')) is not None:
4004
+ args['display_name'] = display_name
3500
4005
  else:
3501
4006
  raise ValueError('Required property \'display_name\' not present in Overview JSON')
3502
- if 'long_description' in _dict:
3503
- args['long_description'] = _dict.get('long_description')
4007
+ if (long_description := _dict.get('long_description')) is not None:
4008
+ args['long_description'] = long_description
3504
4009
  else:
3505
4010
  raise ValueError('Required property \'long_description\' not present in Overview JSON')
3506
- if 'description' in _dict:
3507
- args['description'] = _dict.get('description')
4011
+ if (description := _dict.get('description')) is not None:
4012
+ args['description'] = description
3508
4013
  else:
3509
4014
  raise ValueError('Required property \'description\' not present in Overview JSON')
3510
- if 'featured_description' in _dict:
3511
- args['featured_description'] = _dict.get('featured_description')
4015
+ if (featured_description := _dict.get('featured_description')) is not None:
4016
+ args['featured_description'] = featured_description
3512
4017
  return cls(**args)
3513
4018
 
3514
4019
  @classmethod
@@ -3552,21 +4057,21 @@ class PlanMetaData:
3552
4057
  """
3553
4058
  Plan-related metadata.
3554
4059
 
3555
- :attr bool bindable: (optional) Boolean value that describes whether the service
3556
- can be bound to an application.
3557
- :attr bool reservable: (optional) Boolean value that describes whether the
4060
+ :param bool bindable: (optional) Boolean value that describes whether the
4061
+ service can be bound to an application.
4062
+ :param bool reservable: (optional) Boolean value that describes whether the
3558
4063
  service can be reserved.
3559
- :attr bool allow_internal_users: (optional) Boolean value that describes whether
3560
- the service can be used internally.
3561
- :attr bool async_provisioning_supported: (optional) Boolean value that describes
3562
- whether the service can be provisioned asynchronously.
3563
- :attr bool async_unprovisioning_supported: (optional) Boolean value that
4064
+ :param bool allow_internal_users: (optional) Boolean value that describes
4065
+ whether the service can be used internally.
4066
+ :param bool async_provisioning_supported: (optional) Boolean value that
4067
+ describes whether the service can be provisioned asynchronously.
4068
+ :param bool async_unprovisioning_supported: (optional) Boolean value that
3564
4069
  describes whether the service can be unprovisioned asynchronously.
3565
- :attr int test_check_interval: (optional) Test check interval.
3566
- :attr str single_scope_instance: (optional) Single scope instance.
3567
- :attr bool service_check_enabled: (optional) Boolean value that describes
4070
+ :param int test_check_interval: (optional) Test check interval.
4071
+ :param str single_scope_instance: (optional) Single scope instance.
4072
+ :param bool service_check_enabled: (optional) Boolean value that describes
3568
4073
  whether the service check is enabled.
3569
- :attr dict cf_guid: (optional) If the field is imported from Cloud Foundry, the
4074
+ :param dict cf_guid: (optional) If the field is imported from Cloud Foundry, the
3570
4075
  Cloud Foundry region's GUID. This is a required field. For example,
3571
4076
  `us-south=123`.
3572
4077
  """
@@ -3574,15 +4079,15 @@ class PlanMetaData:
3574
4079
  def __init__(
3575
4080
  self,
3576
4081
  *,
3577
- bindable: bool = None,
3578
- reservable: bool = None,
3579
- allow_internal_users: bool = None,
3580
- async_provisioning_supported: bool = None,
3581
- async_unprovisioning_supported: bool = None,
3582
- test_check_interval: int = None,
3583
- single_scope_instance: str = None,
3584
- service_check_enabled: bool = None,
3585
- cf_guid: dict = None,
4082
+ bindable: Optional[bool] = None,
4083
+ reservable: Optional[bool] = None,
4084
+ allow_internal_users: Optional[bool] = None,
4085
+ async_provisioning_supported: Optional[bool] = None,
4086
+ async_unprovisioning_supported: Optional[bool] = None,
4087
+ test_check_interval: Optional[int] = None,
4088
+ single_scope_instance: Optional[str] = None,
4089
+ service_check_enabled: Optional[bool] = None,
4090
+ cf_guid: Optional[dict] = None,
3586
4091
  ) -> None:
3587
4092
  """
3588
4093
  Initialize a PlanMetaData object.
@@ -3619,24 +4124,24 @@ class PlanMetaData:
3619
4124
  def from_dict(cls, _dict: Dict) -> 'PlanMetaData':
3620
4125
  """Initialize a PlanMetaData object from a json dictionary."""
3621
4126
  args = {}
3622
- if 'bindable' in _dict:
3623
- args['bindable'] = _dict.get('bindable')
3624
- if 'reservable' in _dict:
3625
- args['reservable'] = _dict.get('reservable')
3626
- if 'allow_internal_users' in _dict:
3627
- args['allow_internal_users'] = _dict.get('allow_internal_users')
3628
- if 'async_provisioning_supported' in _dict:
3629
- args['async_provisioning_supported'] = _dict.get('async_provisioning_supported')
3630
- if 'async_unprovisioning_supported' in _dict:
3631
- args['async_unprovisioning_supported'] = _dict.get('async_unprovisioning_supported')
3632
- if 'test_check_interval' in _dict:
3633
- args['test_check_interval'] = _dict.get('test_check_interval')
3634
- if 'single_scope_instance' in _dict:
3635
- args['single_scope_instance'] = _dict.get('single_scope_instance')
3636
- if 'service_check_enabled' in _dict:
3637
- args['service_check_enabled'] = _dict.get('service_check_enabled')
3638
- if 'cf_guid' in _dict:
3639
- args['cf_guid'] = _dict.get('cf_guid')
4127
+ if (bindable := _dict.get('bindable')) is not None:
4128
+ args['bindable'] = bindable
4129
+ if (reservable := _dict.get('reservable')) is not None:
4130
+ args['reservable'] = reservable
4131
+ if (allow_internal_users := _dict.get('allow_internal_users')) is not None:
4132
+ args['allow_internal_users'] = allow_internal_users
4133
+ if (async_provisioning_supported := _dict.get('async_provisioning_supported')) is not None:
4134
+ args['async_provisioning_supported'] = async_provisioning_supported
4135
+ if (async_unprovisioning_supported := _dict.get('async_unprovisioning_supported')) is not None:
4136
+ args['async_unprovisioning_supported'] = async_unprovisioning_supported
4137
+ if (test_check_interval := _dict.get('test_check_interval')) is not None:
4138
+ args['test_check_interval'] = test_check_interval
4139
+ if (single_scope_instance := _dict.get('single_scope_instance')) is not None:
4140
+ args['single_scope_instance'] = single_scope_instance
4141
+ if (service_check_enabled := _dict.get('service_check_enabled')) is not None:
4142
+ args['service_check_enabled'] = service_check_enabled
4143
+ if (cf_guid := _dict.get('cf_guid')) is not None:
4144
+ args['cf_guid'] = cf_guid
3640
4145
  return cls(**args)
3641
4146
 
3642
4147
  @classmethod
@@ -3690,11 +4195,16 @@ class Price:
3690
4195
  """
3691
4196
  Pricing-related information.
3692
4197
 
3693
- :attr int quantity_tier: (optional) Pricing tier.
3694
- :attr float price: (optional) Price in the selected currency.
4198
+ :param int quantity_tier: (optional) Pricing tier.
4199
+ :param float price: (optional) Price in the selected currency.
3695
4200
  """
3696
4201
 
3697
- def __init__(self, *, quantity_tier: int = None, price: float = None) -> None:
4202
+ def __init__(
4203
+ self,
4204
+ *,
4205
+ quantity_tier: Optional[int] = None,
4206
+ price: Optional[float] = None,
4207
+ ) -> None:
3698
4208
  """
3699
4209
  Initialize a Price object.
3700
4210
 
@@ -3708,10 +4218,10 @@ class Price:
3708
4218
  def from_dict(cls, _dict: Dict) -> 'Price':
3709
4219
  """Initialize a Price object from a json dictionary."""
3710
4220
  args = {}
3711
- if 'quantity_tier' in _dict:
3712
- args['quantity_tier'] = _dict.get('quantity_tier')
3713
- if 'Price' in _dict:
3714
- args['price'] = _dict.get('Price')
4221
+ if (quantity_tier := _dict.get('quantity_tier')) is not None:
4222
+ args['quantity_tier'] = quantity_tier
4223
+ if (price := _dict.get('price')) is not None:
4224
+ args['price'] = price
3715
4225
  return cls(**args)
3716
4226
 
3717
4227
  @classmethod
@@ -3725,7 +4235,7 @@ class Price:
3725
4235
  if hasattr(self, 'quantity_tier') and self.quantity_tier is not None:
3726
4236
  _dict['quantity_tier'] = self.quantity_tier
3727
4237
  if hasattr(self, 'price') and self.price is not None:
3728
- _dict['Price'] = self.price
4238
+ _dict['price'] = self.price
3729
4239
  return _dict
3730
4240
 
3731
4241
  def _to_dict(self):
@@ -3751,25 +4261,47 @@ class PricingGet:
3751
4261
  """
3752
4262
  Pricing-related information.
3753
4263
 
3754
- :attr str type: (optional) Type of plan. Valid values are `free`, `trial`,
4264
+ :param str deployment_id: (optional) The deployment object id this pricing is
4265
+ from. Only set if object kind is deployment.
4266
+ :param str deployment_location: (optional) The deployment location this pricing
4267
+ is from. Only set if object kind is deployment.
4268
+ :param bool deployment_location_no_price_available: (optional) Is the location
4269
+ price not available. Only set in api /pricing/deployment and only set if true.
4270
+ This means for the given deployment object there was no pricing set in pricing
4271
+ catalog.
4272
+ :param str type: (optional) Type of plan. Valid values are `free`, `trial`,
3755
4273
  `paygo`, `bluemix-subscription`, and `ibm-subscription`.
3756
- :attr str origin: (optional) Defines where the pricing originates.
3757
- :attr StartingPrice starting_price: (optional) Plan-specific starting price
4274
+ :param str origin: (optional) Defines where the pricing originates.
4275
+ :param StartingPrice starting_price: (optional) Plan-specific starting price
3758
4276
  information.
3759
- :attr List[Metrics] metrics: (optional) Plan-specific cost metric structure.
4277
+ :param List[Metrics] metrics: (optional) Plan-specific cost metric structure.
4278
+ :param List[str] deployment_regions: (optional) List of regions where region
4279
+ pricing is available. Only set on global deployments if enabled by owner.
3760
4280
  """
3761
4281
 
3762
4282
  def __init__(
3763
4283
  self,
3764
4284
  *,
3765
- type: str = None,
3766
- origin: str = None,
3767
- starting_price: 'StartingPrice' = None,
3768
- metrics: List['Metrics'] = None,
4285
+ deployment_id: Optional[str] = None,
4286
+ deployment_location: Optional[str] = None,
4287
+ deployment_location_no_price_available: Optional[bool] = None,
4288
+ type: Optional[str] = None,
4289
+ origin: Optional[str] = None,
4290
+ starting_price: Optional['StartingPrice'] = None,
4291
+ metrics: Optional[List['Metrics']] = None,
4292
+ deployment_regions: Optional[List[str]] = None,
3769
4293
  ) -> None:
3770
4294
  """
3771
4295
  Initialize a PricingGet object.
3772
4296
 
4297
+ :param str deployment_id: (optional) The deployment object id this pricing
4298
+ is from. Only set if object kind is deployment.
4299
+ :param str deployment_location: (optional) The deployment location this
4300
+ pricing is from. Only set if object kind is deployment.
4301
+ :param bool deployment_location_no_price_available: (optional) Is the
4302
+ location price not available. Only set in api /pricing/deployment and only
4303
+ set if true. This means for the given deployment object there was no
4304
+ pricing set in pricing catalog.
3773
4305
  :param str type: (optional) Type of plan. Valid values are `free`, `trial`,
3774
4306
  `paygo`, `bluemix-subscription`, and `ibm-subscription`.
3775
4307
  :param str origin: (optional) Defines where the pricing originates.
@@ -3777,24 +4309,39 @@ class PricingGet:
3777
4309
  price information.
3778
4310
  :param List[Metrics] metrics: (optional) Plan-specific cost metric
3779
4311
  structure.
4312
+ :param List[str] deployment_regions: (optional) List of regions where
4313
+ region pricing is available. Only set on global deployments if enabled by
4314
+ owner.
3780
4315
  """
4316
+ self.deployment_id = deployment_id
4317
+ self.deployment_location = deployment_location
4318
+ self.deployment_location_no_price_available = deployment_location_no_price_available
3781
4319
  self.type = type
3782
4320
  self.origin = origin
3783
4321
  self.starting_price = starting_price
3784
4322
  self.metrics = metrics
4323
+ self.deployment_regions = deployment_regions
3785
4324
 
3786
4325
  @classmethod
3787
4326
  def from_dict(cls, _dict: Dict) -> 'PricingGet':
3788
4327
  """Initialize a PricingGet object from a json dictionary."""
3789
4328
  args = {}
3790
- if 'type' in _dict:
3791
- args['type'] = _dict.get('type')
3792
- if 'origin' in _dict:
3793
- args['origin'] = _dict.get('origin')
3794
- if 'starting_price' in _dict:
3795
- args['starting_price'] = StartingPrice.from_dict(_dict.get('starting_price'))
3796
- if 'metrics' in _dict:
3797
- args['metrics'] = [Metrics.from_dict(x) for x in _dict.get('metrics')]
4329
+ if (deployment_id := _dict.get('deployment_id')) is not None:
4330
+ args['deployment_id'] = deployment_id
4331
+ if (deployment_location := _dict.get('deployment_location')) is not None:
4332
+ args['deployment_location'] = deployment_location
4333
+ if (deployment_location_no_price_available := _dict.get('deployment_location_no_price_available')) is not None:
4334
+ args['deployment_location_no_price_available'] = deployment_location_no_price_available
4335
+ if (type := _dict.get('type')) is not None:
4336
+ args['type'] = type
4337
+ if (origin := _dict.get('origin')) is not None:
4338
+ args['origin'] = origin
4339
+ if (starting_price := _dict.get('starting_price')) is not None:
4340
+ args['starting_price'] = StartingPrice.from_dict(starting_price)
4341
+ if (metrics := _dict.get('metrics')) is not None:
4342
+ args['metrics'] = [Metrics.from_dict(v) for v in metrics]
4343
+ if (deployment_regions := _dict.get('deployment_regions')) is not None:
4344
+ args['deployment_regions'] = deployment_regions
3798
4345
  return cls(**args)
3799
4346
 
3800
4347
  @classmethod
@@ -3805,14 +4352,34 @@ class PricingGet:
3805
4352
  def to_dict(self) -> Dict:
3806
4353
  """Return a json dictionary representing this model."""
3807
4354
  _dict = {}
4355
+ if hasattr(self, 'deployment_id') and self.deployment_id is not None:
4356
+ _dict['deployment_id'] = self.deployment_id
4357
+ if hasattr(self, 'deployment_location') and self.deployment_location is not None:
4358
+ _dict['deployment_location'] = self.deployment_location
4359
+ if (
4360
+ hasattr(self, 'deployment_location_no_price_available')
4361
+ and self.deployment_location_no_price_available is not None
4362
+ ):
4363
+ _dict['deployment_location_no_price_available'] = self.deployment_location_no_price_available
3808
4364
  if hasattr(self, 'type') and self.type is not None:
3809
4365
  _dict['type'] = self.type
3810
4366
  if hasattr(self, 'origin') and self.origin is not None:
3811
4367
  _dict['origin'] = self.origin
3812
4368
  if hasattr(self, 'starting_price') and self.starting_price is not None:
3813
- _dict['starting_price'] = self.starting_price.to_dict()
4369
+ if isinstance(self.starting_price, dict):
4370
+ _dict['starting_price'] = self.starting_price
4371
+ else:
4372
+ _dict['starting_price'] = self.starting_price.to_dict()
3814
4373
  if hasattr(self, 'metrics') and self.metrics is not None:
3815
- _dict['metrics'] = [x.to_dict() for x in self.metrics]
4374
+ metrics_list = []
4375
+ for v in self.metrics:
4376
+ if isinstance(v, dict):
4377
+ metrics_list.append(v)
4378
+ else:
4379
+ metrics_list.append(v.to_dict())
4380
+ _dict['metrics'] = metrics_list
4381
+ if hasattr(self, 'deployment_regions') and self.deployment_regions is not None:
4382
+ _dict['deployment_regions'] = self.deployment_regions
3816
4383
  return _dict
3817
4384
 
3818
4385
  def _to_dict(self):
@@ -3834,18 +4401,170 @@ class PricingGet:
3834
4401
  return not self == other
3835
4402
 
3836
4403
 
4404
+ class PricingSearchResult:
4405
+ """
4406
+ A paginated result containing pricing entries.
4407
+
4408
+ :param int offset: (optional) The offset (origin 0) of the first resource in
4409
+ this page of search results.
4410
+ :param int limit: (optional) The maximum number of resources returned in each
4411
+ page of search results.
4412
+ :param int count: (optional) The overall total number of resources in the search
4413
+ result set.
4414
+ :param int resource_count: (optional) The number of resources returned in this
4415
+ page of search results.
4416
+ :param str first: (optional) A URL for retrieving the first page of search
4417
+ results.
4418
+ :param str last: (optional) A URL for retrieving the last page of search
4419
+ results.
4420
+ :param str prev: (optional) A URL for retrieving the previous page of search
4421
+ results.
4422
+ :param str next: (optional) A URL for retrieving the next page of search
4423
+ results.
4424
+ :param List[PricingGet] resources: (optional) The resources (prices) contained
4425
+ in this page of search results.
4426
+ """
4427
+
4428
+ def __init__(
4429
+ self,
4430
+ *,
4431
+ offset: Optional[int] = None,
4432
+ limit: Optional[int] = None,
4433
+ count: Optional[int] = None,
4434
+ resource_count: Optional[int] = None,
4435
+ first: Optional[str] = None,
4436
+ last: Optional[str] = None,
4437
+ prev: Optional[str] = None,
4438
+ next: Optional[str] = None,
4439
+ resources: Optional[List['PricingGet']] = None,
4440
+ ) -> None:
4441
+ """
4442
+ Initialize a PricingSearchResult object.
4443
+
4444
+ :param int offset: (optional) The offset (origin 0) of the first resource
4445
+ in this page of search results.
4446
+ :param int limit: (optional) The maximum number of resources returned in
4447
+ each page of search results.
4448
+ :param int count: (optional) The overall total number of resources in the
4449
+ search result set.
4450
+ :param int resource_count: (optional) The number of resources returned in
4451
+ this page of search results.
4452
+ :param str first: (optional) A URL for retrieving the first page of search
4453
+ results.
4454
+ :param str last: (optional) A URL for retrieving the last page of search
4455
+ results.
4456
+ :param str prev: (optional) A URL for retrieving the previous page of
4457
+ search results.
4458
+ :param str next: (optional) A URL for retrieving the next page of search
4459
+ results.
4460
+ :param List[PricingGet] resources: (optional) The resources (prices)
4461
+ contained in this page of search results.
4462
+ """
4463
+ self.offset = offset
4464
+ self.limit = limit
4465
+ self.count = count
4466
+ self.resource_count = resource_count
4467
+ self.first = first
4468
+ self.last = last
4469
+ self.prev = prev
4470
+ self.next = next
4471
+ self.resources = resources
4472
+
4473
+ @classmethod
4474
+ def from_dict(cls, _dict: Dict) -> 'PricingSearchResult':
4475
+ """Initialize a PricingSearchResult object from a json dictionary."""
4476
+ args = {}
4477
+ if (offset := _dict.get('offset')) is not None:
4478
+ args['offset'] = offset
4479
+ if (limit := _dict.get('limit')) is not None:
4480
+ args['limit'] = limit
4481
+ if (count := _dict.get('count')) is not None:
4482
+ args['count'] = count
4483
+ if (resource_count := _dict.get('resource_count')) is not None:
4484
+ args['resource_count'] = resource_count
4485
+ if (first := _dict.get('first')) is not None:
4486
+ args['first'] = first
4487
+ if (last := _dict.get('last')) is not None:
4488
+ args['last'] = last
4489
+ if (prev := _dict.get('prev')) is not None:
4490
+ args['prev'] = prev
4491
+ if (next := _dict.get('next')) is not None:
4492
+ args['next'] = next
4493
+ if (resources := _dict.get('resources')) is not None:
4494
+ args['resources'] = [PricingGet.from_dict(v) for v in resources]
4495
+ return cls(**args)
4496
+
4497
+ @classmethod
4498
+ def _from_dict(cls, _dict):
4499
+ """Initialize a PricingSearchResult object from a json dictionary."""
4500
+ return cls.from_dict(_dict)
4501
+
4502
+ def to_dict(self) -> Dict:
4503
+ """Return a json dictionary representing this model."""
4504
+ _dict = {}
4505
+ if hasattr(self, 'offset') and self.offset is not None:
4506
+ _dict['offset'] = self.offset
4507
+ if hasattr(self, 'limit') and self.limit is not None:
4508
+ _dict['limit'] = self.limit
4509
+ if hasattr(self, 'count') and self.count is not None:
4510
+ _dict['count'] = self.count
4511
+ if hasattr(self, 'resource_count') and self.resource_count is not None:
4512
+ _dict['resource_count'] = self.resource_count
4513
+ if hasattr(self, 'first') and self.first is not None:
4514
+ _dict['first'] = self.first
4515
+ if hasattr(self, 'last') and self.last is not None:
4516
+ _dict['last'] = self.last
4517
+ if hasattr(self, 'prev') and self.prev is not None:
4518
+ _dict['prev'] = self.prev
4519
+ if hasattr(self, 'next') and self.next is not None:
4520
+ _dict['next'] = self.next
4521
+ if hasattr(self, 'resources') and self.resources is not None:
4522
+ resources_list = []
4523
+ for v in self.resources:
4524
+ if isinstance(v, dict):
4525
+ resources_list.append(v)
4526
+ else:
4527
+ resources_list.append(v.to_dict())
4528
+ _dict['resources'] = resources_list
4529
+ return _dict
4530
+
4531
+ def _to_dict(self):
4532
+ """Return a json dictionary representing this model."""
4533
+ return self.to_dict()
4534
+
4535
+ def __str__(self) -> str:
4536
+ """Return a `str` version of this PricingSearchResult object."""
4537
+ return json.dumps(self.to_dict(), indent=2)
4538
+
4539
+ def __eq__(self, other: 'PricingSearchResult') -> bool:
4540
+ """Return `true` when self and other are equal, false otherwise."""
4541
+ if not isinstance(other, self.__class__):
4542
+ return False
4543
+ return self.__dict__ == other.__dict__
4544
+
4545
+ def __ne__(self, other: 'PricingSearchResult') -> bool:
4546
+ """Return `true` when self and other are not equal, false otherwise."""
4547
+ return not self == other
4548
+
4549
+
3837
4550
  class PricingSet:
3838
4551
  """
3839
4552
  Pricing-related information.
3840
4553
 
3841
- :attr str type: (optional) Type of plan. Valid values are `free`, `trial`,
4554
+ :param str type: (optional) Type of plan. Valid values are `free`, `trial`,
3842
4555
  `paygo`, `bluemix-subscription`, and `ibm-subscription`.
3843
- :attr str origin: (optional) Defines where the pricing originates.
3844
- :attr StartingPrice starting_price: (optional) Plan-specific starting price
4556
+ :param str origin: (optional) Defines where the pricing originates.
4557
+ :param StartingPrice starting_price: (optional) Plan-specific starting price
3845
4558
  information.
3846
4559
  """
3847
4560
 
3848
- def __init__(self, *, type: str = None, origin: str = None, starting_price: 'StartingPrice' = None) -> None:
4561
+ def __init__(
4562
+ self,
4563
+ *,
4564
+ type: Optional[str] = None,
4565
+ origin: Optional[str] = None,
4566
+ starting_price: Optional['StartingPrice'] = None,
4567
+ ) -> None:
3849
4568
  """
3850
4569
  Initialize a PricingSet object.
3851
4570
 
@@ -3863,12 +4582,12 @@ class PricingSet:
3863
4582
  def from_dict(cls, _dict: Dict) -> 'PricingSet':
3864
4583
  """Initialize a PricingSet object from a json dictionary."""
3865
4584
  args = {}
3866
- if 'type' in _dict:
3867
- args['type'] = _dict.get('type')
3868
- if 'origin' in _dict:
3869
- args['origin'] = _dict.get('origin')
3870
- if 'starting_price' in _dict:
3871
- args['starting_price'] = StartingPrice.from_dict(_dict.get('starting_price'))
4585
+ if (type := _dict.get('type')) is not None:
4586
+ args['type'] = type
4587
+ if (origin := _dict.get('origin')) is not None:
4588
+ args['origin'] = origin
4589
+ if (starting_price := _dict.get('starting_price')) is not None:
4590
+ args['starting_price'] = StartingPrice.from_dict(starting_price)
3872
4591
  return cls(**args)
3873
4592
 
3874
4593
  @classmethod
@@ -3884,7 +4603,10 @@ class PricingSet:
3884
4603
  if hasattr(self, 'origin') and self.origin is not None:
3885
4604
  _dict['origin'] = self.origin
3886
4605
  if hasattr(self, 'starting_price') and self.starting_price is not None:
3887
- _dict['starting_price'] = self.starting_price.to_dict()
4606
+ if isinstance(self.starting_price, dict):
4607
+ _dict['starting_price'] = self.starting_price
4608
+ else:
4609
+ _dict['starting_price'] = self.starting_price.to_dict()
3888
4610
  return _dict
3889
4611
 
3890
4612
  def _to_dict(self):
@@ -3910,15 +4632,21 @@ class Provider:
3910
4632
  """
3911
4633
  Information related to the provider associated with a catalog entry.
3912
4634
 
3913
- :attr str email: Provider's email address for this catalog entry.
3914
- :attr str name: Provider's name, for example, IBM.
3915
- :attr str contact: (optional) Provider's contact name.
3916
- :attr str support_email: (optional) Provider's support email.
3917
- :attr str phone: (optional) Provider's contact phone.
4635
+ :param str email: Provider's email address for this catalog entry.
4636
+ :param str name: Provider's name, for example, IBM.
4637
+ :param str contact: (optional) Provider's contact name.
4638
+ :param str support_email: (optional) Provider's support email.
4639
+ :param str phone: (optional) Provider's contact phone.
3918
4640
  """
3919
4641
 
3920
4642
  def __init__(
3921
- self, email: str, name: str, *, contact: str = None, support_email: str = None, phone: str = None
4643
+ self,
4644
+ email: str,
4645
+ name: str,
4646
+ *,
4647
+ contact: Optional[str] = None,
4648
+ support_email: Optional[str] = None,
4649
+ phone: Optional[str] = None,
3922
4650
  ) -> None:
3923
4651
  """
3924
4652
  Initialize a Provider object.
@@ -3939,20 +4667,20 @@ class Provider:
3939
4667
  def from_dict(cls, _dict: Dict) -> 'Provider':
3940
4668
  """Initialize a Provider object from a json dictionary."""
3941
4669
  args = {}
3942
- if 'email' in _dict:
3943
- args['email'] = _dict.get('email')
4670
+ if (email := _dict.get('email')) is not None:
4671
+ args['email'] = email
3944
4672
  else:
3945
4673
  raise ValueError('Required property \'email\' not present in Provider JSON')
3946
- if 'name' in _dict:
3947
- args['name'] = _dict.get('name')
4674
+ if (name := _dict.get('name')) is not None:
4675
+ args['name'] = name
3948
4676
  else:
3949
4677
  raise ValueError('Required property \'name\' not present in Provider JSON')
3950
- if 'contact' in _dict:
3951
- args['contact'] = _dict.get('contact')
3952
- if 'support_email' in _dict:
3953
- args['support_email'] = _dict.get('support_email')
3954
- if 'phone' in _dict:
3955
- args['phone'] = _dict.get('phone')
4678
+ if (contact := _dict.get('contact')) is not None:
4679
+ args['contact'] = contact
4680
+ if (support_email := _dict.get('support_email')) is not None:
4681
+ args['support_email'] = support_email
4682
+ if (phone := _dict.get('phone')) is not None:
4683
+ args['phone'] = phone
3956
4684
  return cls(**args)
3957
4685
 
3958
4686
  @classmethod
@@ -3998,24 +4726,25 @@ class SLAMetaData:
3998
4726
  """
3999
4727
  Service Level Agreement related metadata.
4000
4728
 
4001
- :attr str terms: (optional) Required Service License Agreement Terms of Use.
4002
- :attr str tenancy: (optional) Required deployment type. Valid values are
4729
+ :param str terms: (optional) Required Service License Agreement Terms of Use.
4730
+ :param str tenancy: (optional) Required deployment type. Valid values are
4003
4731
  dedicated, local, or public. It can be Single or Multi tennancy, more
4004
4732
  specifically on a Server, VM, Physical, or Pod.
4005
- :attr str provisioning: (optional) Provisioning reliability, for example, 99.95.
4006
- :attr str responsiveness: (optional) Uptime reliability of the service, for
4733
+ :param float provisioning: (optional) Provisioning reliability, for example,
4734
+ 99.95.
4735
+ :param float responsiveness: (optional) Uptime reliability of the service, for
4007
4736
  example, 99.95.
4008
- :attr DRMetaData dr: (optional) SLA Disaster Recovery-related metadata.
4737
+ :param DRMetaData dr: (optional) SLA Disaster Recovery-related metadata.
4009
4738
  """
4010
4739
 
4011
4740
  def __init__(
4012
4741
  self,
4013
4742
  *,
4014
- terms: str = None,
4015
- tenancy: str = None,
4016
- provisioning: str = None,
4017
- responsiveness: str = None,
4018
- dr: 'DRMetaData' = None,
4743
+ terms: Optional[str] = None,
4744
+ tenancy: Optional[str] = None,
4745
+ provisioning: Optional[float] = None,
4746
+ responsiveness: Optional[float] = None,
4747
+ dr: Optional['DRMetaData'] = None,
4019
4748
  ) -> None:
4020
4749
  """
4021
4750
  Initialize a SLAMetaData object.
@@ -4025,9 +4754,9 @@ class SLAMetaData:
4025
4754
  :param str tenancy: (optional) Required deployment type. Valid values are
4026
4755
  dedicated, local, or public. It can be Single or Multi tennancy, more
4027
4756
  specifically on a Server, VM, Physical, or Pod.
4028
- :param str provisioning: (optional) Provisioning reliability, for example,
4029
- 99.95.
4030
- :param str responsiveness: (optional) Uptime reliability of the service,
4757
+ :param float provisioning: (optional) Provisioning reliability, for
4758
+ example, 99.95.
4759
+ :param float responsiveness: (optional) Uptime reliability of the service,
4031
4760
  for example, 99.95.
4032
4761
  :param DRMetaData dr: (optional) SLA Disaster Recovery-related metadata.
4033
4762
  """
@@ -4041,16 +4770,16 @@ class SLAMetaData:
4041
4770
  def from_dict(cls, _dict: Dict) -> 'SLAMetaData':
4042
4771
  """Initialize a SLAMetaData object from a json dictionary."""
4043
4772
  args = {}
4044
- if 'terms' in _dict:
4045
- args['terms'] = _dict.get('terms')
4046
- if 'tenancy' in _dict:
4047
- args['tenancy'] = _dict.get('tenancy')
4048
- if 'provisioning' in _dict:
4049
- args['provisioning'] = _dict.get('provisioning')
4050
- if 'responsiveness' in _dict:
4051
- args['responsiveness'] = _dict.get('responsiveness')
4052
- if 'dr' in _dict:
4053
- args['dr'] = DRMetaData.from_dict(_dict.get('dr'))
4773
+ if (terms := _dict.get('terms')) is not None:
4774
+ args['terms'] = terms
4775
+ if (tenancy := _dict.get('tenancy')) is not None:
4776
+ args['tenancy'] = tenancy
4777
+ if (provisioning := _dict.get('provisioning')) is not None:
4778
+ args['provisioning'] = provisioning
4779
+ if (responsiveness := _dict.get('responsiveness')) is not None:
4780
+ args['responsiveness'] = responsiveness
4781
+ if (dr := _dict.get('dr')) is not None:
4782
+ args['dr'] = DRMetaData.from_dict(dr)
4054
4783
  return cls(**args)
4055
4784
 
4056
4785
  @classmethod
@@ -4070,7 +4799,10 @@ class SLAMetaData:
4070
4799
  if hasattr(self, 'responsiveness') and self.responsiveness is not None:
4071
4800
  _dict['responsiveness'] = self.responsiveness
4072
4801
  if hasattr(self, 'dr') and self.dr is not None:
4073
- _dict['dr'] = self.dr.to_dict()
4802
+ if isinstance(self.dr, dict):
4803
+ _dict['dr'] = self.dr
4804
+ else:
4805
+ _dict['dr'] = self.dr.to_dict()
4074
4806
  return _dict
4075
4807
 
4076
4808
  def _to_dict(self):
@@ -4096,12 +4828,18 @@ class SourceMetaData:
4096
4828
  """
4097
4829
  Location of your applications source files.
4098
4830
 
4099
- :attr str path: (optional) Path to your application.
4100
- :attr str type: (optional) Type of source, for example, git.
4101
- :attr str url: (optional) URL to source.
4831
+ :param str path: (optional) Path to your application.
4832
+ :param str type: (optional) Type of source, for example, git.
4833
+ :param str url: (optional) URL to source.
4102
4834
  """
4103
4835
 
4104
- def __init__(self, *, path: str = None, type: str = None, url: str = None) -> None:
4836
+ def __init__(
4837
+ self,
4838
+ *,
4839
+ path: Optional[str] = None,
4840
+ type: Optional[str] = None,
4841
+ url: Optional[str] = None,
4842
+ ) -> None:
4105
4843
  """
4106
4844
  Initialize a SourceMetaData object.
4107
4845
 
@@ -4117,12 +4855,12 @@ class SourceMetaData:
4117
4855
  def from_dict(cls, _dict: Dict) -> 'SourceMetaData':
4118
4856
  """Initialize a SourceMetaData object from a json dictionary."""
4119
4857
  args = {}
4120
- if 'path' in _dict:
4121
- args['path'] = _dict.get('path')
4122
- if 'type' in _dict:
4123
- args['type'] = _dict.get('type')
4124
- if 'url' in _dict:
4125
- args['url'] = _dict.get('url')
4858
+ if (path := _dict.get('path')) is not None:
4859
+ args['path'] = path
4860
+ if (type := _dict.get('type')) is not None:
4861
+ args['type'] = type
4862
+ if (url := _dict.get('url')) is not None:
4863
+ args['url'] = url
4126
4864
  return cls(**args)
4127
4865
 
4128
4866
  @classmethod
@@ -4164,16 +4902,21 @@ class StartingPrice:
4164
4902
  """
4165
4903
  Plan-specific starting price information.
4166
4904
 
4167
- :attr str plan_id: (optional) ID of the plan the starting price is calculated.
4168
- :attr str deployment_id: (optional) ID of the deployment the starting price is
4905
+ :param str plan_id: (optional) ID of the plan the starting price is calculated.
4906
+ :param str deployment_id: (optional) ID of the deployment the starting price is
4169
4907
  calculated.
4170
- :attr str unit: (optional) Pricing unit.
4171
- :attr List[Amount] amount: (optional) The pricing per metric by country and
4908
+ :param str unit: (optional) Pricing unit.
4909
+ :param List[Amount] amount: (optional) The pricing per metric by country and
4172
4910
  currency.
4173
4911
  """
4174
4912
 
4175
4913
  def __init__(
4176
- self, *, plan_id: str = None, deployment_id: str = None, unit: str = None, amount: List['Amount'] = None
4914
+ self,
4915
+ *,
4916
+ plan_id: Optional[str] = None,
4917
+ deployment_id: Optional[str] = None,
4918
+ unit: Optional[str] = None,
4919
+ amount: Optional[List['Amount']] = None,
4177
4920
  ) -> None:
4178
4921
  """
4179
4922
  Initialize a StartingPrice object.
@@ -4195,14 +4938,14 @@ class StartingPrice:
4195
4938
  def from_dict(cls, _dict: Dict) -> 'StartingPrice':
4196
4939
  """Initialize a StartingPrice object from a json dictionary."""
4197
4940
  args = {}
4198
- if 'plan_id' in _dict:
4199
- args['plan_id'] = _dict.get('plan_id')
4200
- if 'deployment_id' in _dict:
4201
- args['deployment_id'] = _dict.get('deployment_id')
4202
- if 'unit' in _dict:
4203
- args['unit'] = _dict.get('unit')
4204
- if 'amount' in _dict:
4205
- args['amount'] = [Amount.from_dict(x) for x in _dict.get('amount')]
4941
+ if (plan_id := _dict.get('plan_id')) is not None:
4942
+ args['plan_id'] = plan_id
4943
+ if (deployment_id := _dict.get('deployment_id')) is not None:
4944
+ args['deployment_id'] = deployment_id
4945
+ if (unit := _dict.get('unit')) is not None:
4946
+ args['unit'] = unit
4947
+ if (amount := _dict.get('amount')) is not None:
4948
+ args['amount'] = [Amount.from_dict(v) for v in amount]
4206
4949
  return cls(**args)
4207
4950
 
4208
4951
  @classmethod
@@ -4220,7 +4963,13 @@ class StartingPrice:
4220
4963
  if hasattr(self, 'unit') and self.unit is not None:
4221
4964
  _dict['unit'] = self.unit
4222
4965
  if hasattr(self, 'amount') and self.amount is not None:
4223
- _dict['amount'] = [x.to_dict() for x in self.amount]
4966
+ amount_list = []
4967
+ for v in self.amount:
4968
+ if isinstance(v, dict):
4969
+ amount_list.append(v)
4970
+ else:
4971
+ amount_list.append(v.to_dict())
4972
+ _dict['amount'] = amount_list
4224
4973
  return _dict
4225
4974
 
4226
4975
  def _to_dict(self):
@@ -4246,27 +4995,28 @@ class Strings:
4246
4995
  """
4247
4996
  Information related to a translated text message.
4248
4997
 
4249
- :attr List[Bullets] bullets: (optional) Presentation information related to list
4250
- delimiters.
4251
- :attr List[UIMetaMedia] media: (optional) Media-related metadata.
4252
- :attr str not_creatable_msg: (optional) Warning that a message is not creatable.
4253
- :attr str not_creatable_robot_msg: (optional) Warning that a robot message is
4998
+ :param List[Bullets] bullets: (optional) Presentation information related to
4999
+ list delimiters.
5000
+ :param List[UIMetaMedia] media: (optional) Media-related metadata.
5001
+ :param str not_creatable_msg: (optional) Warning that a message is not
5002
+ creatable.
5003
+ :param str not_creatable_robot_msg: (optional) Warning that a robot message is
4254
5004
  not creatable.
4255
- :attr str deprecation_warning: (optional) Warning for deprecation.
4256
- :attr str popup_warning_message: (optional) Popup warning message.
4257
- :attr str instruction: (optional) Instructions for UI strings.
5005
+ :param str deprecation_warning: (optional) Warning for deprecation.
5006
+ :param str popup_warning_message: (optional) Popup warning message.
5007
+ :param str instruction: (optional) Instructions for UI strings.
4258
5008
  """
4259
5009
 
4260
5010
  def __init__(
4261
5011
  self,
4262
5012
  *,
4263
- bullets: List['Bullets'] = None,
4264
- media: List['UIMetaMedia'] = None,
4265
- not_creatable_msg: str = None,
4266
- not_creatable_robot_msg: str = None,
4267
- deprecation_warning: str = None,
4268
- popup_warning_message: str = None,
4269
- instruction: str = None,
5013
+ bullets: Optional[List['Bullets']] = None,
5014
+ media: Optional[List['UIMetaMedia']] = None,
5015
+ not_creatable_msg: Optional[str] = None,
5016
+ not_creatable_robot_msg: Optional[str] = None,
5017
+ deprecation_warning: Optional[str] = None,
5018
+ popup_warning_message: Optional[str] = None,
5019
+ instruction: Optional[str] = None,
4270
5020
  ) -> None:
4271
5021
  """
4272
5022
  Initialize a Strings object.
@@ -4294,20 +5044,20 @@ class Strings:
4294
5044
  def from_dict(cls, _dict: Dict) -> 'Strings':
4295
5045
  """Initialize a Strings object from a json dictionary."""
4296
5046
  args = {}
4297
- if 'bullets' in _dict:
4298
- args['bullets'] = [Bullets.from_dict(x) for x in _dict.get('bullets')]
4299
- if 'media' in _dict:
4300
- args['media'] = [UIMetaMedia.from_dict(x) for x in _dict.get('media')]
4301
- if 'not_creatable_msg' in _dict:
4302
- args['not_creatable_msg'] = _dict.get('not_creatable_msg')
4303
- if 'not_creatable__robot_msg' in _dict:
4304
- args['not_creatable_robot_msg'] = _dict.get('not_creatable__robot_msg')
4305
- if 'deprecation_warning' in _dict:
4306
- args['deprecation_warning'] = _dict.get('deprecation_warning')
4307
- if 'popup_warning_message' in _dict:
4308
- args['popup_warning_message'] = _dict.get('popup_warning_message')
4309
- if 'instruction' in _dict:
4310
- args['instruction'] = _dict.get('instruction')
5047
+ if (bullets := _dict.get('bullets')) is not None:
5048
+ args['bullets'] = [Bullets.from_dict(v) for v in bullets]
5049
+ if (media := _dict.get('media')) is not None:
5050
+ args['media'] = [UIMetaMedia.from_dict(v) for v in media]
5051
+ if (not_creatable_msg := _dict.get('not_creatable_msg')) is not None:
5052
+ args['not_creatable_msg'] = not_creatable_msg
5053
+ if (not_creatable_robot_msg := _dict.get('not_creatable__robot_msg')) is not None:
5054
+ args['not_creatable_robot_msg'] = not_creatable_robot_msg
5055
+ if (deprecation_warning := _dict.get('deprecation_warning')) is not None:
5056
+ args['deprecation_warning'] = deprecation_warning
5057
+ if (popup_warning_message := _dict.get('popup_warning_message')) is not None:
5058
+ args['popup_warning_message'] = popup_warning_message
5059
+ if (instruction := _dict.get('instruction')) is not None:
5060
+ args['instruction'] = instruction
4311
5061
  return cls(**args)
4312
5062
 
4313
5063
  @classmethod
@@ -4319,9 +5069,21 @@ class Strings:
4319
5069
  """Return a json dictionary representing this model."""
4320
5070
  _dict = {}
4321
5071
  if hasattr(self, 'bullets') and self.bullets is not None:
4322
- _dict['bullets'] = [x.to_dict() for x in self.bullets]
5072
+ bullets_list = []
5073
+ for v in self.bullets:
5074
+ if isinstance(v, dict):
5075
+ bullets_list.append(v)
5076
+ else:
5077
+ bullets_list.append(v.to_dict())
5078
+ _dict['bullets'] = bullets_list
4323
5079
  if hasattr(self, 'media') and self.media is not None:
4324
- _dict['media'] = [x.to_dict() for x in self.media]
5080
+ media_list = []
5081
+ for v in self.media:
5082
+ if isinstance(v, dict):
5083
+ media_list.append(v)
5084
+ else:
5085
+ media_list.append(v.to_dict())
5086
+ _dict['media'] = media_list
4325
5087
  if hasattr(self, 'not_creatable_msg') and self.not_creatable_msg is not None:
4326
5088
  _dict['not_creatable_msg'] = self.not_creatable_msg
4327
5089
  if hasattr(self, 'not_creatable_robot_msg') and self.not_creatable_robot_msg is not None:
@@ -4357,34 +5119,34 @@ class TemplateMetaData:
4357
5119
  """
4358
5120
  Template-related metadata.
4359
5121
 
4360
- :attr List[str] services: (optional) List of required offering or plan IDs.
4361
- :attr int default_memory: (optional) Cloud Foundry instance memory value.
4362
- :attr str start_cmd: (optional) Start Command.
4363
- :attr SourceMetaData source: (optional) Location of your applications source
5122
+ :param List[str] services: (optional) List of required offering or plan IDs.
5123
+ :param int default_memory: (optional) Cloud Foundry instance memory value.
5124
+ :param str start_cmd: (optional) Start Command.
5125
+ :param SourceMetaData source: (optional) Location of your applications source
4364
5126
  files.
4365
- :attr str runtime_catalog_id: (optional) ID of the runtime.
4366
- :attr str cf_runtime_id: (optional) ID of the Cloud Foundry runtime.
4367
- :attr str template_id: (optional) ID of the boilerplate or template.
4368
- :attr str executable_file: (optional) File path to the executable file for the
5127
+ :param str runtime_catalog_id: (optional) ID of the runtime.
5128
+ :param str cf_runtime_id: (optional) ID of the Cloud Foundry runtime.
5129
+ :param str template_id: (optional) ID of the boilerplate or template.
5130
+ :param str executable_file: (optional) File path to the executable file for the
4369
5131
  template.
4370
- :attr str buildpack: (optional) ID of the buildpack used by the template.
4371
- :attr dict environment_variables: (optional) Environment variables (key/value
5132
+ :param str buildpack: (optional) ID of the buildpack used by the template.
5133
+ :param dict environment_variables: (optional) Environment variables (key/value
4372
5134
  pairs) for the template.
4373
5135
  """
4374
5136
 
4375
5137
  def __init__(
4376
5138
  self,
4377
5139
  *,
4378
- services: List[str] = None,
4379
- default_memory: int = None,
4380
- start_cmd: str = None,
4381
- source: 'SourceMetaData' = None,
4382
- runtime_catalog_id: str = None,
4383
- cf_runtime_id: str = None,
4384
- template_id: str = None,
4385
- executable_file: str = None,
4386
- buildpack: str = None,
4387
- environment_variables: dict = None,
5140
+ services: Optional[List[str]] = None,
5141
+ default_memory: Optional[int] = None,
5142
+ start_cmd: Optional[str] = None,
5143
+ source: Optional['SourceMetaData'] = None,
5144
+ runtime_catalog_id: Optional[str] = None,
5145
+ cf_runtime_id: Optional[str] = None,
5146
+ template_id: Optional[str] = None,
5147
+ executable_file: Optional[str] = None,
5148
+ buildpack: Optional[str] = None,
5149
+ environment_variables: Optional[dict] = None,
4388
5150
  ) -> None:
4389
5151
  """
4390
5152
  Initialize a TemplateMetaData object.
@@ -4419,26 +5181,26 @@ class TemplateMetaData:
4419
5181
  def from_dict(cls, _dict: Dict) -> 'TemplateMetaData':
4420
5182
  """Initialize a TemplateMetaData object from a json dictionary."""
4421
5183
  args = {}
4422
- if 'services' in _dict:
4423
- args['services'] = _dict.get('services')
4424
- if 'default_memory' in _dict:
4425
- args['default_memory'] = _dict.get('default_memory')
4426
- if 'start_cmd' in _dict:
4427
- args['start_cmd'] = _dict.get('start_cmd')
4428
- if 'source' in _dict:
4429
- args['source'] = SourceMetaData.from_dict(_dict.get('source'))
4430
- if 'runtime_catalog_id' in _dict:
4431
- args['runtime_catalog_id'] = _dict.get('runtime_catalog_id')
4432
- if 'cf_runtime_id' in _dict:
4433
- args['cf_runtime_id'] = _dict.get('cf_runtime_id')
4434
- if 'template_id' in _dict:
4435
- args['template_id'] = _dict.get('template_id')
4436
- if 'executable_file' in _dict:
4437
- args['executable_file'] = _dict.get('executable_file')
4438
- if 'buildpack' in _dict:
4439
- args['buildpack'] = _dict.get('buildpack')
4440
- if 'environment_variables' in _dict:
4441
- args['environment_variables'] = _dict.get('environment_variables')
5184
+ if (services := _dict.get('services')) is not None:
5185
+ args['services'] = services
5186
+ if (default_memory := _dict.get('default_memory')) is not None:
5187
+ args['default_memory'] = default_memory
5188
+ if (start_cmd := _dict.get('start_cmd')) is not None:
5189
+ args['start_cmd'] = start_cmd
5190
+ if (source := _dict.get('source')) is not None:
5191
+ args['source'] = SourceMetaData.from_dict(source)
5192
+ if (runtime_catalog_id := _dict.get('runtime_catalog_id')) is not None:
5193
+ args['runtime_catalog_id'] = runtime_catalog_id
5194
+ if (cf_runtime_id := _dict.get('cf_runtime_id')) is not None:
5195
+ args['cf_runtime_id'] = cf_runtime_id
5196
+ if (template_id := _dict.get('template_id')) is not None:
5197
+ args['template_id'] = template_id
5198
+ if (executable_file := _dict.get('executable_file')) is not None:
5199
+ args['executable_file'] = executable_file
5200
+ if (buildpack := _dict.get('buildpack')) is not None:
5201
+ args['buildpack'] = buildpack
5202
+ if (environment_variables := _dict.get('environment_variables')) is not None:
5203
+ args['environment_variables'] = environment_variables
4442
5204
  return cls(**args)
4443
5205
 
4444
5206
  @classmethod
@@ -4456,7 +5218,10 @@ class TemplateMetaData:
4456
5218
  if hasattr(self, 'start_cmd') and self.start_cmd is not None:
4457
5219
  _dict['start_cmd'] = self.start_cmd
4458
5220
  if hasattr(self, 'source') and self.source is not None:
4459
- _dict['source'] = self.source.to_dict()
5221
+ if isinstance(self.source, dict):
5222
+ _dict['source'] = self.source
5223
+ else:
5224
+ _dict['source'] = self.source.to_dict()
4460
5225
  if hasattr(self, 'runtime_catalog_id') and self.runtime_catalog_id is not None:
4461
5226
  _dict['runtime_catalog_id'] = self.runtime_catalog_id
4462
5227
  if hasattr(self, 'cf_runtime_id') and self.cf_runtime_id is not None:
@@ -4490,52 +5255,118 @@ class TemplateMetaData:
4490
5255
  return not self == other
4491
5256
 
4492
5257
 
5258
+ class UIMediaSourceMetaData:
5259
+ """
5260
+ Location of your applications media source files.
5261
+
5262
+ :param str type: (optional) Type of source, for example, git.
5263
+ :param str url: (optional) URL to source.
5264
+ """
5265
+
5266
+ def __init__(
5267
+ self,
5268
+ *,
5269
+ type: Optional[str] = None,
5270
+ url: Optional[str] = None,
5271
+ ) -> None:
5272
+ """
5273
+ Initialize a UIMediaSourceMetaData object.
5274
+
5275
+ :param str type: (optional) Type of source, for example, git.
5276
+ :param str url: (optional) URL to source.
5277
+ """
5278
+ self.type = type
5279
+ self.url = url
5280
+
5281
+ @classmethod
5282
+ def from_dict(cls, _dict: Dict) -> 'UIMediaSourceMetaData':
5283
+ """Initialize a UIMediaSourceMetaData object from a json dictionary."""
5284
+ args = {}
5285
+ if (type := _dict.get('type')) is not None:
5286
+ args['type'] = type
5287
+ if (url := _dict.get('url')) is not None:
5288
+ args['url'] = url
5289
+ return cls(**args)
5290
+
5291
+ @classmethod
5292
+ def _from_dict(cls, _dict):
5293
+ """Initialize a UIMediaSourceMetaData object from a json dictionary."""
5294
+ return cls.from_dict(_dict)
5295
+
5296
+ def to_dict(self) -> Dict:
5297
+ """Return a json dictionary representing this model."""
5298
+ _dict = {}
5299
+ if hasattr(self, 'type') and self.type is not None:
5300
+ _dict['type'] = self.type
5301
+ if hasattr(self, 'url') and self.url is not None:
5302
+ _dict['url'] = self.url
5303
+ return _dict
5304
+
5305
+ def _to_dict(self):
5306
+ """Return a json dictionary representing this model."""
5307
+ return self.to_dict()
5308
+
5309
+ def __str__(self) -> str:
5310
+ """Return a `str` version of this UIMediaSourceMetaData object."""
5311
+ return json.dumps(self.to_dict(), indent=2)
5312
+
5313
+ def __eq__(self, other: 'UIMediaSourceMetaData') -> bool:
5314
+ """Return `true` when self and other are equal, false otherwise."""
5315
+ if not isinstance(other, self.__class__):
5316
+ return False
5317
+ return self.__dict__ == other.__dict__
5318
+
5319
+ def __ne__(self, other: 'UIMediaSourceMetaData') -> bool:
5320
+ """Return `true` when self and other are not equal, false otherwise."""
5321
+ return not self == other
5322
+
5323
+
4493
5324
  class UIMetaData:
4494
5325
  """
4495
5326
  Information related to the UI presentation associated with a catalog entry.
4496
5327
 
4497
- :attr dict strings: (optional) Language specific translation of translation
5328
+ :param dict strings: (optional) Language specific translation of translation
4498
5329
  properties, like label and description.
4499
- :attr URLS urls: (optional) UI based URLs.
4500
- :attr str embeddable_dashboard: (optional) Describes how the embeddable
5330
+ :param URLS urls: (optional) UI based URLs.
5331
+ :param str embeddable_dashboard: (optional) Describes how the embeddable
4501
5332
  dashboard is rendered.
4502
- :attr bool embeddable_dashboard_full_width: (optional) Describes whether the
5333
+ :param bool embeddable_dashboard_full_width: (optional) Describes whether the
4503
5334
  embeddable dashboard is rendered at the full width.
4504
- :attr List[str] navigation_order: (optional) Defines the order of information
5335
+ :param List[str] navigation_order: (optional) Defines the order of information
4505
5336
  presented.
4506
- :attr bool not_creatable: (optional) Describes whether this entry is able to be
5337
+ :param bool not_creatable: (optional) Describes whether this entry is able to be
4507
5338
  created from the UI element or CLI.
4508
- :attr str primary_offering_id: (optional) ID of the primary offering for a
5339
+ :param str primary_offering_id: (optional) ID of the primary offering for a
4509
5340
  group.
4510
- :attr bool accessible_during_provision: (optional) Alert to ACE to allow
5341
+ :param bool accessible_during_provision: (optional) Alert to ACE to allow
4511
5342
  instance UI to be accessible while the provisioning state of instance is in
4512
5343
  progress.
4513
- :attr int side_by_side_index: (optional) Specifies a side by side ordering
5344
+ :param int side_by_side_index: (optional) Specifies a side by side ordering
4514
5345
  weight to the UI.
4515
- :attr datetime end_of_service_time: (optional) Date and time the service will no
4516
- longer be available.
4517
- :attr bool hidden: (optional) Denotes visibility.
4518
- :attr bool hide_lite_metering: (optional) Denotes lite metering visibility.
4519
- :attr bool no_upgrade_next_step: (optional) Denotes whether an upgrade should
4520
- occurr.
5346
+ :param datetime end_of_service_time: (optional) Date and time the service will
5347
+ no longer be available.
5348
+ :param bool hidden: (optional) Denotes visibility.
5349
+ :param bool hide_lite_metering: (optional) Denotes lite metering visibility.
5350
+ :param bool no_upgrade_next_step: (optional) Denotes whether an upgrade should
5351
+ occur.
4521
5352
  """
4522
5353
 
4523
5354
  def __init__(
4524
5355
  self,
4525
5356
  *,
4526
- strings: dict = None,
4527
- urls: 'URLS' = None,
4528
- embeddable_dashboard: str = None,
4529
- embeddable_dashboard_full_width: bool = None,
4530
- navigation_order: List[str] = None,
4531
- not_creatable: bool = None,
4532
- primary_offering_id: str = None,
4533
- accessible_during_provision: bool = None,
4534
- side_by_side_index: int = None,
4535
- end_of_service_time: datetime = None,
4536
- hidden: bool = None,
4537
- hide_lite_metering: bool = None,
4538
- no_upgrade_next_step: bool = None,
5357
+ strings: Optional[dict] = None,
5358
+ urls: Optional['URLS'] = None,
5359
+ embeddable_dashboard: Optional[str] = None,
5360
+ embeddable_dashboard_full_width: Optional[bool] = None,
5361
+ navigation_order: Optional[List[str]] = None,
5362
+ not_creatable: Optional[bool] = None,
5363
+ primary_offering_id: Optional[str] = None,
5364
+ accessible_during_provision: Optional[bool] = None,
5365
+ side_by_side_index: Optional[int] = None,
5366
+ end_of_service_time: Optional[datetime] = None,
5367
+ hidden: Optional[bool] = None,
5368
+ hide_lite_metering: Optional[bool] = None,
5369
+ no_upgrade_next_step: Optional[bool] = None,
4539
5370
  ) -> None:
4540
5371
  """
4541
5372
  Initialize a UIMetaData object.
@@ -4564,7 +5395,7 @@ class UIMetaData:
4564
5395
  :param bool hide_lite_metering: (optional) Denotes lite metering
4565
5396
  visibility.
4566
5397
  :param bool no_upgrade_next_step: (optional) Denotes whether an upgrade
4567
- should occurr.
5398
+ should occur.
4568
5399
  """
4569
5400
  self.strings = strings
4570
5401
  self.urls = urls
@@ -4584,32 +5415,32 @@ class UIMetaData:
4584
5415
  def from_dict(cls, _dict: Dict) -> 'UIMetaData':
4585
5416
  """Initialize a UIMetaData object from a json dictionary."""
4586
5417
  args = {}
4587
- if 'strings' in _dict:
4588
- args['strings'] = {k: Strings.from_dict(v) for k, v in _dict.get('strings').items()}
4589
- if 'urls' in _dict:
4590
- args['urls'] = URLS.from_dict(_dict.get('urls'))
4591
- if 'embeddable_dashboard' in _dict:
4592
- args['embeddable_dashboard'] = _dict.get('embeddable_dashboard')
4593
- if 'embeddable_dashboard_full_width' in _dict:
4594
- args['embeddable_dashboard_full_width'] = _dict.get('embeddable_dashboard_full_width')
4595
- if 'navigation_order' in _dict:
4596
- args['navigation_order'] = _dict.get('navigation_order')
4597
- if 'not_creatable' in _dict:
4598
- args['not_creatable'] = _dict.get('not_creatable')
4599
- if 'primary_offering_id' in _dict:
4600
- args['primary_offering_id'] = _dict.get('primary_offering_id')
4601
- if 'accessible_during_provision' in _dict:
4602
- args['accessible_during_provision'] = _dict.get('accessible_during_provision')
4603
- if 'side_by_side_index' in _dict:
4604
- args['side_by_side_index'] = _dict.get('side_by_side_index')
4605
- if 'end_of_service_time' in _dict:
4606
- args['end_of_service_time'] = string_to_datetime(_dict.get('end_of_service_time'))
4607
- if 'hidden' in _dict:
4608
- args['hidden'] = _dict.get('hidden')
4609
- if 'hide_lite_metering' in _dict:
4610
- args['hide_lite_metering'] = _dict.get('hide_lite_metering')
4611
- if 'no_upgrade_next_step' in _dict:
4612
- args['no_upgrade_next_step'] = _dict.get('no_upgrade_next_step')
5418
+ if (strings := _dict.get('strings')) is not None:
5419
+ args['strings'] = {k: Strings.from_dict(v) for k, v in strings.items()}
5420
+ if (urls := _dict.get('urls')) is not None:
5421
+ args['urls'] = URLS.from_dict(urls)
5422
+ if (embeddable_dashboard := _dict.get('embeddable_dashboard')) is not None:
5423
+ args['embeddable_dashboard'] = embeddable_dashboard
5424
+ if (embeddable_dashboard_full_width := _dict.get('embeddable_dashboard_full_width')) is not None:
5425
+ args['embeddable_dashboard_full_width'] = embeddable_dashboard_full_width
5426
+ if (navigation_order := _dict.get('navigation_order')) is not None:
5427
+ args['navigation_order'] = navigation_order
5428
+ if (not_creatable := _dict.get('not_creatable')) is not None:
5429
+ args['not_creatable'] = not_creatable
5430
+ if (primary_offering_id := _dict.get('primary_offering_id')) is not None:
5431
+ args['primary_offering_id'] = primary_offering_id
5432
+ if (accessible_during_provision := _dict.get('accessible_during_provision')) is not None:
5433
+ args['accessible_during_provision'] = accessible_during_provision
5434
+ if (side_by_side_index := _dict.get('side_by_side_index')) is not None:
5435
+ args['side_by_side_index'] = side_by_side_index
5436
+ if (end_of_service_time := _dict.get('end_of_service_time')) is not None:
5437
+ args['end_of_service_time'] = string_to_datetime(end_of_service_time)
5438
+ if (hidden := _dict.get('hidden')) is not None:
5439
+ args['hidden'] = hidden
5440
+ if (hide_lite_metering := _dict.get('hide_lite_metering')) is not None:
5441
+ args['hide_lite_metering'] = hide_lite_metering
5442
+ if (no_upgrade_next_step := _dict.get('no_upgrade_next_step')) is not None:
5443
+ args['no_upgrade_next_step'] = no_upgrade_next_step
4613
5444
  return cls(**args)
4614
5445
 
4615
5446
  @classmethod
@@ -4621,9 +5452,18 @@ class UIMetaData:
4621
5452
  """Return a json dictionary representing this model."""
4622
5453
  _dict = {}
4623
5454
  if hasattr(self, 'strings') and self.strings is not None:
4624
- _dict['strings'] = {k: v.to_dict() for k, v in self.strings.items()}
5455
+ strings_map = {}
5456
+ for k, v in self.strings.items():
5457
+ if isinstance(v, dict):
5458
+ strings_map[k] = v
5459
+ else:
5460
+ strings_map[k] = v.to_dict()
5461
+ _dict['strings'] = strings_map
4625
5462
  if hasattr(self, 'urls') and self.urls is not None:
4626
- _dict['urls'] = self.urls.to_dict()
5463
+ if isinstance(self.urls, dict):
5464
+ _dict['urls'] = self.urls
5465
+ else:
5466
+ _dict['urls'] = self.urls.to_dict()
4627
5467
  if hasattr(self, 'embeddable_dashboard') and self.embeddable_dashboard is not None:
4628
5468
  _dict['embeddable_dashboard'] = self.embeddable_dashboard
4629
5469
  if hasattr(self, 'embeddable_dashboard_full_width') and self.embeddable_dashboard_full_width is not None:
@@ -4671,21 +5511,22 @@ class UIMetaMedia:
4671
5511
  """
4672
5512
  Media-related metadata.
4673
5513
 
4674
- :attr str caption: (optional) Caption for an image.
4675
- :attr str thumbnail_url: (optional) URL for thumbnail image.
4676
- :attr str type: (optional) Type of media.
4677
- :attr str url: (optional) URL for media.
4678
- :attr Bullets source: (optional) Information related to list delimiters.
5514
+ :param str caption: (optional) Caption for an image.
5515
+ :param str thumbnail_url: (optional) URL for thumbnail image.
5516
+ :param str type: (optional) Type of media.
5517
+ :param str url: (optional) URL for media.
5518
+ :param List[UIMediaSourceMetaData] source: (optional) UI media source data for
5519
+ for UI media data.
4679
5520
  """
4680
5521
 
4681
5522
  def __init__(
4682
5523
  self,
4683
5524
  *,
4684
- caption: str = None,
4685
- thumbnail_url: str = None,
4686
- type: str = None,
4687
- url: str = None,
4688
- source: 'Bullets' = None,
5525
+ caption: Optional[str] = None,
5526
+ thumbnail_url: Optional[str] = None,
5527
+ type: Optional[str] = None,
5528
+ url: Optional[str] = None,
5529
+ source: Optional[List['UIMediaSourceMetaData']] = None,
4689
5530
  ) -> None:
4690
5531
  """
4691
5532
  Initialize a UIMetaMedia object.
@@ -4694,7 +5535,8 @@ class UIMetaMedia:
4694
5535
  :param str thumbnail_url: (optional) URL for thumbnail image.
4695
5536
  :param str type: (optional) Type of media.
4696
5537
  :param str url: (optional) URL for media.
4697
- :param Bullets source: (optional) Information related to list delimiters.
5538
+ :param List[UIMediaSourceMetaData] source: (optional) UI media source data
5539
+ for for UI media data.
4698
5540
  """
4699
5541
  self.caption = caption
4700
5542
  self.thumbnail_url = thumbnail_url
@@ -4706,16 +5548,16 @@ class UIMetaMedia:
4706
5548
  def from_dict(cls, _dict: Dict) -> 'UIMetaMedia':
4707
5549
  """Initialize a UIMetaMedia object from a json dictionary."""
4708
5550
  args = {}
4709
- if 'caption' in _dict:
4710
- args['caption'] = _dict.get('caption')
4711
- if 'thumbnail_url' in _dict:
4712
- args['thumbnail_url'] = _dict.get('thumbnail_url')
4713
- if 'type' in _dict:
4714
- args['type'] = _dict.get('type')
4715
- if 'URL' in _dict:
4716
- args['url'] = _dict.get('URL')
4717
- if 'source' in _dict:
4718
- args['source'] = Bullets.from_dict(_dict.get('source'))
5551
+ if (caption := _dict.get('caption')) is not None:
5552
+ args['caption'] = caption
5553
+ if (thumbnail_url := _dict.get('thumbnail_url')) is not None:
5554
+ args['thumbnail_url'] = thumbnail_url
5555
+ if (type := _dict.get('type')) is not None:
5556
+ args['type'] = type
5557
+ if (url := _dict.get('URL')) is not None:
5558
+ args['url'] = url
5559
+ if (source := _dict.get('source')) is not None:
5560
+ args['source'] = [UIMediaSourceMetaData.from_dict(v) for v in source]
4719
5561
  return cls(**args)
4720
5562
 
4721
5563
  @classmethod
@@ -4735,7 +5577,13 @@ class UIMetaMedia:
4735
5577
  if hasattr(self, 'url') and self.url is not None:
4736
5578
  _dict['URL'] = self.url
4737
5579
  if hasattr(self, 'source') and self.source is not None:
4738
- _dict['source'] = self.source.to_dict()
5580
+ source_list = []
5581
+ for v in self.source:
5582
+ if isinstance(v, dict):
5583
+ source_list.append(v)
5584
+ else:
5585
+ source_list.append(v.to_dict())
5586
+ _dict['source'] = source_list
4739
5587
  return _dict
4740
5588
 
4741
5589
  def _to_dict(self):
@@ -4761,37 +5609,37 @@ class URLS:
4761
5609
  """
4762
5610
  UI based URLs.
4763
5611
 
4764
- :attr str doc_url: (optional) URL for documentation.
4765
- :attr str instructions_url: (optional) URL for usage instructions.
4766
- :attr str api_url: (optional) API URL.
4767
- :attr str create_url: (optional) URL Creation UI / API.
4768
- :attr str sdk_download_url: (optional) URL to downlaod an SDK.
4769
- :attr str terms_url: (optional) URL to the terms of use for your service.
4770
- :attr str custom_create_page_url: (optional) URL to the custom create page for
5612
+ :param str doc_url: (optional) URL for documentation.
5613
+ :param str instructions_url: (optional) URL for usage instructions.
5614
+ :param str api_url: (optional) API URL.
5615
+ :param str create_url: (optional) URL Creation UI / API.
5616
+ :param str sdk_download_url: (optional) URL to downlaod an SDK.
5617
+ :param str terms_url: (optional) URL to the terms of use for your service.
5618
+ :param str custom_create_page_url: (optional) URL to the custom create page for
4771
5619
  your serivce.
4772
- :attr str catalog_details_url: (optional) URL to the catalog details page for
5620
+ :param str catalog_details_url: (optional) URL to the catalog details page for
4773
5621
  your serivce.
4774
- :attr str deprecation_doc_url: (optional) URL for deprecation documentation.
4775
- :attr str dashboard_url: (optional) URL for dashboard.
4776
- :attr str registration_url: (optional) URL for registration.
4777
- :attr str apidocsurl: (optional) URL for API documentation.
5622
+ :param str deprecation_doc_url: (optional) URL for deprecation documentation.
5623
+ :param str dashboard_url: (optional) URL for dashboard.
5624
+ :param str registration_url: (optional) URL for registration.
5625
+ :param str apidocsurl: (optional) URL for API documentation.
4778
5626
  """
4779
5627
 
4780
5628
  def __init__(
4781
5629
  self,
4782
5630
  *,
4783
- doc_url: str = None,
4784
- instructions_url: str = None,
4785
- api_url: str = None,
4786
- create_url: str = None,
4787
- sdk_download_url: str = None,
4788
- terms_url: str = None,
4789
- custom_create_page_url: str = None,
4790
- catalog_details_url: str = None,
4791
- deprecation_doc_url: str = None,
4792
- dashboard_url: str = None,
4793
- registration_url: str = None,
4794
- apidocsurl: str = None,
5631
+ doc_url: Optional[str] = None,
5632
+ instructions_url: Optional[str] = None,
5633
+ api_url: Optional[str] = None,
5634
+ create_url: Optional[str] = None,
5635
+ sdk_download_url: Optional[str] = None,
5636
+ terms_url: Optional[str] = None,
5637
+ custom_create_page_url: Optional[str] = None,
5638
+ catalog_details_url: Optional[str] = None,
5639
+ deprecation_doc_url: Optional[str] = None,
5640
+ dashboard_url: Optional[str] = None,
5641
+ registration_url: Optional[str] = None,
5642
+ apidocsurl: Optional[str] = None,
4795
5643
  ) -> None:
4796
5644
  """
4797
5645
  Initialize a URLS object.
@@ -4829,30 +5677,30 @@ class URLS:
4829
5677
  def from_dict(cls, _dict: Dict) -> 'URLS':
4830
5678
  """Initialize a URLS object from a json dictionary."""
4831
5679
  args = {}
4832
- if 'doc_url' in _dict:
4833
- args['doc_url'] = _dict.get('doc_url')
4834
- if 'instructions_url' in _dict:
4835
- args['instructions_url'] = _dict.get('instructions_url')
4836
- if 'api_url' in _dict:
4837
- args['api_url'] = _dict.get('api_url')
4838
- if 'create_url' in _dict:
4839
- args['create_url'] = _dict.get('create_url')
4840
- if 'sdk_download_url' in _dict:
4841
- args['sdk_download_url'] = _dict.get('sdk_download_url')
4842
- if 'terms_url' in _dict:
4843
- args['terms_url'] = _dict.get('terms_url')
4844
- if 'custom_create_page_url' in _dict:
4845
- args['custom_create_page_url'] = _dict.get('custom_create_page_url')
4846
- if 'catalog_details_url' in _dict:
4847
- args['catalog_details_url'] = _dict.get('catalog_details_url')
4848
- if 'deprecation_doc_url' in _dict:
4849
- args['deprecation_doc_url'] = _dict.get('deprecation_doc_url')
4850
- if 'dashboard_url' in _dict:
4851
- args['dashboard_url'] = _dict.get('dashboard_url')
4852
- if 'registration_url' in _dict:
4853
- args['registration_url'] = _dict.get('registration_url')
4854
- if 'apidocsurl' in _dict:
4855
- args['apidocsurl'] = _dict.get('apidocsurl')
5680
+ if (doc_url := _dict.get('doc_url')) is not None:
5681
+ args['doc_url'] = doc_url
5682
+ if (instructions_url := _dict.get('instructions_url')) is not None:
5683
+ args['instructions_url'] = instructions_url
5684
+ if (api_url := _dict.get('api_url')) is not None:
5685
+ args['api_url'] = api_url
5686
+ if (create_url := _dict.get('create_url')) is not None:
5687
+ args['create_url'] = create_url
5688
+ if (sdk_download_url := _dict.get('sdk_download_url')) is not None:
5689
+ args['sdk_download_url'] = sdk_download_url
5690
+ if (terms_url := _dict.get('terms_url')) is not None:
5691
+ args['terms_url'] = terms_url
5692
+ if (custom_create_page_url := _dict.get('custom_create_page_url')) is not None:
5693
+ args['custom_create_page_url'] = custom_create_page_url
5694
+ if (catalog_details_url := _dict.get('catalog_details_url')) is not None:
5695
+ args['catalog_details_url'] = catalog_details_url
5696
+ if (deprecation_doc_url := _dict.get('deprecation_doc_url')) is not None:
5697
+ args['deprecation_doc_url'] = deprecation_doc_url
5698
+ if (dashboard_url := _dict.get('dashboard_url')) is not None:
5699
+ args['dashboard_url'] = dashboard_url
5700
+ if (registration_url := _dict.get('registration_url')) is not None:
5701
+ args['registration_url'] = registration_url
5702
+ if (apidocsurl := _dict.get('apidocsurl')) is not None:
5703
+ args['apidocsurl'] = apidocsurl
4856
5704
  return cls(**args)
4857
5705
 
4858
5706
  @classmethod
@@ -4912,18 +5760,18 @@ class Visibility:
4912
5760
  """
4913
5761
  Information related to the visibility of a catalog entry.
4914
5762
 
4915
- :attr str restrictions: (optional) This controls the overall visibility. It is
5763
+ :param str restrictions: (optional) This controls the overall visibility. It is
4916
5764
  an enum of *public*, *ibm_only*, and *private*. public means it is visible to
4917
5765
  all. ibm_only means it is visible to all IBM unless their account is explicitly
4918
5766
  excluded. private means it is visible only to the included accounts.
4919
- :attr str owner: (optional) IAM Scope-related information associated with a
5767
+ :param str owner: (optional) IAM Scope-related information associated with a
4920
5768
  catalog entry.
4921
- :attr bool extendable: (optional) Allows the visibility to be extenable.
4922
- :attr VisibilityDetail include: (optional) Visibility details related to a
5769
+ :param bool extendable: (optional) Allows the visibility to be extenable.
5770
+ :param VisibilityDetail include: (optional) Visibility details related to a
4923
5771
  catalog entry.
4924
- :attr VisibilityDetail exclude: (optional) Visibility details related to a
5772
+ :param VisibilityDetail exclude: (optional) Visibility details related to a
4925
5773
  catalog entry.
4926
- :attr bool approved: (optional) Determines whether the owning account has full
5774
+ :param bool approved: (optional) Determines whether the owning account has full
4927
5775
  control over the visibility of the entry such as adding non-IBM accounts to the
4928
5776
  whitelist and making entries `private`, `ibm_only` or `public`.
4929
5777
  """
@@ -4931,12 +5779,12 @@ class Visibility:
4931
5779
  def __init__(
4932
5780
  self,
4933
5781
  *,
4934
- restrictions: str = None,
4935
- owner: str = None,
4936
- extendable: bool = None,
4937
- include: 'VisibilityDetail' = None,
4938
- exclude: 'VisibilityDetail' = None,
4939
- approved: bool = None,
5782
+ restrictions: Optional[str] = None,
5783
+ owner: Optional[str] = None,
5784
+ extendable: Optional[bool] = None,
5785
+ include: Optional['VisibilityDetail'] = None,
5786
+ exclude: Optional['VisibilityDetail'] = None,
5787
+ approved: Optional[bool] = None,
4940
5788
  ) -> None:
4941
5789
  """
4942
5790
  Initialize a Visibility object.
@@ -4958,18 +5806,18 @@ class Visibility:
4958
5806
  def from_dict(cls, _dict: Dict) -> 'Visibility':
4959
5807
  """Initialize a Visibility object from a json dictionary."""
4960
5808
  args = {}
4961
- if 'restrictions' in _dict:
4962
- args['restrictions'] = _dict.get('restrictions')
4963
- if 'owner' in _dict:
4964
- args['owner'] = _dict.get('owner')
4965
- if 'extendable' in _dict:
4966
- args['extendable'] = _dict.get('extendable')
4967
- if 'include' in _dict:
4968
- args['include'] = VisibilityDetail.from_dict(_dict.get('include'))
4969
- if 'exclude' in _dict:
4970
- args['exclude'] = VisibilityDetail.from_dict(_dict.get('exclude'))
4971
- if 'approved' in _dict:
4972
- args['approved'] = _dict.get('approved')
5809
+ if (restrictions := _dict.get('restrictions')) is not None:
5810
+ args['restrictions'] = restrictions
5811
+ if (owner := _dict.get('owner')) is not None:
5812
+ args['owner'] = owner
5813
+ if (extendable := _dict.get('extendable')) is not None:
5814
+ args['extendable'] = extendable
5815
+ if (include := _dict.get('include')) is not None:
5816
+ args['include'] = VisibilityDetail.from_dict(include)
5817
+ if (exclude := _dict.get('exclude')) is not None:
5818
+ args['exclude'] = VisibilityDetail.from_dict(exclude)
5819
+ if (approved := _dict.get('approved')) is not None:
5820
+ args['approved'] = approved
4973
5821
  return cls(**args)
4974
5822
 
4975
5823
  @classmethod
@@ -4987,9 +5835,15 @@ class Visibility:
4987
5835
  if hasattr(self, 'extendable') and self.extendable is not None:
4988
5836
  _dict['extendable'] = self.extendable
4989
5837
  if hasattr(self, 'include') and self.include is not None:
4990
- _dict['include'] = self.include.to_dict()
5838
+ if isinstance(self.include, dict):
5839
+ _dict['include'] = self.include
5840
+ else:
5841
+ _dict['include'] = self.include.to_dict()
4991
5842
  if hasattr(self, 'exclude') and self.exclude is not None:
4992
- _dict['exclude'] = self.exclude.to_dict()
5843
+ if isinstance(self.exclude, dict):
5844
+ _dict['exclude'] = self.exclude
5845
+ else:
5846
+ _dict['exclude'] = self.exclude.to_dict()
4993
5847
  if hasattr(self, 'approved') and getattr(self, 'approved') is not None:
4994
5848
  _dict['approved'] = getattr(self, 'approved')
4995
5849
  return _dict
@@ -5017,11 +5871,14 @@ class VisibilityDetail:
5017
5871
  """
5018
5872
  Visibility details related to a catalog entry.
5019
5873
 
5020
- :attr VisibilityDetailAccounts accounts: Information related to the accounts for
5021
- which a catalog entry is visible.
5874
+ :param VisibilityDetailAccounts accounts: Information related to the accounts
5875
+ for which a catalog entry is visible.
5022
5876
  """
5023
5877
 
5024
- def __init__(self, accounts: 'VisibilityDetailAccounts') -> None:
5878
+ def __init__(
5879
+ self,
5880
+ accounts: 'VisibilityDetailAccounts',
5881
+ ) -> None:
5025
5882
  """
5026
5883
  Initialize a VisibilityDetail object.
5027
5884
 
@@ -5034,8 +5891,8 @@ class VisibilityDetail:
5034
5891
  def from_dict(cls, _dict: Dict) -> 'VisibilityDetail':
5035
5892
  """Initialize a VisibilityDetail object from a json dictionary."""
5036
5893
  args = {}
5037
- if 'accounts' in _dict:
5038
- args['accounts'] = VisibilityDetailAccounts.from_dict(_dict.get('accounts'))
5894
+ if (accounts := _dict.get('accounts')) is not None:
5895
+ args['accounts'] = VisibilityDetailAccounts.from_dict(accounts)
5039
5896
  else:
5040
5897
  raise ValueError('Required property \'accounts\' not present in VisibilityDetail JSON')
5041
5898
  return cls(**args)
@@ -5049,7 +5906,10 @@ class VisibilityDetail:
5049
5906
  """Return a json dictionary representing this model."""
5050
5907
  _dict = {}
5051
5908
  if hasattr(self, 'accounts') and self.accounts is not None:
5052
- _dict['accounts'] = self.accounts.to_dict()
5909
+ if isinstance(self.accounts, dict):
5910
+ _dict['accounts'] = self.accounts
5911
+ else:
5912
+ _dict['accounts'] = self.accounts.to_dict()
5053
5913
  return _dict
5054
5914
 
5055
5915
  def _to_dict(self):
@@ -5075,12 +5935,16 @@ class VisibilityDetailAccounts:
5075
5935
  """
5076
5936
  Information related to the accounts for which a catalog entry is visible.
5077
5937
 
5078
- :attr str accountid: (optional) (_accountid_) is the GUID of the account and the
5079
- value is the scope of who set it. For setting visibility use "" as the value. It
5080
- is replaced with the owner scope when saved.
5938
+ :param str accountid: (optional) (_accountid_) is the GUID of the account and
5939
+ the value is the scope of who set it. For setting visibility use "" as the
5940
+ value. It is replaced with the owner scope when saved.
5081
5941
  """
5082
5942
 
5083
- def __init__(self, *, accountid: str = None) -> None:
5943
+ def __init__(
5944
+ self,
5945
+ *,
5946
+ accountid: Optional[str] = None,
5947
+ ) -> None:
5084
5948
  """
5085
5949
  Initialize a VisibilityDetailAccounts object.
5086
5950
 
@@ -5094,8 +5958,8 @@ class VisibilityDetailAccounts:
5094
5958
  def from_dict(cls, _dict: Dict) -> 'VisibilityDetailAccounts':
5095
5959
  """Initialize a VisibilityDetailAccounts object from a json dictionary."""
5096
5960
  args = {}
5097
- if '_accountid_' in _dict:
5098
- args['accountid'] = _dict.get('_accountid_')
5961
+ if (accountid := _dict.get('_accountid_')) is not None:
5962
+ args['accountid'] = accountid
5099
5963
  return cls(**args)
5100
5964
 
5101
5965
  @classmethod