stackit-stackitmarketplace 1.14.0__tar.gz → 1.16.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/PKG-INFO +1 -1
  2. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/pyproject.toml +1 -1
  3. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/__init__.py +14 -0
  4. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api/default_api.py +25 -15
  5. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/__init__.py +10 -0
  6. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/assets.py +45 -2
  7. stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/assets_end_user_license_agreement.py +89 -0
  8. stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/assets_product_description.py +89 -0
  9. stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/assets_service_level_agreement.py +89 -0
  10. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_detail.py +1 -1
  11. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_pricing_option.py +4 -0
  12. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/error_response.py +15 -1
  13. stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/scope.py +38 -0
  14. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/LICENSE.md +0 -0
  15. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/NOTICE.txt +0 -0
  16. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/README.md +0 -0
  17. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api/__init__.py +0 -0
  18. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api_client.py +0 -0
  19. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api_response.py +0 -0
  20. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/configuration.py +0 -0
  21. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/exceptions.py +0 -0
  22. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/approve_subscription_payload.py +0 -0
  23. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/become_vendor.py +0 -0
  24. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_pricing_option_highlight.py +0 -0
  25. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_details_vendor.py +0 -0
  26. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_facets_value_inner.py +0 -0
  27. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_highlight.py +0 -0
  28. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_overview.py +0 -0
  29. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_overview_vendor.py +0 -0
  30. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_support_resource.py +0 -0
  31. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_vendor_terms.py +0 -0
  32. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/contact_sales.py +0 -0
  33. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/delivery_method.py +0 -0
  34. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/free_trial.py +0 -0
  35. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiries_create_inquiry_payload.py +0 -0
  36. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_become_vendor.py +0 -0
  37. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_contact_sales.py +0 -0
  38. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_form_type.py +0 -0
  39. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_register_testing.py +0 -0
  40. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_request_private_plan.py +0 -0
  41. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_suggest_product.py +0 -0
  42. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/list_catalog_products_response.py +0 -0
  43. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/list_vendor_subscriptions_response.py +0 -0
  44. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/localized_version.py +0 -0
  45. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/notice_period.py +0 -0
  46. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/offer_type.py +0 -0
  47. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/price_type.py +0 -0
  48. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/pricing_option_unit.py +0 -0
  49. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/product_lifecycle_state.py +0 -0
  50. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/register_testing.py +0 -0
  51. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/request_private_plan.py +0 -0
  52. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/resolve_customer_payload.py +0 -0
  53. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/service_certificate.py +0 -0
  54. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/subscription_lifecycle_state.py +0 -0
  55. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/subscription_product.py +0 -0
  56. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/suggest_product.py +0 -0
  57. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/vendor_subscription.py +0 -0
  58. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/py.typed +0 -0
  59. {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/rest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stackit-stackitmarketplace
3
- Version: 1.14.0
3
+ Version: 1.16.0
4
4
  Summary: STACKIT Marketplace API
5
5
  License-File: LICENSE.md
6
6
  License-File: NOTICE.txt
@@ -3,7 +3,7 @@ name = "stackit-stackitmarketplace"
3
3
 
4
4
  [tool.poetry]
5
5
  name = "stackit-stackitmarketplace"
6
- version = "v1.14.0"
6
+ version = "v1.16.0"
7
7
  authors = [
8
8
  "STACKIT Developer Tools <developer-tools@stackit.cloud>",
9
9
  ]
@@ -31,6 +31,9 @@ __all__ = [
31
31
  "ApiException",
32
32
  "ApproveSubscriptionPayload",
33
33
  "Assets",
34
+ "AssetsEndUserLicenseAgreement",
35
+ "AssetsProductDescription",
36
+ "AssetsServiceLevelAgreement",
34
37
  "BecomeVendor",
35
38
  "CatalogPricingOptionHighlight",
36
39
  "CatalogProductDetail",
@@ -64,6 +67,7 @@ __all__ = [
64
67
  "RegisterTesting",
65
68
  "RequestPrivatePlan",
66
69
  "ResolveCustomerPayload",
70
+ "Scope",
67
71
  "ServiceCertificate",
68
72
  "SubscriptionLifecycleState",
69
73
  "SubscriptionProduct",
@@ -92,6 +96,15 @@ from stackit.stackitmarketplace.models.approve_subscription_payload import (
92
96
  ApproveSubscriptionPayload as ApproveSubscriptionPayload,
93
97
  )
94
98
  from stackit.stackitmarketplace.models.assets import Assets as Assets
99
+ from stackit.stackitmarketplace.models.assets_end_user_license_agreement import (
100
+ AssetsEndUserLicenseAgreement as AssetsEndUserLicenseAgreement,
101
+ )
102
+ from stackit.stackitmarketplace.models.assets_product_description import (
103
+ AssetsProductDescription as AssetsProductDescription,
104
+ )
105
+ from stackit.stackitmarketplace.models.assets_service_level_agreement import (
106
+ AssetsServiceLevelAgreement as AssetsServiceLevelAgreement,
107
+ )
95
108
  from stackit.stackitmarketplace.models.become_vendor import BecomeVendor as BecomeVendor
96
109
  from stackit.stackitmarketplace.models.catalog_pricing_option_highlight import (
97
110
  CatalogPricingOptionHighlight as CatalogPricingOptionHighlight,
@@ -179,6 +192,7 @@ from stackit.stackitmarketplace.models.request_private_plan import (
179
192
  from stackit.stackitmarketplace.models.resolve_customer_payload import (
180
193
  ResolveCustomerPayload as ResolveCustomerPayload,
181
194
  )
195
+ from stackit.stackitmarketplace.models.scope import Scope as Scope
182
196
  from stackit.stackitmarketplace.models.service_certificate import (
183
197
  ServiceCertificate as ServiceCertificate,
184
198
  )
@@ -12,6 +12,7 @@
12
12
  Do not edit the class manually.
13
13
  """ # noqa: E501
14
14
 
15
+ import warnings
15
16
  from typing import Any, Dict, List, Optional, Tuple, Union
16
17
 
17
18
  from pydantic import (
@@ -358,7 +359,7 @@ class DefaultApi:
358
359
  _headers: Optional[Dict[StrictStr, Any]] = None,
359
360
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
360
361
  ) -> CatalogProductDetail:
361
- """Get a product
362
+ """(Deprecated) Get a product
362
363
 
363
364
  Get a product.
364
365
 
@@ -387,6 +388,7 @@ class DefaultApi:
387
388
  :type _host_index: int, optional
388
389
  :return: Returns the result object.
389
390
  """ # noqa: E501
391
+ warnings.warn("GET /v1/catalog/products/{productId} is deprecated.", DeprecationWarning)
390
392
 
391
393
  _param = self._get_catalog_product_serialize(
392
394
  product_id=product_id,
@@ -426,7 +428,7 @@ class DefaultApi:
426
428
  _headers: Optional[Dict[StrictStr, Any]] = None,
427
429
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
428
430
  ) -> ApiResponse[CatalogProductDetail]:
429
- """Get a product
431
+ """(Deprecated) Get a product
430
432
 
431
433
  Get a product.
432
434
 
@@ -455,6 +457,7 @@ class DefaultApi:
455
457
  :type _host_index: int, optional
456
458
  :return: Returns the result object.
457
459
  """ # noqa: E501
460
+ warnings.warn("GET /v1/catalog/products/{productId} is deprecated.", DeprecationWarning)
458
461
 
459
462
  _param = self._get_catalog_product_serialize(
460
463
  product_id=product_id,
@@ -494,7 +497,7 @@ class DefaultApi:
494
497
  _headers: Optional[Dict[StrictStr, Any]] = None,
495
498
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
496
499
  ) -> RESTResponseType:
497
- """Get a product
500
+ """(Deprecated) Get a product
498
501
 
499
502
  Get a product.
500
503
 
@@ -523,6 +526,7 @@ class DefaultApi:
523
526
  :type _host_index: int, optional
524
527
  :return: Returns the result object.
525
528
  """ # noqa: E501
529
+ warnings.warn("GET /v1/catalog/products/{productId} is deprecated.", DeprecationWarning)
526
530
 
527
531
  _param = self._get_catalog_product_serialize(
528
532
  product_id=product_id,
@@ -871,7 +875,7 @@ class DefaultApi:
871
875
  _headers: Optional[Dict[StrictStr, Any]] = None,
872
876
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
873
877
  ) -> None:
874
- """Create inquiry
878
+ """(Deprecated) Create inquiry
875
879
 
876
880
  Create an inquiry to contact sales, become a vendor, request a private plan, register for testing, or suggest a product. Requests are limited to 10 per 5 minutes.
877
881
 
@@ -898,6 +902,7 @@ class DefaultApi:
898
902
  :type _host_index: int, optional
899
903
  :return: Returns the result object.
900
904
  """ # noqa: E501
905
+ warnings.warn("POST /v1/inquiries is deprecated.", DeprecationWarning)
901
906
 
902
907
  _param = self._inquiries_create_inquiry_serialize(
903
908
  inquiries_create_inquiry_payload=inquiries_create_inquiry_payload,
@@ -935,7 +940,7 @@ class DefaultApi:
935
940
  _headers: Optional[Dict[StrictStr, Any]] = None,
936
941
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
937
942
  ) -> ApiResponse[None]:
938
- """Create inquiry
943
+ """(Deprecated) Create inquiry
939
944
 
940
945
  Create an inquiry to contact sales, become a vendor, request a private plan, register for testing, or suggest a product. Requests are limited to 10 per 5 minutes.
941
946
 
@@ -962,6 +967,7 @@ class DefaultApi:
962
967
  :type _host_index: int, optional
963
968
  :return: Returns the result object.
964
969
  """ # noqa: E501
970
+ warnings.warn("POST /v1/inquiries is deprecated.", DeprecationWarning)
965
971
 
966
972
  _param = self._inquiries_create_inquiry_serialize(
967
973
  inquiries_create_inquiry_payload=inquiries_create_inquiry_payload,
@@ -999,7 +1005,7 @@ class DefaultApi:
999
1005
  _headers: Optional[Dict[StrictStr, Any]] = None,
1000
1006
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1001
1007
  ) -> RESTResponseType:
1002
- """Create inquiry
1008
+ """(Deprecated) Create inquiry
1003
1009
 
1004
1010
  Create an inquiry to contact sales, become a vendor, request a private plan, register for testing, or suggest a product. Requests are limited to 10 per 5 minutes.
1005
1011
 
@@ -1026,6 +1032,7 @@ class DefaultApi:
1026
1032
  :type _host_index: int, optional
1027
1033
  :return: Returns the result object.
1028
1034
  """ # noqa: E501
1035
+ warnings.warn("POST /v1/inquiries is deprecated.", DeprecationWarning)
1029
1036
 
1030
1037
  _param = self._inquiries_create_inquiry_serialize(
1031
1038
  inquiries_create_inquiry_payload=inquiries_create_inquiry_payload,
@@ -1126,7 +1133,7 @@ class DefaultApi:
1126
1133
  filter: Annotated[
1127
1134
  Optional[StrictStr],
1128
1135
  Field(
1129
- description='Filter the products based on attributes, e.g., `deliveryMethod eq "SAAS"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co "searching"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator. '
1136
+ description='Filter the products based on attributes, e.g., `deliveryMethod eq "SAAS"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co "searching"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator. '
1130
1137
  ),
1131
1138
  ] = None,
1132
1139
  sort: Annotated[
@@ -1145,7 +1152,7 @@ class DefaultApi:
1145
1152
  _headers: Optional[Dict[StrictStr, Any]] = None,
1146
1153
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1147
1154
  ) -> ListCatalogProductsResponse:
1148
- """List all products
1155
+ """(Deprecated) List all products
1149
1156
 
1150
1157
  List all products.
1151
1158
 
@@ -1155,7 +1162,7 @@ class DefaultApi:
1155
1162
  :type limit: float
1156
1163
  :param locale: The language of the response.
1157
1164
  :type locale: str
1158
- :param filter: Filter the products based on attributes, e.g., `deliveryMethod eq \"SAAS\"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co \"searching\"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator.
1165
+ :param filter: Filter the products based on attributes, e.g., `deliveryMethod eq \"SAAS\"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co \"searching\"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator.
1159
1166
  :type filter: str
1160
1167
  :param sort: Sort the products based on attributes and order e.g. `name:asc`. Attributes with scalar types (`createdAt`, `isProductListing`) or keywords (`name`, `deliveryMethod`, `lifecycleState`, `vendor.name`) can be used as sort criteria. To set the sort order, append `asc` (ascending) or `desc` (descending) to the attribute, e.g. `name:asc`. To sort by multiple attributes, separate them with a comma. E.g `name:asc,price:desc`.
1161
1168
  :type sort: str
@@ -1180,6 +1187,7 @@ class DefaultApi:
1180
1187
  :type _host_index: int, optional
1181
1188
  :return: Returns the result object.
1182
1189
  """ # noqa: E501
1190
+ warnings.warn("GET /v1/catalog/products is deprecated.", DeprecationWarning)
1183
1191
 
1184
1192
  _param = self._list_catalog_products_serialize(
1185
1193
  cursor=cursor,
@@ -1229,7 +1237,7 @@ class DefaultApi:
1229
1237
  filter: Annotated[
1230
1238
  Optional[StrictStr],
1231
1239
  Field(
1232
- description='Filter the products based on attributes, e.g., `deliveryMethod eq "SAAS"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co "searching"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator. '
1240
+ description='Filter the products based on attributes, e.g., `deliveryMethod eq "SAAS"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co "searching"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator. '
1233
1241
  ),
1234
1242
  ] = None,
1235
1243
  sort: Annotated[
@@ -1248,7 +1256,7 @@ class DefaultApi:
1248
1256
  _headers: Optional[Dict[StrictStr, Any]] = None,
1249
1257
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1250
1258
  ) -> ApiResponse[ListCatalogProductsResponse]:
1251
- """List all products
1259
+ """(Deprecated) List all products
1252
1260
 
1253
1261
  List all products.
1254
1262
 
@@ -1258,7 +1266,7 @@ class DefaultApi:
1258
1266
  :type limit: float
1259
1267
  :param locale: The language of the response.
1260
1268
  :type locale: str
1261
- :param filter: Filter the products based on attributes, e.g., `deliveryMethod eq \"SAAS\"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co \"searching\"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator.
1269
+ :param filter: Filter the products based on attributes, e.g., `deliveryMethod eq \"SAAS\"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co \"searching\"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator.
1262
1270
  :type filter: str
1263
1271
  :param sort: Sort the products based on attributes and order e.g. `name:asc`. Attributes with scalar types (`createdAt`, `isProductListing`) or keywords (`name`, `deliveryMethod`, `lifecycleState`, `vendor.name`) can be used as sort criteria. To set the sort order, append `asc` (ascending) or `desc` (descending) to the attribute, e.g. `name:asc`. To sort by multiple attributes, separate them with a comma. E.g `name:asc,price:desc`.
1264
1272
  :type sort: str
@@ -1283,6 +1291,7 @@ class DefaultApi:
1283
1291
  :type _host_index: int, optional
1284
1292
  :return: Returns the result object.
1285
1293
  """ # noqa: E501
1294
+ warnings.warn("GET /v1/catalog/products is deprecated.", DeprecationWarning)
1286
1295
 
1287
1296
  _param = self._list_catalog_products_serialize(
1288
1297
  cursor=cursor,
@@ -1332,7 +1341,7 @@ class DefaultApi:
1332
1341
  filter: Annotated[
1333
1342
  Optional[StrictStr],
1334
1343
  Field(
1335
- description='Filter the products based on attributes, e.g., `deliveryMethod eq "SAAS"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co "searching"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator. '
1344
+ description='Filter the products based on attributes, e.g., `deliveryMethod eq "SAAS"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co "searching"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator. '
1336
1345
  ),
1337
1346
  ] = None,
1338
1347
  sort: Annotated[
@@ -1351,7 +1360,7 @@ class DefaultApi:
1351
1360
  _headers: Optional[Dict[StrictStr, Any]] = None,
1352
1361
  _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1353
1362
  ) -> RESTResponseType:
1354
- """List all products
1363
+ """(Deprecated) List all products
1355
1364
 
1356
1365
  List all products.
1357
1366
 
@@ -1361,7 +1370,7 @@ class DefaultApi:
1361
1370
  :type limit: float
1362
1371
  :param locale: The language of the response.
1363
1372
  :type locale: str
1364
- :param filter: Filter the products based on attributes, e.g., `deliveryMethod eq \"SAAS\"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co \"searching\"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator.
1373
+ :param filter: Filter the products based on attributes, e.g., `deliveryMethod eq \"SAAS\"`. The supported operators are: - `PR` (present; `name pr`) - `EQ` (equal) - `NE` (not equal) - `CO` (contains; `text co \"searching\"`) - `SW` (starts with) - `EW` (ends with) - `GT` (greater than) - `LT` (less than) - `GE` (greater than or equal) - `LE` (less than or equal). These expressions can be logically linked with `AND` and `OR`. All attributes (and the special `text` attribute) can be used as filters, if the attribute type allows the operator.
1365
1374
  :type filter: str
1366
1375
  :param sort: Sort the products based on attributes and order e.g. `name:asc`. Attributes with scalar types (`createdAt`, `isProductListing`) or keywords (`name`, `deliveryMethod`, `lifecycleState`, `vendor.name`) can be used as sort criteria. To set the sort order, append `asc` (ascending) or `desc` (descending) to the attribute, e.g. `name:asc`. To sort by multiple attributes, separate them with a comma. E.g `name:asc,price:desc`.
1367
1376
  :type sort: str
@@ -1386,6 +1395,7 @@ class DefaultApi:
1386
1395
  :type _host_index: int, optional
1387
1396
  :return: Returns the result object.
1388
1397
  """ # noqa: E501
1398
+ warnings.warn("GET /v1/catalog/products is deprecated.", DeprecationWarning)
1389
1399
 
1390
1400
  _param = self._list_catalog_products_serialize(
1391
1401
  cursor=cursor,
@@ -19,6 +19,15 @@ from stackit.stackitmarketplace.models.approve_subscription_payload import (
19
19
  ApproveSubscriptionPayload,
20
20
  )
21
21
  from stackit.stackitmarketplace.models.assets import Assets
22
+ from stackit.stackitmarketplace.models.assets_end_user_license_agreement import (
23
+ AssetsEndUserLicenseAgreement,
24
+ )
25
+ from stackit.stackitmarketplace.models.assets_product_description import (
26
+ AssetsProductDescription,
27
+ )
28
+ from stackit.stackitmarketplace.models.assets_service_level_agreement import (
29
+ AssetsServiceLevelAgreement,
30
+ )
22
31
  from stackit.stackitmarketplace.models.become_vendor import BecomeVendor
23
32
  from stackit.stackitmarketplace.models.catalog_pricing_option_highlight import (
24
33
  CatalogPricingOptionHighlight,
@@ -88,6 +97,7 @@ from stackit.stackitmarketplace.models.request_private_plan import RequestPrivat
88
97
  from stackit.stackitmarketplace.models.resolve_customer_payload import (
89
98
  ResolveCustomerPayload,
90
99
  )
100
+ from stackit.stackitmarketplace.models.scope import Scope
91
101
  from stackit.stackitmarketplace.models.service_certificate import ServiceCertificate
92
102
  from stackit.stackitmarketplace.models.subscription_lifecycle_state import (
93
103
  SubscriptionLifecycleState,
@@ -21,6 +21,15 @@ from typing import Any, ClassVar, Dict, List, Optional, Set
21
21
  from pydantic import BaseModel, ConfigDict, Field
22
22
  from typing_extensions import Self
23
23
 
24
+ from stackit.stackitmarketplace.models.assets_end_user_license_agreement import (
25
+ AssetsEndUserLicenseAgreement,
26
+ )
27
+ from stackit.stackitmarketplace.models.assets_product_description import (
28
+ AssetsProductDescription,
29
+ )
30
+ from stackit.stackitmarketplace.models.assets_service_level_agreement import (
31
+ AssetsServiceLevelAgreement,
32
+ )
24
33
  from stackit.stackitmarketplace.models.service_certificate import ServiceCertificate
25
34
 
26
35
 
@@ -29,8 +38,18 @@ class Assets(BaseModel):
29
38
  The assets associated with the product.
30
39
  """ # noqa: E501
31
40
 
41
+ end_user_license_agreement: Optional[AssetsEndUserLicenseAgreement] = Field(
42
+ default=None, alias="endUserLicenseAgreement"
43
+ )
44
+ product_description: Optional[AssetsProductDescription] = Field(default=None, alias="productDescription")
32
45
  service_certificate: Optional[ServiceCertificate] = Field(default=None, alias="serviceCertificate")
33
- __properties: ClassVar[List[str]] = ["serviceCertificate"]
46
+ service_level_agreement: Optional[AssetsServiceLevelAgreement] = Field(default=None, alias="serviceLevelAgreement")
47
+ __properties: ClassVar[List[str]] = [
48
+ "endUserLicenseAgreement",
49
+ "productDescription",
50
+ "serviceCertificate",
51
+ "serviceLevelAgreement",
52
+ ]
34
53
 
35
54
  model_config = ConfigDict(
36
55
  populate_by_name=True,
@@ -69,9 +88,18 @@ class Assets(BaseModel):
69
88
  exclude=excluded_fields,
70
89
  exclude_none=True,
71
90
  )
91
+ # override the default output from pydantic by calling `to_dict()` of end_user_license_agreement
92
+ if self.end_user_license_agreement:
93
+ _dict["endUserLicenseAgreement"] = self.end_user_license_agreement.to_dict()
94
+ # override the default output from pydantic by calling `to_dict()` of product_description
95
+ if self.product_description:
96
+ _dict["productDescription"] = self.product_description.to_dict()
72
97
  # override the default output from pydantic by calling `to_dict()` of service_certificate
73
98
  if self.service_certificate:
74
99
  _dict["serviceCertificate"] = self.service_certificate.to_dict()
100
+ # override the default output from pydantic by calling `to_dict()` of service_level_agreement
101
+ if self.service_level_agreement:
102
+ _dict["serviceLevelAgreement"] = self.service_level_agreement.to_dict()
75
103
  return _dict
76
104
 
77
105
  @classmethod
@@ -85,11 +113,26 @@ class Assets(BaseModel):
85
113
 
86
114
  _obj = cls.model_validate(
87
115
  {
116
+ "endUserLicenseAgreement": (
117
+ AssetsEndUserLicenseAgreement.from_dict(obj["endUserLicenseAgreement"])
118
+ if obj.get("endUserLicenseAgreement") is not None
119
+ else None
120
+ ),
121
+ "productDescription": (
122
+ AssetsProductDescription.from_dict(obj["productDescription"])
123
+ if obj.get("productDescription") is not None
124
+ else None
125
+ ),
88
126
  "serviceCertificate": (
89
127
  ServiceCertificate.from_dict(obj["serviceCertificate"])
90
128
  if obj.get("serviceCertificate") is not None
91
129
  else None
92
- )
130
+ ),
131
+ "serviceLevelAgreement": (
132
+ AssetsServiceLevelAgreement.from_dict(obj["serviceLevelAgreement"])
133
+ if obj.get("serviceLevelAgreement") is not None
134
+ else None
135
+ ),
93
136
  }
94
137
  )
95
138
  return _obj
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Marketplace API
5
+
6
+ API to manage STACKIT Marketplace.
7
+
8
+ The version of the OpenAPI document: 1
9
+ Contact: marketplace@stackit.cloud
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ import pprint
19
+ from typing import Any, ClassVar, Dict, List, Optional, Set
20
+
21
+ from pydantic import BaseModel, ConfigDict
22
+ from typing_extensions import Self
23
+
24
+ from stackit.stackitmarketplace.models.localized_version import LocalizedVersion
25
+
26
+
27
+ class AssetsEndUserLicenseAgreement(BaseModel):
28
+ """
29
+ The related end user license agreement of the (subscription) product.
30
+ """ # noqa: E501
31
+
32
+ version: Optional[LocalizedVersion] = None
33
+ __properties: ClassVar[List[str]] = ["version"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of AssetsEndUserLicenseAgreement from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ # override the default output from pydantic by calling `to_dict()` of version
73
+ if self.version:
74
+ _dict["version"] = self.version.to_dict()
75
+ return _dict
76
+
77
+ @classmethod
78
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
79
+ """Create an instance of AssetsEndUserLicenseAgreement from a dict"""
80
+ if obj is None:
81
+ return None
82
+
83
+ if not isinstance(obj, dict):
84
+ return cls.model_validate(obj)
85
+
86
+ _obj = cls.model_validate(
87
+ {"version": LocalizedVersion.from_dict(obj["version"]) if obj.get("version") is not None else None}
88
+ )
89
+ return _obj
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Marketplace API
5
+
6
+ API to manage STACKIT Marketplace.
7
+
8
+ The version of the OpenAPI document: 1
9
+ Contact: marketplace@stackit.cloud
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ import pprint
19
+ from typing import Any, ClassVar, Dict, List, Optional, Set
20
+
21
+ from pydantic import BaseModel, ConfigDict
22
+ from typing_extensions import Self
23
+
24
+ from stackit.stackitmarketplace.models.localized_version import LocalizedVersion
25
+
26
+
27
+ class AssetsProductDescription(BaseModel):
28
+ """
29
+ The related product description of the (subscription) product.
30
+ """ # noqa: E501
31
+
32
+ version: Optional[LocalizedVersion] = None
33
+ __properties: ClassVar[List[str]] = ["version"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of AssetsProductDescription from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ # override the default output from pydantic by calling `to_dict()` of version
73
+ if self.version:
74
+ _dict["version"] = self.version.to_dict()
75
+ return _dict
76
+
77
+ @classmethod
78
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
79
+ """Create an instance of AssetsProductDescription from a dict"""
80
+ if obj is None:
81
+ return None
82
+
83
+ if not isinstance(obj, dict):
84
+ return cls.model_validate(obj)
85
+
86
+ _obj = cls.model_validate(
87
+ {"version": LocalizedVersion.from_dict(obj["version"]) if obj.get("version") is not None else None}
88
+ )
89
+ return _obj
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Marketplace API
5
+
6
+ API to manage STACKIT Marketplace.
7
+
8
+ The version of the OpenAPI document: 1
9
+ Contact: marketplace@stackit.cloud
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ import pprint
19
+ from typing import Any, ClassVar, Dict, List, Optional, Set
20
+
21
+ from pydantic import BaseModel, ConfigDict
22
+ from typing_extensions import Self
23
+
24
+ from stackit.stackitmarketplace.models.localized_version import LocalizedVersion
25
+
26
+
27
+ class AssetsServiceLevelAgreement(BaseModel):
28
+ """
29
+ The related service level agreement of the (subscription) product.
30
+ """ # noqa: E501
31
+
32
+ version: Optional[LocalizedVersion] = None
33
+ __properties: ClassVar[List[str]] = ["version"]
34
+
35
+ model_config = ConfigDict(
36
+ populate_by_name=True,
37
+ validate_assignment=True,
38
+ protected_namespaces=(),
39
+ )
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of AssetsServiceLevelAgreement from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ # override the default output from pydantic by calling `to_dict()` of version
73
+ if self.version:
74
+ _dict["version"] = self.version.to_dict()
75
+ return _dict
76
+
77
+ @classmethod
78
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
79
+ """Create an instance of AssetsServiceLevelAgreement from a dict"""
80
+ if obj is None:
81
+ return None
82
+
83
+ if not isinstance(obj, dict):
84
+ return cls.model_validate(obj)
85
+
86
+ _obj = cls.model_validate(
87
+ {"version": LocalizedVersion.from_dict(obj["version"]) if obj.get("version") is not None else None}
88
+ )
89
+ return _obj
@@ -82,7 +82,7 @@ class CatalogProductDetail(BaseModel):
82
82
  )
83
83
  is_product_listing: Optional[StrictBool] = Field(
84
84
  default=None,
85
- description="If true, the product is not fully integrated but only listed. Product listings may not have prices and support information. Deprecated: Will be removed after 16.12.2025. Please use `offerType` as replacement.",
85
+ description="If true, the product is not fully integrated but only listed. Product listings may not have prices and support information. Deprecated: Will be removed after 16.12.2025. Please use `offerType` as replacement.",
86
86
  alias="isProductListing",
87
87
  )
88
88
  lifecycle_state: ProductLifecycleState = Field(alias="lifecycleState")
@@ -28,6 +28,7 @@ from stackit.stackitmarketplace.models.catalog_pricing_option_highlight import (
28
28
  from stackit.stackitmarketplace.models.notice_period import NoticePeriod
29
29
  from stackit.stackitmarketplace.models.price_type import PriceType
30
30
  from stackit.stackitmarketplace.models.pricing_option_unit import PricingOptionUnit
31
+ from stackit.stackitmarketplace.models.scope import Scope
31
32
 
32
33
 
33
34
  class CatalogProductPricingOption(BaseModel):
@@ -47,6 +48,7 @@ class CatalogProductPricingOption(BaseModel):
47
48
  default=None, description="Additional price type information.", alias="pricingPlan"
48
49
  )
49
50
  rate: Optional[StrictStr] = Field(default=None, description="The price of the product (per unit).")
51
+ scope: Scope
50
52
  sku: StrictStr = Field(description="The concrete variant of the product.")
51
53
  sku_info: StrictStr = Field(description="Short description of this offering.", alias="skuInfo")
52
54
  sku_info_details: StrictStr = Field(
@@ -62,6 +64,7 @@ class CatalogProductPricingOption(BaseModel):
62
64
  "priceType",
63
65
  "pricingPlan",
64
66
  "rate",
67
+ "scope",
65
68
  "sku",
66
69
  "skuInfo",
67
70
  "skuInfoDetails",
@@ -149,6 +152,7 @@ class CatalogProductPricingOption(BaseModel):
149
152
  "priceType": obj.get("priceType"),
150
153
  "pricingPlan": obj.get("pricingPlan"),
151
154
  "rate": obj.get("rate"),
155
+ "scope": obj.get("scope"),
152
156
  "sku": obj.get("sku"),
153
157
  "skuInfo": obj.get("skuInfo"),
154
158
  "skuInfoDetails": obj.get("skuInfoDetails"),
@@ -16,10 +16,11 @@ from __future__ import annotations
16
16
 
17
17
  import json
18
18
  import pprint
19
+ import re # noqa: F401
19
20
  from datetime import datetime
20
21
  from typing import Any, ClassVar, Dict, List, Optional, Set
21
22
 
22
- from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
23
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
23
24
  from typing_extensions import Self
24
25
 
25
26
 
@@ -35,6 +36,19 @@ class ErrorResponse(BaseModel):
35
36
  time_stamp: datetime = Field(description="Timestamp at which the error occurred.", alias="timeStamp")
36
37
  __properties: ClassVar[List[str]] = ["error", "message", "path", "status", "timeStamp"]
37
38
 
39
+ @field_validator("time_stamp", mode="before")
40
+ def time_stamp_change_year_zero_to_one(cls, value):
41
+ """Workaround which prevents year 0 issue"""
42
+ if isinstance(value, str):
43
+ # Check for year "0000" at the beginning of the string
44
+ # This assumes common date formats like YYYY-MM-DDTHH:MM:SS+00:00 or YYYY-MM-DDTHH:MM:SSZ
45
+ if value.startswith("0000-01-01T") and re.match(
46
+ r"^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\+\d{2}:\d{2}|Z)$", value
47
+ ):
48
+ # Workaround: Replace "0000" with "0001"
49
+ return "0001" + value[4:] # Take "0001" and append the rest of the string
50
+ return value
51
+
38
52
  model_config = ConfigDict(
39
53
  populate_by_name=True,
40
54
  validate_assignment=True,
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Marketplace API
5
+
6
+ API to manage STACKIT Marketplace.
7
+
8
+ The version of the OpenAPI document: 1
9
+ Contact: marketplace@stackit.cloud
10
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
11
+
12
+ Do not edit the class manually.
13
+ """ # noqa: E501
14
+
15
+ from __future__ import annotations
16
+
17
+ import json
18
+ from enum import Enum
19
+
20
+ from typing_extensions import Self
21
+
22
+
23
+ class Scope(str, Enum):
24
+ """
25
+ The (visibility) scope.
26
+ """
27
+
28
+ """
29
+ allowed enum values
30
+ """
31
+ PUBLIC = "PUBLIC"
32
+ AUTHENTICATED = "AUTHENTICATED"
33
+ PRIVATE_PROJECT = "PRIVATE_PROJECT"
34
+
35
+ @classmethod
36
+ def from_json(cls, json_str: str) -> Self:
37
+ """Create an instance of Scope from a JSON string"""
38
+ return cls(json.loads(json_str))