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.
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/PKG-INFO +1 -1
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/pyproject.toml +1 -1
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/__init__.py +14 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api/default_api.py +25 -15
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/__init__.py +10 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/assets.py +45 -2
- stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/assets_end_user_license_agreement.py +89 -0
- stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/assets_product_description.py +89 -0
- stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/assets_service_level_agreement.py +89 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_detail.py +1 -1
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_pricing_option.py +4 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/error_response.py +15 -1
- stackit_stackitmarketplace-1.16.0/src/stackit/stackitmarketplace/models/scope.py +38 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/LICENSE.md +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/NOTICE.txt +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/README.md +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api/__init__.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api_client.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/api_response.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/configuration.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/exceptions.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/approve_subscription_payload.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/become_vendor.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_pricing_option_highlight.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_details_vendor.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_facets_value_inner.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_highlight.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_overview.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_overview_vendor.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_support_resource.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/catalog_product_vendor_terms.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/contact_sales.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/delivery_method.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/free_trial.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiries_create_inquiry_payload.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_become_vendor.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_contact_sales.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_form_type.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_register_testing.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_request_private_plan.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/inquiry_suggest_product.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/list_catalog_products_response.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/list_vendor_subscriptions_response.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/localized_version.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/notice_period.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/offer_type.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/price_type.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/pricing_option_unit.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/product_lifecycle_state.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/register_testing.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/request_private_plan.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/resolve_customer_payload.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/service_certificate.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/subscription_lifecycle_state.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/subscription_product.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/suggest_product.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/models/vendor_subscription.py +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/py.typed +0 -0
- {stackit_stackitmarketplace-1.14.0 → stackit_stackitmarketplace-1.16.0}/src/stackit/stackitmarketplace/rest.py +0 -0
|
@@ -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).
|
|
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).
|
|
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).
|
|
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).
|
|
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).
|
|
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).
|
|
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
|
-
|
|
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.
|
|
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))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|