lightning-sdk 0.2.18__py3-none-any.whl → 0.2.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. lightning_sdk/__init__.py +1 -1
  2. lightning_sdk/api/deployment_api.py +2 -0
  3. lightning_sdk/api/license_api.py +28 -6
  4. lightning_sdk/cli/deploy/_auth.py +11 -19
  5. lightning_sdk/cli/entrypoint.py +20 -2
  6. lightning_sdk/deployment/deployment.py +2 -0
  7. lightning_sdk/lightning_cloud/login.py +2 -2
  8. lightning_sdk/lightning_cloud/openapi/__init__.py +10 -2
  9. lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
  10. lightning_sdk/lightning_cloud/openapi/api/blog_posts_service_api.py +533 -0
  11. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +113 -0
  12. lightning_sdk/lightning_cloud/openapi/api/jobs_service_api.py +121 -0
  13. lightning_sdk/lightning_cloud/openapi/models/__init__.py +9 -2
  14. lightning_sdk/lightning_cloud/openapi/models/alertingevents_id_body.py +409 -0
  15. lightning_sdk/lightning_cloud/openapi/models/blogposts_id_body.py +253 -0
  16. lightning_sdk/lightning_cloud/openapi/models/deployments_id_body.py +27 -1
  17. lightning_sdk/lightning_cloud/openapi/models/id_codeconfig_body.py +29 -3
  18. lightning_sdk/lightning_cloud/openapi/models/id_transfer_body.py +123 -0
  19. lightning_sdk/lightning_cloud/openapi/models/orgs_id_body.py +157 -157
  20. lightning_sdk/lightning_cloud/openapi/models/projects_id_body.py +79 -1
  21. lightning_sdk/lightning_cloud/openapi/models/update.py +27 -1
  22. lightning_sdk/lightning_cloud/openapi/models/v1_author.py +201 -0
  23. lightning_sdk/lightning_cloud/openapi/models/v1_blog_post.py +383 -0
  24. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space.py +27 -1
  25. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template.py +27 -1
  26. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +27 -1
  27. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_state.py +1 -0
  28. lightning_sdk/lightning_cloud/openapi/models/v1_create_blog_post_request.py +253 -0
  29. lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +27 -1
  30. lightning_sdk/lightning_cloud/openapi/models/v1_daily_usage.py +81 -3
  31. lightning_sdk/lightning_cloud/openapi/models/v1_data_connection.py +79 -1
  32. lightning_sdk/lightning_cloud/openapi/models/v1_delete_blog_post_response.py +123 -0
  33. lightning_sdk/lightning_cloud/openapi/models/v1_deployment.py +27 -1
  34. lightning_sdk/lightning_cloud/openapi/models/v1_deployment_alerting_policy_type.py +1 -0
  35. lightning_sdk/lightning_cloud/openapi/models/v1_get_organization_storage_metadata_response.py +157 -1
  36. lightning_sdk/lightning_cloud/openapi/models/v1_get_project_storage_metadata_response.py +237 -3
  37. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_storage_breakdown_response.py +53 -1
  38. lightning_sdk/lightning_cloud/openapi/models/v1_google_cloud_direct_v1.py +53 -1
  39. lightning_sdk/lightning_cloud/openapi/models/v1_list_blog_posts_response.py +175 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_membership.py +27 -1
  41. lightning_sdk/lightning_cloud/openapi/models/v1_message.py +27 -1
  42. lightning_sdk/lightning_cloud/openapi/models/v1_notification_type.py +1 -0
  43. lightning_sdk/lightning_cloud/openapi/models/v1_organization.py +261 -157
  44. lightning_sdk/lightning_cloud/openapi/models/v1_product_license.py +27 -1
  45. lightning_sdk/lightning_cloud/openapi/models/v1_project.py +53 -1
  46. lightning_sdk/lightning_cloud/openapi/models/v1_project_membership.py +27 -1
  47. lightning_sdk/lightning_cloud/openapi/models/v1_project_settings.py +79 -1
  48. lightning_sdk/lightning_cloud/openapi/models/v1_project_storage.py +199 -17
  49. lightning_sdk/lightning_cloud/openapi/models/v1_rule_resource.py +1 -0
  50. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset.py +27 -1
  51. lightning_sdk/lightning_cloud/openapi/models/v1_storage_asset_type.py +4 -0
  52. lightning_sdk/lightning_cloud/openapi/models/v1_transaction.py +27 -1
  53. lightning_sdk/lightning_cloud/openapi/models/v1_transfer_cloud_space_response.py +97 -0
  54. lightning_sdk/lightning_cloud/openapi/models/v1_usage.py +105 -27
  55. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +249 -145
  56. lightning_sdk/lightning_cloud/openapi/models/v1_volume.py +499 -31
  57. lightning_sdk/lightning_cloud/rest_client.py +13 -11
  58. lightning_sdk/lightning_cloud/source_code/logs_socket_api.py +8 -3
  59. lightning_sdk/serve.py +1 -0
  60. lightning_sdk/services/license.py +148 -27
  61. {lightning_sdk-0.2.18.dist-info → lightning_sdk-0.2.20.dist-info}/METADATA +1 -1
  62. {lightning_sdk-0.2.18.dist-info → lightning_sdk-0.2.20.dist-info}/RECORD +66 -58
  63. lightning_sdk/lightning_cloud/openapi/models/v1_ebs.py +0 -279
  64. lightning_sdk/lightning_cloud/openapi/models/v1_reservation_billing_session.py +0 -279
  65. {lightning_sdk-0.2.18.dist-info → lightning_sdk-0.2.20.dist-info}/LICENSE +0 -0
  66. {lightning_sdk-0.2.18.dist-info → lightning_sdk-0.2.20.dist-info}/WHEEL +0 -0
  67. {lightning_sdk-0.2.18.dist-info → lightning_sdk-0.2.20.dist-info}/entry_points.txt +0 -0
  68. {lightning_sdk-0.2.18.dist-info → lightning_sdk-0.2.20.dist-info}/top_level.txt +0 -0
@@ -46,6 +46,7 @@ class V1StorageAsset(object):
46
46
  'id': 'str',
47
47
  'name': 'str',
48
48
  'storage_bytes': 'str',
49
+ 'sub_type': 'str',
49
50
  'type': 'V1StorageAssetType'
50
51
  }
51
52
 
@@ -55,16 +56,18 @@ class V1StorageAsset(object):
55
56
  'id': 'id',
56
57
  'name': 'name',
57
58
  'storage_bytes': 'storageBytes',
59
+ 'sub_type': 'subType',
58
60
  'type': 'type'
59
61
  }
60
62
 
61
- def __init__(self, created_at: 'datetime' =None, created_by: 'str' =None, id: 'str' =None, name: 'str' =None, storage_bytes: 'str' =None, type: 'V1StorageAssetType' =None): # noqa: E501
63
+ def __init__(self, created_at: 'datetime' =None, created_by: 'str' =None, id: 'str' =None, name: 'str' =None, storage_bytes: 'str' =None, sub_type: 'str' =None, type: 'V1StorageAssetType' =None): # noqa: E501
62
64
  """V1StorageAsset - a model defined in Swagger""" # noqa: E501
63
65
  self._created_at = None
64
66
  self._created_by = None
65
67
  self._id = None
66
68
  self._name = None
67
69
  self._storage_bytes = None
70
+ self._sub_type = None
68
71
  self._type = None
69
72
  self.discriminator = None
70
73
  if created_at is not None:
@@ -77,6 +80,8 @@ class V1StorageAsset(object):
77
80
  self.name = name
78
81
  if storage_bytes is not None:
79
82
  self.storage_bytes = storage_bytes
83
+ if sub_type is not None:
84
+ self.sub_type = sub_type
80
85
  if type is not None:
81
86
  self.type = type
82
87
 
@@ -185,6 +190,27 @@ class V1StorageAsset(object):
185
190
 
186
191
  self._storage_bytes = storage_bytes
187
192
 
193
+ @property
194
+ def sub_type(self) -> 'str':
195
+ """Gets the sub_type of this V1StorageAsset. # noqa: E501
196
+
197
+
198
+ :return: The sub_type of this V1StorageAsset. # noqa: E501
199
+ :rtype: str
200
+ """
201
+ return self._sub_type
202
+
203
+ @sub_type.setter
204
+ def sub_type(self, sub_type: 'str'):
205
+ """Sets the sub_type of this V1StorageAsset.
206
+
207
+
208
+ :param sub_type: The sub_type of this V1StorageAsset. # noqa: E501
209
+ :type: str
210
+ """
211
+
212
+ self._sub_type = sub_type
213
+
188
214
  @property
189
215
  def type(self) -> 'V1StorageAssetType':
190
216
  """Gets the type of this V1StorageAsset. # noqa: E501
@@ -41,6 +41,10 @@ class V1StorageAssetType(object):
41
41
  DATA_CONNECTION = "DATA_CONNECTION"
42
42
  CLOUDSPACE = "CLOUDSPACE"
43
43
  JOB = "JOB"
44
+ FOLDER = "FOLDER"
45
+ UPLOAD = "UPLOAD"
46
+ CONTAINER_REPOSITORY = "CONTAINER_REPOSITORY"
47
+ MODEL = "MODEL"
44
48
  """
45
49
  Attributes:
46
50
  swagger_types (dict): The key is attribute name
@@ -44,6 +44,7 @@ class V1Transaction(object):
44
44
  'amount': 'float',
45
45
  'created_at': 'datetime',
46
46
  'display_name': 'str',
47
+ 'project_name': 'str',
47
48
  'type': 'str'
48
49
  }
49
50
 
@@ -51,14 +52,16 @@ class V1Transaction(object):
51
52
  'amount': 'amount',
52
53
  'created_at': 'createdAt',
53
54
  'display_name': 'displayName',
55
+ 'project_name': 'projectName',
54
56
  'type': 'type'
55
57
  }
56
58
 
57
- def __init__(self, amount: 'float' =None, created_at: 'datetime' =None, display_name: 'str' =None, type: 'str' =None): # noqa: E501
59
+ def __init__(self, amount: 'float' =None, created_at: 'datetime' =None, display_name: 'str' =None, project_name: 'str' =None, type: 'str' =None): # noqa: E501
58
60
  """V1Transaction - a model defined in Swagger""" # noqa: E501
59
61
  self._amount = None
60
62
  self._created_at = None
61
63
  self._display_name = None
64
+ self._project_name = None
62
65
  self._type = None
63
66
  self.discriminator = None
64
67
  if amount is not None:
@@ -67,6 +70,8 @@ class V1Transaction(object):
67
70
  self.created_at = created_at
68
71
  if display_name is not None:
69
72
  self.display_name = display_name
73
+ if project_name is not None:
74
+ self.project_name = project_name
70
75
  if type is not None:
71
76
  self.type = type
72
77
 
@@ -133,6 +138,27 @@ class V1Transaction(object):
133
138
 
134
139
  self._display_name = display_name
135
140
 
141
+ @property
142
+ def project_name(self) -> 'str':
143
+ """Gets the project_name of this V1Transaction. # noqa: E501
144
+
145
+
146
+ :return: The project_name of this V1Transaction. # noqa: E501
147
+ :rtype: str
148
+ """
149
+ return self._project_name
150
+
151
+ @project_name.setter
152
+ def project_name(self, project_name: 'str'):
153
+ """Sets the project_name of this V1Transaction.
154
+
155
+
156
+ :param project_name: The project_name of this V1Transaction. # noqa: E501
157
+ :type: str
158
+ """
159
+
160
+ self._project_name = project_name
161
+
136
162
  @property
137
163
  def type(self) -> 'str':
138
164
  """Gets the type of this V1Transaction. # noqa: E501
@@ -0,0 +1,97 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1TransferCloudSpaceResponse(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ }
45
+
46
+ attribute_map = {
47
+ }
48
+
49
+ def __init__(self): # noqa: E501
50
+ """V1TransferCloudSpaceResponse - a model defined in Swagger""" # noqa: E501
51
+ self.discriminator = None
52
+
53
+ def to_dict(self) -> dict:
54
+ """Returns the model properties as a dict"""
55
+ result = {}
56
+
57
+ for attr, _ in six.iteritems(self.swagger_types):
58
+ value = getattr(self, attr)
59
+ if isinstance(value, list):
60
+ result[attr] = list(map(
61
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
62
+ value
63
+ ))
64
+ elif hasattr(value, "to_dict"):
65
+ result[attr] = value.to_dict()
66
+ elif isinstance(value, dict):
67
+ result[attr] = dict(map(
68
+ lambda item: (item[0], item[1].to_dict())
69
+ if hasattr(item[1], "to_dict") else item,
70
+ value.items()
71
+ ))
72
+ else:
73
+ result[attr] = value
74
+ if issubclass(V1TransferCloudSpaceResponse, dict):
75
+ for key, value in self.items():
76
+ result[key] = value
77
+
78
+ return result
79
+
80
+ def to_str(self) -> str:
81
+ """Returns the string representation of the model"""
82
+ return pprint.pformat(self.to_dict())
83
+
84
+ def __repr__(self) -> str:
85
+ """For `print` and `pprint`"""
86
+ return self.to_str()
87
+
88
+ def __eq__(self, other: 'V1TransferCloudSpaceResponse') -> bool:
89
+ """Returns true if both objects are equal"""
90
+ if not isinstance(other, V1TransferCloudSpaceResponse):
91
+ return False
92
+
93
+ return self.__dict__ == other.__dict__
94
+
95
+ def __ne__(self, other: 'V1TransferCloudSpaceResponse') -> bool:
96
+ """Returns true if both objects are not equal"""
97
+ return not self == other
@@ -48,14 +48,17 @@ class V1Usage(object):
48
48
  'deleted_at': 'datetime',
49
49
  'free': 'bool',
50
50
  'id': 'str',
51
+ 'instance_type': 'str',
51
52
  'name': 'str',
52
53
  'project_id': 'str',
53
- 'reservations': 'list[V1ReservationBillingSession]',
54
54
  'resource_type': 'str',
55
55
  'saved_cost': 'float',
56
56
  'session_ended_at': 'datetime',
57
57
  'session_started_at': 'datetime',
58
58
  'spot': 'bool',
59
+ 'total_completion_tokens': 'str',
60
+ 'total_num_messages': 'str',
61
+ 'total_prompt_tokens': 'str',
59
62
  'user_id': 'str'
60
63
  }
61
64
 
@@ -67,18 +70,21 @@ class V1Usage(object):
67
70
  'deleted_at': 'deletedAt',
68
71
  'free': 'free',
69
72
  'id': 'id',
73
+ 'instance_type': 'instanceType',
70
74
  'name': 'name',
71
75
  'project_id': 'projectId',
72
- 'reservations': 'reservations',
73
76
  'resource_type': 'resourceType',
74
77
  'saved_cost': 'savedCost',
75
78
  'session_ended_at': 'sessionEndedAt',
76
79
  'session_started_at': 'sessionStartedAt',
77
80
  'spot': 'spot',
81
+ 'total_completion_tokens': 'totalCompletionTokens',
82
+ 'total_num_messages': 'totalNumMessages',
83
+ 'total_prompt_tokens': 'totalPromptTokens',
78
84
  'user_id': 'userId'
79
85
  }
80
86
 
81
- def __init__(self, billed_time_seconds: 'str' =None, cluster_id: 'str' =None, cost: 'float' =None, created_at: 'datetime' =None, deleted_at: 'datetime' =None, free: 'bool' =None, id: 'str' =None, name: 'str' =None, project_id: 'str' =None, reservations: 'list[V1ReservationBillingSession]' =None, resource_type: 'str' =None, saved_cost: 'float' =None, session_ended_at: 'datetime' =None, session_started_at: 'datetime' =None, spot: 'bool' =None, user_id: 'str' =None): # noqa: E501
87
+ def __init__(self, billed_time_seconds: 'str' =None, cluster_id: 'str' =None, cost: 'float' =None, created_at: 'datetime' =None, deleted_at: 'datetime' =None, free: 'bool' =None, id: 'str' =None, instance_type: 'str' =None, name: 'str' =None, project_id: 'str' =None, resource_type: 'str' =None, saved_cost: 'float' =None, session_ended_at: 'datetime' =None, session_started_at: 'datetime' =None, spot: 'bool' =None, total_completion_tokens: 'str' =None, total_num_messages: 'str' =None, total_prompt_tokens: 'str' =None, user_id: 'str' =None): # noqa: E501
82
88
  """V1Usage - a model defined in Swagger""" # noqa: E501
83
89
  self._billed_time_seconds = None
84
90
  self._cluster_id = None
@@ -87,14 +93,17 @@ class V1Usage(object):
87
93
  self._deleted_at = None
88
94
  self._free = None
89
95
  self._id = None
96
+ self._instance_type = None
90
97
  self._name = None
91
98
  self._project_id = None
92
- self._reservations = None
93
99
  self._resource_type = None
94
100
  self._saved_cost = None
95
101
  self._session_ended_at = None
96
102
  self._session_started_at = None
97
103
  self._spot = None
104
+ self._total_completion_tokens = None
105
+ self._total_num_messages = None
106
+ self._total_prompt_tokens = None
98
107
  self._user_id = None
99
108
  self.discriminator = None
100
109
  if billed_time_seconds is not None:
@@ -111,12 +120,12 @@ class V1Usage(object):
111
120
  self.free = free
112
121
  if id is not None:
113
122
  self.id = id
123
+ if instance_type is not None:
124
+ self.instance_type = instance_type
114
125
  if name is not None:
115
126
  self.name = name
116
127
  if project_id is not None:
117
128
  self.project_id = project_id
118
- if reservations is not None:
119
- self.reservations = reservations
120
129
  if resource_type is not None:
121
130
  self.resource_type = resource_type
122
131
  if saved_cost is not None:
@@ -127,6 +136,12 @@ class V1Usage(object):
127
136
  self.session_started_at = session_started_at
128
137
  if spot is not None:
129
138
  self.spot = spot
139
+ if total_completion_tokens is not None:
140
+ self.total_completion_tokens = total_completion_tokens
141
+ if total_num_messages is not None:
142
+ self.total_num_messages = total_num_messages
143
+ if total_prompt_tokens is not None:
144
+ self.total_prompt_tokens = total_prompt_tokens
130
145
  if user_id is not None:
131
146
  self.user_id = user_id
132
147
 
@@ -277,6 +292,27 @@ class V1Usage(object):
277
292
 
278
293
  self._id = id
279
294
 
295
+ @property
296
+ def instance_type(self) -> 'str':
297
+ """Gets the instance_type of this V1Usage. # noqa: E501
298
+
299
+
300
+ :return: The instance_type of this V1Usage. # noqa: E501
301
+ :rtype: str
302
+ """
303
+ return self._instance_type
304
+
305
+ @instance_type.setter
306
+ def instance_type(self, instance_type: 'str'):
307
+ """Sets the instance_type of this V1Usage.
308
+
309
+
310
+ :param instance_type: The instance_type of this V1Usage. # noqa: E501
311
+ :type: str
312
+ """
313
+
314
+ self._instance_type = instance_type
315
+
280
316
  @property
281
317
  def name(self) -> 'str':
282
318
  """Gets the name of this V1Usage. # noqa: E501
@@ -319,27 +355,6 @@ class V1Usage(object):
319
355
 
320
356
  self._project_id = project_id
321
357
 
322
- @property
323
- def reservations(self) -> 'list[V1ReservationBillingSession]':
324
- """Gets the reservations of this V1Usage. # noqa: E501
325
-
326
-
327
- :return: The reservations of this V1Usage. # noqa: E501
328
- :rtype: list[V1ReservationBillingSession]
329
- """
330
- return self._reservations
331
-
332
- @reservations.setter
333
- def reservations(self, reservations: 'list[V1ReservationBillingSession]'):
334
- """Sets the reservations of this V1Usage.
335
-
336
-
337
- :param reservations: The reservations of this V1Usage. # noqa: E501
338
- :type: list[V1ReservationBillingSession]
339
- """
340
-
341
- self._reservations = reservations
342
-
343
358
  @property
344
359
  def resource_type(self) -> 'str':
345
360
  """Gets the resource_type of this V1Usage. # noqa: E501
@@ -445,6 +460,69 @@ class V1Usage(object):
445
460
 
446
461
  self._spot = spot
447
462
 
463
+ @property
464
+ def total_completion_tokens(self) -> 'str':
465
+ """Gets the total_completion_tokens of this V1Usage. # noqa: E501
466
+
467
+
468
+ :return: The total_completion_tokens of this V1Usage. # noqa: E501
469
+ :rtype: str
470
+ """
471
+ return self._total_completion_tokens
472
+
473
+ @total_completion_tokens.setter
474
+ def total_completion_tokens(self, total_completion_tokens: 'str'):
475
+ """Sets the total_completion_tokens of this V1Usage.
476
+
477
+
478
+ :param total_completion_tokens: The total_completion_tokens of this V1Usage. # noqa: E501
479
+ :type: str
480
+ """
481
+
482
+ self._total_completion_tokens = total_completion_tokens
483
+
484
+ @property
485
+ def total_num_messages(self) -> 'str':
486
+ """Gets the total_num_messages of this V1Usage. # noqa: E501
487
+
488
+
489
+ :return: The total_num_messages of this V1Usage. # noqa: E501
490
+ :rtype: str
491
+ """
492
+ return self._total_num_messages
493
+
494
+ @total_num_messages.setter
495
+ def total_num_messages(self, total_num_messages: 'str'):
496
+ """Sets the total_num_messages of this V1Usage.
497
+
498
+
499
+ :param total_num_messages: The total_num_messages of this V1Usage. # noqa: E501
500
+ :type: str
501
+ """
502
+
503
+ self._total_num_messages = total_num_messages
504
+
505
+ @property
506
+ def total_prompt_tokens(self) -> 'str':
507
+ """Gets the total_prompt_tokens of this V1Usage. # noqa: E501
508
+
509
+
510
+ :return: The total_prompt_tokens of this V1Usage. # noqa: E501
511
+ :rtype: str
512
+ """
513
+ return self._total_prompt_tokens
514
+
515
+ @total_prompt_tokens.setter
516
+ def total_prompt_tokens(self, total_prompt_tokens: 'str'):
517
+ """Sets the total_prompt_tokens of this V1Usage.
518
+
519
+
520
+ :param total_prompt_tokens: The total_prompt_tokens of this V1Usage. # noqa: E501
521
+ :type: str
522
+ """
523
+
524
+ self._total_prompt_tokens = total_prompt_tokens
525
+
448
526
  @property
449
527
  def user_id(self) -> 'str':
450
528
  """Gets the user_id of this V1Usage. # noqa: E501