hyperstack 1.25.0a0__py3-none-any.whl → 1.41.0a0__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 (225) hide show
  1. hyperstack/__init__.py +79 -131
  2. hyperstack/api/__init__.py +2 -0
  3. hyperstack/api/alive_api.py +240 -0
  4. hyperstack/api/api_key_api.py +16 -20
  5. hyperstack/api/assigning_member_role_api.py +15 -17
  6. hyperstack/api/auth_api.py +1050 -5
  7. hyperstack/api/beta_access_api.py +856 -0
  8. hyperstack/api/billing_api.py +6461 -673
  9. hyperstack/api/calculate_api.py +8 -9
  10. hyperstack/api/callbacks_api.py +120 -126
  11. hyperstack/api/cluster_events_api.py +1 -2
  12. hyperstack/api/clusters_api.py +2492 -146
  13. hyperstack/api/compliance_api.py +14 -18
  14. hyperstack/api/credit_api.py +17 -15
  15. hyperstack/api/customer_contract_api.py +30 -33
  16. hyperstack/api/dashboard_api.py +4 -5
  17. hyperstack/api/deployment_api.py +4 -8
  18. hyperstack/api/environment_api.py +285 -16
  19. hyperstack/api/firewall_attachment_api.py +11 -9
  20. hyperstack/api/firewalls_api.py +341 -347
  21. hyperstack/api/flavor_api.py +4 -5
  22. hyperstack/api/floating_ip_api.py +50 -49
  23. hyperstack/api/gpu_api.py +1 -2
  24. hyperstack/api/image_api.py +35 -39
  25. hyperstack/api/invite_api.py +288 -18
  26. hyperstack/api/keypair_api.py +22 -26
  27. hyperstack/api/organization_api.py +12 -15
  28. hyperstack/api/partner_config_api.py +564 -0
  29. hyperstack/api/payment_api.py +299 -18
  30. hyperstack/api/permission_api.py +4 -5
  31. hyperstack/api/policy_api.py +4 -5
  32. hyperstack/api/pricebook_api.py +14 -12
  33. hyperstack/api/profile_api.py +13 -17
  34. hyperstack/api/rbac_role_api.py +20 -25
  35. hyperstack/api/region_api.py +7 -8
  36. hyperstack/api/security_rules_api.py +1 -2
  37. hyperstack/api/snapshot_events_api.py +1 -2
  38. hyperstack/api/snapshots_api.py +166 -172
  39. hyperstack/api/stock_api.py +4 -5
  40. hyperstack/api/template_api.py +14 -19
  41. hyperstack/api/user_api.py +55 -49
  42. hyperstack/api/user_detail_choice_api.py +1 -2
  43. hyperstack/api/user_permission_api.py +8 -10
  44. hyperstack/api/virtual_machine_api.py +1529 -929
  45. hyperstack/api/virtual_machine_events_api.py +21 -22
  46. hyperstack/api/vnc_url_api.py +54 -50
  47. hyperstack/api/volume_api.py +340 -40
  48. hyperstack/api/volume_attachment_api.py +342 -42
  49. hyperstack/api_client.py +1 -1
  50. hyperstack/configuration.py +1 -11
  51. hyperstack/models/__init__.py +76 -130
  52. hyperstack/models/{environment_fieldsfor_volume.py → access_token_field.py} +7 -7
  53. hyperstack/models/attach_volume_fields.py +6 -2
  54. hyperstack/models/attach_volumes_payload.py +4 -2
  55. hyperstack/models/{virtual_machine_usage.py → attachments_fields_for_volume.py} +13 -11
  56. hyperstack/models/{flavor_vm_fields.py → attributes.py} +15 -18
  57. hyperstack/models/auth_get_token_response_model.py +4 -6
  58. hyperstack/models/{future_node_model.py → beta_access_request_fields.py} +27 -25
  59. hyperstack/models/{create_gpu.py → beta_access_request_payload.py} +9 -11
  60. hyperstack/models/{create_discount_response.py → beta_access_request_response_model.py} +11 -11
  61. hyperstack/models/{export_billing_data_request.py → beta_access_status_item.py} +20 -23
  62. hyperstack/models/{get_all_discount_for_all_organization_response.py → beta_access_status_response_model.py} +15 -15
  63. hyperstack/models/{exclude_billing_post_response.py → billing_history.py} +13 -11
  64. hyperstack/models/billing_history_data_synthesis_details.py +105 -0
  65. hyperstack/models/{vm_usage_response.py → billing_history_fine_tuning.py} +23 -19
  66. hyperstack/models/billing_history_model_evalutation_details.py +105 -0
  67. hyperstack/models/{get_all_discounts_fields.py → billing_history_serverless_inference.py} +23 -24
  68. hyperstack/models/billing_history_serverless_inference_details.py +105 -0
  69. hyperstack/models/{billingmetricesfields.py → billing_metrices_fields.py} +4 -4
  70. hyperstack/models/{billingmetricesresponse.py → billing_metrices_response.py} +7 -7
  71. hyperstack/models/cluster_fields.py +27 -9
  72. hyperstack/models/{add_update_flavor_organization_payload.py → cluster_flavor_fields.py} +28 -26
  73. hyperstack/models/{historical_instances_fields.py → cluster_node_fields.py} +24 -22
  74. hyperstack/models/{internal_instance_flavor_fields.py → cluster_node_group_fields.py} +17 -17
  75. hyperstack/models/{create_update_policy_response_model.py → cluster_node_groups_create_response.py} +21 -11
  76. hyperstack/models/{create_update_permission_response_model.py → cluster_node_groups_get_response.py} +11 -11
  77. hyperstack/models/{auth_request_login_response_model.py → cluster_node_groups_list_response.py} +15 -11
  78. hyperstack/models/{contract_eligible_instance_fields.py → cluster_node_instance_fields.py} +13 -11
  79. hyperstack/models/{image_logos.py → cluster_nodes_list_response.py} +14 -14
  80. hyperstack/models/{internal_environment_fields.py → cluster_version.py} +13 -9
  81. hyperstack/models/cluster_versions.py +10 -2
  82. hyperstack/models/{future_nodes_stock_model.py → colors.py} +17 -15
  83. hyperstack/models/contract_discount_plan_fields.py +3 -1
  84. hyperstack/models/contract_instance_fields.py +7 -1
  85. hyperstack/models/{future_node_response_model.py → create_cluster_node_fields.py} +23 -18
  86. hyperstack/models/{update_gpu.py → create_cluster_node_group_payload.py} +12 -11
  87. hyperstack/models/create_cluster_payload.py +31 -8
  88. hyperstack/models/create_environment.py +1 -1
  89. hyperstack/models/create_instances_payload.py +7 -7
  90. hyperstack/models/create_profile_payload.py +1 -1
  91. hyperstack/models/create_snapshot_payload.py +2 -4
  92. hyperstack/models/create_volume_payload.py +1 -1
  93. hyperstack/models/data_synthesis_billing_history_details_response_schema.py +95 -0
  94. hyperstack/models/{deployment_fieldsforstartdeployments.py → deployment_fields_for_start_deployments.py} +4 -4
  95. hyperstack/models/{editlabelofanexisting_vm_payload.py → edit_label_of_an_existing_vm_payload.py} +4 -4
  96. hyperstack/models/environment_features.py +14 -2
  97. hyperstack/models/{node_stocks_payload.py → environment_fields_for_volume.py} +10 -12
  98. hyperstack/models/flavor_fields.py +3 -1
  99. hyperstack/models/{customer_fields.py → flavor_label_fields.py} +7 -7
  100. hyperstack/models/{getcreditandthresholdinfo.py → get_credit_and_threshold_info.py} +4 -4
  101. hyperstack/models/{getcreditandthresholdinfoinresponse.py → get_credit_and_threshold_info_in_response.py} +7 -7
  102. hyperstack/models/{region_payload.py → get_instance_logs_response.py} +7 -9
  103. hyperstack/models/instance_fields.py +8 -4
  104. hyperstack/models/instance_flavor_fields.py +13 -1
  105. hyperstack/models/{flavor_response.py → keypair_environment_features.py} +20 -16
  106. hyperstack/models/{internal_instance_keypair_fields.py → keypair_environment_fields.py} +13 -11
  107. hyperstack/models/keypair_fields.py +6 -2
  108. hyperstack/models/{lastdaycostfields.py → last_day_cost_fields.py} +4 -4
  109. hyperstack/models/{lastdaycostresponse.py → last_day_cost_response.py} +7 -7
  110. hyperstack/models/{export_billing_data_response.py → logos.py} +13 -9
  111. hyperstack/models/{creditrequestresponse.py → master_flavors_response.py} +14 -14
  112. hyperstack/models/{customer_payload.py → mfa_status_fields.py} +8 -10
  113. hyperstack/models/{gpu.py → mfa_status_response.py} +11 -11
  114. hyperstack/models/model_evaluation_billing_history_details_response_schema.py +95 -0
  115. hyperstack/models/{organization_thresholdfields.py → organization_threshold_fields.py} +4 -4
  116. hyperstack/models/{organizationthresholdupdateresponse.py → organization_threshold_update_response.py} +7 -7
  117. hyperstack/models/{organizationthresholdsresponse.py → organization_thresholds_response.py} +7 -7
  118. hyperstack/models/{logo_get_response.py → pagination.py} +12 -12
  119. hyperstack/models/{billing_response.py → partner_config.py} +31 -20
  120. hyperstack/models/payment_details_fields.py +5 -1
  121. hyperstack/models/{logout_payload.py → primary_color.py} +10 -8
  122. hyperstack/models/region_fields.py +16 -2
  123. hyperstack/models/{vm_usage_request_payload.py → request_instance_logs_payload.py} +8 -8
  124. hyperstack/models/{stock_visibility_user_payload.py → request_instance_logs_response.py} +8 -8
  125. hyperstack/models/{contract_billing_history.py → resource_level_billing_bucket_details_resources.py} +10 -10
  126. hyperstack/models/{node_response_model.py → resource_level_billing_history_resources_cluster.py} +21 -11
  127. hyperstack/models/resource_level_billing_history_response_attributes.py +3 -1
  128. hyperstack/models/{get_all_contracts_response_model.py → resource_level_bucket_billing_details_response_model.py} +11 -15
  129. hyperstack/models/{contract_billing_history_response_model.py → resource_level_bucket_billing_history_response_model.py} +11 -11
  130. hyperstack/models/resource_level_cluster_billing_details_response_model.py +95 -0
  131. hyperstack/models/resource_level_cluster_billing_history_response_model.py +95 -0
  132. hyperstack/models/{get_discount_detail_response.py → resource_level_cluster_graph_billing_details_response_model.py} +11 -11
  133. hyperstack/models/{organization_object_response.py → resource_level_graph_billing_details_bucket.py} +18 -14
  134. hyperstack/models/{update_discounts_status_payload.py → secondary_color.py} +10 -8
  135. hyperstack/models/{security_rules_fieldsfor_instance.py → security_rules_fields_for_instance.py} +4 -4
  136. hyperstack/models/serverless_inferenced_billing_history_details_response_schema.py +95 -0
  137. hyperstack/models/snapshot_fields.py +6 -1
  138. hyperstack/models/snapshot_retrieve_fields.py +29 -2
  139. hyperstack/models/start_deployment.py +3 -3
  140. hyperstack/models/{subscribeorunsubscribeupdatepayload.py → subscribe_or_unsubscribe_update_payload.py} +4 -4
  141. hyperstack/models/token_based_billing_history_response.py +95 -0
  142. hyperstack/models/{update_keypairnameresponse.py → update_keypair_name_response.py} +4 -4
  143. hyperstack/models/update_volume_attachment_payload.py +87 -0
  144. hyperstack/models/{verify_api_key_payload.py → update_volume_payload.py} +7 -7
  145. hyperstack/models/{stock_visibility_user_list_response.py → update_volume_response.py} +14 -16
  146. hyperstack/models/{auth_request_login_fields.py → uris.py} +19 -9
  147. hyperstack/models/{userinfopostpayload.py → user_info_post_payload.py} +4 -4
  148. hyperstack/models/{node_stock_response_model.py → user_organizations_response.py} +14 -14
  149. hyperstack/models/users_info_fields.py +3 -1
  150. hyperstack/models/volume_attachment_fields.py +9 -5
  151. hyperstack/models/volume_fields.py +14 -4
  152. hyperstack/models/{volume_fieldsfor_instance.py → volume_fields_for_instance.py} +4 -4
  153. hyperstack/models/volumes.py +17 -11
  154. hyperstack/models/{instances_summary_fields.py → volumes_fields.py} +33 -29
  155. hyperstack/models/workload_billing_history_response.py +95 -0
  156. {hyperstack-1.25.0a0.dist-info → hyperstack-1.41.0a0.dist-info}/METADATA +2 -2
  157. hyperstack-1.41.0a0.dist-info/RECORD +349 -0
  158. {hyperstack-1.25.0a0.dist-info → hyperstack-1.41.0a0.dist-info}/WHEEL +1 -1
  159. hyperstack/models/api_key_verify_fields.py +0 -93
  160. hyperstack/models/billing_immune_resources_response.py +0 -95
  161. hyperstack/models/contract_billing_history_response_attributes.py +0 -99
  162. hyperstack/models/contract_change_payload.py +0 -101
  163. hyperstack/models/contract_eligible_instances_response.py +0 -101
  164. hyperstack/models/contract_event_create_model.py +0 -91
  165. hyperstack/models/contract_resource_payload.py +0 -95
  166. hyperstack/models/contractl_billing_history_response_metrics.py +0 -87
  167. hyperstack/models/create_contract_fields.py +0 -110
  168. hyperstack/models/create_contract_payload.py +0 -106
  169. hyperstack/models/create_discounts_payload.py +0 -112
  170. hyperstack/models/create_update_permission_payload.py +0 -93
  171. hyperstack/models/create_update_policy_payload.py +0 -93
  172. hyperstack/models/creditrechargelimitfield.py +0 -93
  173. hyperstack/models/creditrechargelimitresponse.py +0 -99
  174. hyperstack/models/creditrequests.py +0 -96
  175. hyperstack/models/data.py +0 -91
  176. hyperstack/models/discount_entity_model.py +0 -97
  177. hyperstack/models/discount_fields.py +0 -100
  178. hyperstack/models/discount_plan_fields.py +0 -108
  179. hyperstack/models/discount_resource_fields.py +0 -93
  180. hyperstack/models/discount_resource_payload.py +0 -93
  181. hyperstack/models/exclude_billing_post_payload.py +0 -91
  182. hyperstack/models/field_change.py +0 -91
  183. hyperstack/models/flavor_payload.py +0 -101
  184. hyperstack/models/flavor_vms_response.py +0 -99
  185. hyperstack/models/future_node_stock_model.py +0 -93
  186. hyperstack/models/future_node_update_model.py +0 -98
  187. hyperstack/models/get_all_contract_fields.py +0 -100
  188. hyperstack/models/get_discount_response.py +0 -99
  189. hyperstack/models/get_entity_discount_detail_response.py +0 -108
  190. hyperstack/models/get_token_payload.py +0 -89
  191. hyperstack/models/get_version_response.py +0 -91
  192. hyperstack/models/historical_instance.py +0 -101
  193. hyperstack/models/infrahub_resource_object_response.py +0 -119
  194. hyperstack/models/insert_discount_plan_fields.py +0 -112
  195. hyperstack/models/internal_instance_fields.py +0 -156
  196. hyperstack/models/internal_instance_image_fields.py +0 -95
  197. hyperstack/models/internal_instances_response.py +0 -99
  198. hyperstack/models/internal_security_rules_fields_for_instance.py +0 -104
  199. hyperstack/models/internal_volume_attachment_fields.py +0 -98
  200. hyperstack/models/internal_volume_fields.py +0 -95
  201. hyperstack/models/internal_volumes_response.py +0 -99
  202. hyperstack/models/new_stock_update_response_model.py +0 -89
  203. hyperstack/models/node_model.py +0 -114
  204. hyperstack/models/node_payload_model.py +0 -97
  205. hyperstack/models/node_power_usage_model.py +0 -120
  206. hyperstack/models/node_stock_payload_model.py +0 -95
  207. hyperstack/models/organizationcreditrechargelimitresponse.py +0 -95
  208. hyperstack/models/power_usage_model.py +0 -89
  209. hyperstack/models/pricebook_resource_object_response.py +0 -107
  210. hyperstack/models/refresh_token_payload.py +0 -89
  211. hyperstack/models/region_response.py +0 -95
  212. hyperstack/models/set_defaults_payload.py +0 -89
  213. hyperstack/models/single_visibility_user_response.py +0 -91
  214. hyperstack/models/success_response_model.py +0 -89
  215. hyperstack/models/token_fields.py +0 -91
  216. hyperstack/models/update_contract_payload.py +0 -104
  217. hyperstack/models/update_discounts_payload.py +0 -102
  218. hyperstack/models/user_transfer_payload.py +0 -89
  219. hyperstack/models/verify_api_key_response_model.py +0 -95
  220. hyperstack/models/volume_status_change_fields.py +0 -96
  221. hyperstack/models/volumes_last_status_change_response.py +0 -99
  222. hyperstack/models/warning_mail_log_fields.py +0 -99
  223. hyperstack/models/warning_mail_log_response.py +0 -101
  224. hyperstack-1.25.0a0.dist-info/RECORD +0 -401
  225. {hyperstack-1.25.0a0.dist-info → hyperstack-1.41.0a0.dist-info}/top_level.txt +0 -0
@@ -19,17 +19,17 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.contract_billing_history_response_attributes import ContractBillingHistoryResponseAttributes
23
- from ..models.contractl_billing_history_response_metrics import ContractlBillingHistoryResponseMetrics
22
+ from ..models.resource_level_billing_details_attributes import ResourceLevelBillingDetailsAttributes
23
+ from ..models.resource_level_billing_details_metrics import ResourceLevelBillingDetailsMetrics
24
24
  from typing import Optional, Set
25
25
  from typing_extensions import Self
26
26
 
27
- class ContractBillingHistory(BaseModel):
27
+ class ResourceLevelBillingBucketDetailsResources(BaseModel):
28
28
  """
29
- ContractBillingHistory
29
+ ResourceLevelBillingBucketDetailsResources
30
30
  """ # noqa: E501
31
- attributes: Optional[ContractBillingHistoryResponseAttributes] = None
32
- metrics: Optional[ContractlBillingHistoryResponseMetrics] = None
31
+ attributes: Optional[ResourceLevelBillingDetailsAttributes] = None
32
+ metrics: Optional[ResourceLevelBillingDetailsMetrics] = None
33
33
  __properties: ClassVar[List[str]] = ["attributes", "metrics"]
34
34
 
35
35
  model_config = ConfigDict(
@@ -50,7 +50,7 @@ class ContractBillingHistory(BaseModel):
50
50
 
51
51
  @classmethod
52
52
  def from_json(cls, json_str: str) -> Optional[Self]:
53
- """Create an instance of ContractBillingHistory from a JSON string"""
53
+ """Create an instance of ResourceLevelBillingBucketDetailsResources from a JSON string"""
54
54
  return cls.from_dict(json.loads(json_str))
55
55
 
56
56
  def to_dict(self) -> Dict[str, Any]:
@@ -81,7 +81,7 @@ class ContractBillingHistory(BaseModel):
81
81
 
82
82
  @classmethod
83
83
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
- """Create an instance of ContractBillingHistory from a dict"""
84
+ """Create an instance of ResourceLevelBillingBucketDetailsResources from a dict"""
85
85
  if obj is None:
86
86
  return None
87
87
 
@@ -89,8 +89,8 @@ class ContractBillingHistory(BaseModel):
89
89
  return cls.model_validate(obj)
90
90
 
91
91
  _obj = cls.model_validate({
92
- "attributes": ContractBillingHistoryResponseAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None,
93
- "metrics": ContractlBillingHistoryResponseMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None
92
+ "attributes": ResourceLevelBillingDetailsAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None,
93
+ "metrics": ResourceLevelBillingDetailsMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None
94
94
  })
95
95
  return _obj
96
96
 
@@ -17,19 +17,22 @@ import pprint
17
17
  import re # noqa: F401
18
18
  import json
19
19
 
20
- from pydantic import BaseModel, ConfigDict, StrictStr
20
+ from pydantic import BaseModel, ConfigDict
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.node_model import NodeModel
22
+ from ..models.resource_level_billing_history_resources import ResourceLevelBillingHistoryResources
23
+ from ..models.resource_level_billing_history_response_attributes import ResourceLevelBillingHistoryResponseAttributes
24
+ from ..models.resource_level_billing_history_response_metrics import ResourceLevelBillingHistoryResponseMetrics
23
25
  from typing import Optional, Set
24
26
  from typing_extensions import Self
25
27
 
26
- class NodeResponseModel(BaseModel):
28
+ class ResourceLevelBillingHistoryResourcesCluster(BaseModel):
27
29
  """
28
- NodeResponseModel
30
+ ResourceLevelBillingHistoryResourcesCluster
29
31
  """ # noqa: E501
30
- nodes: Optional[List[NodeModel]] = None
31
- region: Optional[StrictStr] = None
32
- __properties: ClassVar[List[str]] = ["nodes", "region"]
32
+ attributes: Optional[ResourceLevelBillingHistoryResponseAttributes] = None
33
+ metrics: Optional[ResourceLevelBillingHistoryResponseMetrics] = None
34
+ nodes: Optional[List[ResourceLevelBillingHistoryResources]] = None
35
+ __properties: ClassVar[List[str]] = ["attributes", "metrics", "nodes"]
33
36
 
34
37
  model_config = ConfigDict(
35
38
  populate_by_name=True,
@@ -49,7 +52,7 @@ class NodeResponseModel(BaseModel):
49
52
 
50
53
  @classmethod
51
54
  def from_json(cls, json_str: str) -> Optional[Self]:
52
- """Create an instance of NodeResponseModel from a JSON string"""
55
+ """Create an instance of ResourceLevelBillingHistoryResourcesCluster from a JSON string"""
53
56
  return cls.from_dict(json.loads(json_str))
54
57
 
55
58
  def to_dict(self) -> Dict[str, Any]:
@@ -70,6 +73,12 @@ class NodeResponseModel(BaseModel):
70
73
  exclude=excluded_fields,
71
74
  exclude_none=True,
72
75
  )
76
+ # override the default output from pydantic by calling `to_dict()` of attributes
77
+ if self.attributes:
78
+ _dict['attributes'] = self.attributes.to_dict()
79
+ # override the default output from pydantic by calling `to_dict()` of metrics
80
+ if self.metrics:
81
+ _dict['metrics'] = self.metrics.to_dict()
73
82
  # override the default output from pydantic by calling `to_dict()` of each item in nodes (list)
74
83
  _items = []
75
84
  if self.nodes:
@@ -81,7 +90,7 @@ class NodeResponseModel(BaseModel):
81
90
 
82
91
  @classmethod
83
92
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
- """Create an instance of NodeResponseModel from a dict"""
93
+ """Create an instance of ResourceLevelBillingHistoryResourcesCluster from a dict"""
85
94
  if obj is None:
86
95
  return None
87
96
 
@@ -89,8 +98,9 @@ class NodeResponseModel(BaseModel):
89
98
  return cls.model_validate(obj)
90
99
 
91
100
  _obj = cls.model_validate({
92
- "nodes": [NodeModel.from_dict(_item) for _item in obj["nodes"]] if obj.get("nodes") is not None else None,
93
- "region": obj.get("region")
101
+ "attributes": ResourceLevelBillingHistoryResponseAttributes.from_dict(obj["attributes"]) if obj.get("attributes") is not None else None,
102
+ "metrics": ResourceLevelBillingHistoryResponseMetrics.from_dict(obj["metrics"]) if obj.get("metrics") is not None else None,
103
+ "nodes": [ResourceLevelBillingHistoryResources.from_dict(_item) for _item in obj["nodes"]] if obj.get("nodes") is not None else None
94
104
  })
95
105
  return _obj
96
106
 
@@ -26,11 +26,12 @@ class ResourceLevelBillingHistoryResponseAttributes(BaseModel):
26
26
  """
27
27
  ResourceLevelBillingHistoryResponseAttributes
28
28
  """ # noqa: E501
29
+ contract_id: Optional[StrictInt] = None
29
30
  id: Optional[StrictStr] = None
30
31
  infrahub_id: Optional[StrictInt] = None
31
32
  resource_name: Optional[StrictStr] = None
32
33
  status: Optional[StrictStr] = None
33
- __properties: ClassVar[List[str]] = ["id", "infrahub_id", "resource_name", "status"]
34
+ __properties: ClassVar[List[str]] = ["contract_id", "id", "infrahub_id", "resource_name", "status"]
34
35
 
35
36
  model_config = ConfigDict(
36
37
  populate_by_name=True,
@@ -83,6 +84,7 @@ class ResourceLevelBillingHistoryResponseAttributes(BaseModel):
83
84
  return cls.model_validate(obj)
84
85
 
85
86
  _obj = cls.model_validate({
87
+ "contract_id": obj.get("contract_id"),
86
88
  "id": obj.get("id"),
87
89
  "infrahub_id": obj.get("infrahub_id"),
88
90
  "resource_name": obj.get("resource_name"),
@@ -19,18 +19,18 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.get_all_contract_fields import GetAllContractFields
22
+ from ..models.resource_level_billing_bucket_details_resources import ResourceLevelBillingBucketDetailsResources
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class GetAllContractsResponseModel(BaseModel):
26
+ class ResourceLevelBucketBillingDetailsResponseModel(BaseModel):
27
27
  """
28
- GetAllContractsResponseModel
28
+ ResourceLevelBucketBillingDetailsResponseModel
29
29
  """ # noqa: E501
30
- contracts: Optional[List[GetAllContractFields]] = None
30
+ billing_history_bucket_details: Optional[ResourceLevelBillingBucketDetailsResources] = None
31
31
  message: Optional[StrictStr] = None
32
32
  status: Optional[StrictBool] = None
33
- __properties: ClassVar[List[str]] = ["contracts", "message", "status"]
33
+ __properties: ClassVar[List[str]] = ["billing_history_bucket_details", "message", "status"]
34
34
 
35
35
  model_config = ConfigDict(
36
36
  populate_by_name=True,
@@ -50,7 +50,7 @@ class GetAllContractsResponseModel(BaseModel):
50
50
 
51
51
  @classmethod
52
52
  def from_json(cls, json_str: str) -> Optional[Self]:
53
- """Create an instance of GetAllContractsResponseModel from a JSON string"""
53
+ """Create an instance of ResourceLevelBucketBillingDetailsResponseModel from a JSON string"""
54
54
  return cls.from_dict(json.loads(json_str))
55
55
 
56
56
  def to_dict(self) -> Dict[str, Any]:
@@ -71,18 +71,14 @@ class GetAllContractsResponseModel(BaseModel):
71
71
  exclude=excluded_fields,
72
72
  exclude_none=True,
73
73
  )
74
- # override the default output from pydantic by calling `to_dict()` of each item in contracts (list)
75
- _items = []
76
- if self.contracts:
77
- for _item_contracts in self.contracts:
78
- if _item_contracts:
79
- _items.append(_item_contracts.to_dict())
80
- _dict['contracts'] = _items
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_bucket_details
75
+ if self.billing_history_bucket_details:
76
+ _dict['billing_history_bucket_details'] = self.billing_history_bucket_details.to_dict()
81
77
  return _dict
82
78
 
83
79
  @classmethod
84
80
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
85
- """Create an instance of GetAllContractsResponseModel from a dict"""
81
+ """Create an instance of ResourceLevelBucketBillingDetailsResponseModel from a dict"""
86
82
  if obj is None:
87
83
  return None
88
84
 
@@ -90,7 +86,7 @@ class GetAllContractsResponseModel(BaseModel):
90
86
  return cls.model_validate(obj)
91
87
 
92
88
  _obj = cls.model_validate({
93
- "contracts": [GetAllContractFields.from_dict(_item) for _item in obj["contracts"]] if obj.get("contracts") is not None else None,
89
+ "billing_history_bucket_details": ResourceLevelBillingBucketDetailsResources.from_dict(obj["billing_history_bucket_details"]) if obj.get("billing_history_bucket_details") is not None else None,
94
90
  "message": obj.get("message"),
95
91
  "status": obj.get("status")
96
92
  })
@@ -19,18 +19,18 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.contract_billing_history import ContractBillingHistory
22
+ from ..models.resource_level_billing_history import ResourceLevelBillingHistory
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class ContractBillingHistoryResponseModel(BaseModel):
26
+ class ResourceLevelBucketBillingHistoryResponseModel(BaseModel):
27
27
  """
28
- ContractBillingHistoryResponseModel
28
+ ResourceLevelBucketBillingHistoryResponseModel
29
29
  """ # noqa: E501
30
- billing_history_contract: Optional[ContractBillingHistory] = None
30
+ billing_history_bucket: Optional[ResourceLevelBillingHistory] = None
31
31
  message: Optional[StrictStr] = None
32
32
  status: Optional[StrictBool] = None
33
- __properties: ClassVar[List[str]] = ["billing_history_contract", "message", "status"]
33
+ __properties: ClassVar[List[str]] = ["billing_history_bucket", "message", "status"]
34
34
 
35
35
  model_config = ConfigDict(
36
36
  populate_by_name=True,
@@ -50,7 +50,7 @@ class ContractBillingHistoryResponseModel(BaseModel):
50
50
 
51
51
  @classmethod
52
52
  def from_json(cls, json_str: str) -> Optional[Self]:
53
- """Create an instance of ContractBillingHistoryResponseModel from a JSON string"""
53
+ """Create an instance of ResourceLevelBucketBillingHistoryResponseModel from a JSON string"""
54
54
  return cls.from_dict(json.loads(json_str))
55
55
 
56
56
  def to_dict(self) -> Dict[str, Any]:
@@ -71,14 +71,14 @@ class ContractBillingHistoryResponseModel(BaseModel):
71
71
  exclude=excluded_fields,
72
72
  exclude_none=True,
73
73
  )
74
- # override the default output from pydantic by calling `to_dict()` of billing_history_contract
75
- if self.billing_history_contract:
76
- _dict['billing_history_contract'] = self.billing_history_contract.to_dict()
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_bucket
75
+ if self.billing_history_bucket:
76
+ _dict['billing_history_bucket'] = self.billing_history_bucket.to_dict()
77
77
  return _dict
78
78
 
79
79
  @classmethod
80
80
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
- """Create an instance of ContractBillingHistoryResponseModel from a dict"""
81
+ """Create an instance of ResourceLevelBucketBillingHistoryResponseModel from a dict"""
82
82
  if obj is None:
83
83
  return None
84
84
 
@@ -86,7 +86,7 @@ class ContractBillingHistoryResponseModel(BaseModel):
86
86
  return cls.model_validate(obj)
87
87
 
88
88
  _obj = cls.model_validate({
89
- "billing_history_contract": ContractBillingHistory.from_dict(obj["billing_history_contract"]) if obj.get("billing_history_contract") is not None else None,
89
+ "billing_history_bucket": ResourceLevelBillingHistory.from_dict(obj["billing_history_bucket"]) if obj.get("billing_history_bucket") is not None else None,
90
90
  "message": obj.get("message"),
91
91
  "status": obj.get("status")
92
92
  })
@@ -0,0 +1,95 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Infrahub-API
5
+
6
+ Leverage the Infrahub API and Hyperstack platform to easily create, manage, and scale powerful GPU virtual machines and their associated resources. Access this SDK to automate the deployment of your workloads and streamline your infrastructure management. To contribute, please raise an issue with a bug report, feature request, feedback, or general inquiry.
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from ..models.resource_level_billing_history_resources_cluster import ResourceLevelBillingHistoryResourcesCluster
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class ResourceLevelClusterBillingDetailsResponseModel(BaseModel):
27
+ """
28
+ ResourceLevelClusterBillingDetailsResponseModel
29
+ """ # noqa: E501
30
+ billing_history_cluster_details: Optional[ResourceLevelBillingHistoryResourcesCluster] = None
31
+ message: Optional[StrictStr] = None
32
+ status: Optional[StrictBool] = None
33
+ __properties: ClassVar[List[str]] = ["billing_history_cluster_details", "message", "status"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of ResourceLevelClusterBillingDetailsResponseModel from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_cluster_details
75
+ if self.billing_history_cluster_details:
76
+ _dict['billing_history_cluster_details'] = self.billing_history_cluster_details.to_dict()
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of ResourceLevelClusterBillingDetailsResponseModel from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "billing_history_cluster_details": ResourceLevelBillingHistoryResourcesCluster.from_dict(obj["billing_history_cluster_details"]) if obj.get("billing_history_cluster_details") is not None else None,
90
+ "message": obj.get("message"),
91
+ "status": obj.get("status")
92
+ })
93
+ return _obj
94
+
95
+
@@ -0,0 +1,95 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Infrahub-API
5
+
6
+ Leverage the Infrahub API and Hyperstack platform to easily create, manage, and scale powerful GPU virtual machines and their associated resources. Access this SDK to automate the deployment of your workloads and streamline your infrastructure management. To contribute, please raise an issue with a bug report, feature request, feedback, or general inquiry.
7
+
8
+ The version of the OpenAPI document: 1.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from ..models.resource_level_billing_history import ResourceLevelBillingHistory
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+
26
+ class ResourceLevelClusterBillingHistoryResponseModel(BaseModel):
27
+ """
28
+ ResourceLevelClusterBillingHistoryResponseModel
29
+ """ # noqa: E501
30
+ billing_history_cluster: Optional[ResourceLevelBillingHistory] = None
31
+ message: Optional[StrictStr] = None
32
+ status: Optional[StrictBool] = None
33
+ __properties: ClassVar[List[str]] = ["billing_history_cluster", "message", "status"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+
42
+ def to_str(self) -> str:
43
+ """Returns the string representation of the model using alias"""
44
+ return pprint.pformat(self.model_dump(by_alias=True))
45
+
46
+ def to_json(self) -> str:
47
+ """Returns the JSON representation of the model using alias"""
48
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49
+ return json.dumps(self.to_dict())
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of ResourceLevelClusterBillingHistoryResponseModel from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([
67
+ ])
68
+
69
+ _dict = self.model_dump(
70
+ by_alias=True,
71
+ exclude=excluded_fields,
72
+ exclude_none=True,
73
+ )
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_cluster
75
+ if self.billing_history_cluster:
76
+ _dict['billing_history_cluster'] = self.billing_history_cluster.to_dict()
77
+ return _dict
78
+
79
+ @classmethod
80
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
+ """Create an instance of ResourceLevelClusterBillingHistoryResponseModel from a dict"""
82
+ if obj is None:
83
+ return None
84
+
85
+ if not isinstance(obj, dict):
86
+ return cls.model_validate(obj)
87
+
88
+ _obj = cls.model_validate({
89
+ "billing_history_cluster": ResourceLevelBillingHistory.from_dict(obj["billing_history_cluster"]) if obj.get("billing_history_cluster") is not None else None,
90
+ "message": obj.get("message"),
91
+ "status": obj.get("status")
92
+ })
93
+ return _obj
94
+
95
+
@@ -19,18 +19,18 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.discount_entity_model import DiscountEntityModel
22
+ from ..models.resource_level_graph_billing_detail_volume import ResourceLevelGraphBillingDetailVolume
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class GetDiscountDetailResponse(BaseModel):
26
+ class ResourceLevelClusterGraphBillingDetailsResponseModel(BaseModel):
27
27
  """
28
- GetDiscountDetailResponse
28
+ ResourceLevelClusterGraphBillingDetailsResponseModel
29
29
  """ # noqa: E501
30
- discounts_entity: Optional[DiscountEntityModel] = None
30
+ billing_history_cluster_details: Optional[ResourceLevelGraphBillingDetailVolume] = None
31
31
  message: Optional[StrictStr] = None
32
32
  status: Optional[StrictBool] = None
33
- __properties: ClassVar[List[str]] = ["discounts_entity", "message", "status"]
33
+ __properties: ClassVar[List[str]] = ["billing_history_cluster_details", "message", "status"]
34
34
 
35
35
  model_config = ConfigDict(
36
36
  populate_by_name=True,
@@ -50,7 +50,7 @@ class GetDiscountDetailResponse(BaseModel):
50
50
 
51
51
  @classmethod
52
52
  def from_json(cls, json_str: str) -> Optional[Self]:
53
- """Create an instance of GetDiscountDetailResponse from a JSON string"""
53
+ """Create an instance of ResourceLevelClusterGraphBillingDetailsResponseModel from a JSON string"""
54
54
  return cls.from_dict(json.loads(json_str))
55
55
 
56
56
  def to_dict(self) -> Dict[str, Any]:
@@ -71,14 +71,14 @@ class GetDiscountDetailResponse(BaseModel):
71
71
  exclude=excluded_fields,
72
72
  exclude_none=True,
73
73
  )
74
- # override the default output from pydantic by calling `to_dict()` of discounts_entity
75
- if self.discounts_entity:
76
- _dict['discounts_entity'] = self.discounts_entity.to_dict()
74
+ # override the default output from pydantic by calling `to_dict()` of billing_history_cluster_details
75
+ if self.billing_history_cluster_details:
76
+ _dict['billing_history_cluster_details'] = self.billing_history_cluster_details.to_dict()
77
77
  return _dict
78
78
 
79
79
  @classmethod
80
80
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
81
- """Create an instance of GetDiscountDetailResponse from a dict"""
81
+ """Create an instance of ResourceLevelClusterGraphBillingDetailsResponseModel from a dict"""
82
82
  if obj is None:
83
83
  return None
84
84
 
@@ -86,7 +86,7 @@ class GetDiscountDetailResponse(BaseModel):
86
86
  return cls.model_validate(obj)
87
87
 
88
88
  _obj = cls.model_validate({
89
- "discounts_entity": DiscountEntityModel.from_dict(obj["discounts_entity"]) if obj.get("discounts_entity") is not None else None,
89
+ "billing_history_cluster_details": ResourceLevelGraphBillingDetailVolume.from_dict(obj["billing_history_cluster_details"]) if obj.get("billing_history_cluster_details") is not None else None,
90
90
  "message": obj.get("message"),
91
91
  "status": obj.get("status")
92
92
  })
@@ -19,17 +19,19 @@ import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictInt
21
21
  from typing import Any, ClassVar, Dict, List, Optional
22
- from ..models.infrahub_resource_object_response import InfrahubResourceObjectResponse
22
+ from ..models.resource_level_billing_bucket_details_resources import ResourceLevelBillingBucketDetailsResources
23
23
  from typing import Optional, Set
24
24
  from typing_extensions import Self
25
25
 
26
- class OrganizationObjectResponse(BaseModel):
26
+ class ResourceLevelGraphBillingDetailsBucket(BaseModel):
27
27
  """
28
- OrganizationObjectResponse
28
+ ResourceLevelGraphBillingDetailsBucket
29
29
  """ # noqa: E501
30
+ billing_history: Optional[List[ResourceLevelBillingBucketDetailsResources]] = None
31
+ granularity: Optional[StrictInt] = None
30
32
  org_id: Optional[StrictInt] = None
31
- resources: Optional[List[InfrahubResourceObjectResponse]] = None
32
- __properties: ClassVar[List[str]] = ["org_id", "resources"]
33
+ total_count: Optional[StrictInt] = None
34
+ __properties: ClassVar[List[str]] = ["billing_history", "granularity", "org_id", "total_count"]
33
35
 
34
36
  model_config = ConfigDict(
35
37
  populate_by_name=True,
@@ -49,7 +51,7 @@ class OrganizationObjectResponse(BaseModel):
49
51
 
50
52
  @classmethod
51
53
  def from_json(cls, json_str: str) -> Optional[Self]:
52
- """Create an instance of OrganizationObjectResponse from a JSON string"""
54
+ """Create an instance of ResourceLevelGraphBillingDetailsBucket from a JSON string"""
53
55
  return cls.from_dict(json.loads(json_str))
54
56
 
55
57
  def to_dict(self) -> Dict[str, Any]:
@@ -70,18 +72,18 @@ class OrganizationObjectResponse(BaseModel):
70
72
  exclude=excluded_fields,
71
73
  exclude_none=True,
72
74
  )
73
- # override the default output from pydantic by calling `to_dict()` of each item in resources (list)
75
+ # override the default output from pydantic by calling `to_dict()` of each item in billing_history (list)
74
76
  _items = []
75
- if self.resources:
76
- for _item_resources in self.resources:
77
- if _item_resources:
78
- _items.append(_item_resources.to_dict())
79
- _dict['resources'] = _items
77
+ if self.billing_history:
78
+ for _item_billing_history in self.billing_history:
79
+ if _item_billing_history:
80
+ _items.append(_item_billing_history.to_dict())
81
+ _dict['billing_history'] = _items
80
82
  return _dict
81
83
 
82
84
  @classmethod
83
85
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
84
- """Create an instance of OrganizationObjectResponse from a dict"""
86
+ """Create an instance of ResourceLevelGraphBillingDetailsBucket from a dict"""
85
87
  if obj is None:
86
88
  return None
87
89
 
@@ -89,8 +91,10 @@ class OrganizationObjectResponse(BaseModel):
89
91
  return cls.model_validate(obj)
90
92
 
91
93
  _obj = cls.model_validate({
94
+ "billing_history": [ResourceLevelBillingBucketDetailsResources.from_dict(_item) for _item in obj["billing_history"]] if obj.get("billing_history") is not None else None,
95
+ "granularity": obj.get("granularity"),
92
96
  "org_id": obj.get("org_id"),
93
- "resources": [InfrahubResourceObjectResponse.from_dict(_item) for _item in obj["resources"]] if obj.get("resources") is not None else None
97
+ "total_count": obj.get("total_count")
94
98
  })
95
99
  return _obj
96
100
 
@@ -18,16 +18,17 @@ import re # noqa: F401
18
18
  import json
19
19
 
20
20
  from pydantic import BaseModel, ConfigDict, StrictStr
21
- from typing import Any, ClassVar, Dict, List
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
22
  from typing import Optional, Set
23
23
  from typing_extensions import Self
24
24
 
25
- class UpdateDiscountsStatusPayload(BaseModel):
25
+ class SecondaryColor(BaseModel):
26
26
  """
27
- UpdateDiscountsStatusPayload
27
+ SecondaryColor
28
28
  """ # noqa: E501
29
- discount_status: StrictStr
30
- __properties: ClassVar[List[str]] = ["discount_status"]
29
+ dark: Optional[StrictStr] = None
30
+ light: Optional[StrictStr] = None
31
+ __properties: ClassVar[List[str]] = ["dark", "light"]
31
32
 
32
33
  model_config = ConfigDict(
33
34
  populate_by_name=True,
@@ -47,7 +48,7 @@ class UpdateDiscountsStatusPayload(BaseModel):
47
48
 
48
49
  @classmethod
49
50
  def from_json(cls, json_str: str) -> Optional[Self]:
50
- """Create an instance of UpdateDiscountsStatusPayload from a JSON string"""
51
+ """Create an instance of SecondaryColor from a JSON string"""
51
52
  return cls.from_dict(json.loads(json_str))
52
53
 
53
54
  def to_dict(self) -> Dict[str, Any]:
@@ -72,7 +73,7 @@ class UpdateDiscountsStatusPayload(BaseModel):
72
73
 
73
74
  @classmethod
74
75
  def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
75
- """Create an instance of UpdateDiscountsStatusPayload from a dict"""
76
+ """Create an instance of SecondaryColor from a dict"""
76
77
  if obj is None:
77
78
  return None
78
79
 
@@ -80,7 +81,8 @@ class UpdateDiscountsStatusPayload(BaseModel):
80
81
  return cls.model_validate(obj)
81
82
 
82
83
  _obj = cls.model_validate({
83
- "discount_status": obj.get("discount_status")
84
+ "dark": obj.get("dark"),
85
+ "light": obj.get("light")
84
86
  })
85
87
  return _obj
86
88