stackit-stackitmarketplace 1.9.0__tar.gz → 1.11.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.9.0 → stackit_stackitmarketplace-1.11.0}/PKG-INFO +5 -2
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/pyproject.toml +1 -1
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_detail.py +17 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_pricing_option.py +15 -2
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/subscription_product.py +12 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/LICENSE.md +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/NOTICE.txt +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/README.md +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/__init__.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/api/__init__.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/api/default_api.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/api_client.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/api_response.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/configuration.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/exceptions.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/__init__.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/approve_subscription_payload.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/assets.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/become_vendor.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_pricing_option_highlight.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_details_vendor.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_facets_value_inner.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_highlight.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_overview.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_overview_vendor.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_support_resource.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/catalog_product_vendor_terms.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/contact_sales.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/delivery_method.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/error_response.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/free_trial.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiries_create_inquiry_payload.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiry_become_vendor.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiry_contact_sales.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiry_form_type.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiry_register_testing.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiry_request_private_plan.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/inquiry_suggest_product.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/list_catalog_products_response.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/list_vendor_subscriptions_response.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/localized_version.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/notice_period.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/offer_type.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/price_type.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/pricing_option_unit.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/product_lifecycle_state.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/register_testing.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/request_private_plan.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/resolve_customer_payload.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/service_certificate.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/subscription_lifecycle_state.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/suggest_product.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/models/vendor_subscription.py +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/py.typed +0 -0
- {stackit_stackitmarketplace-1.9.0 → stackit_stackitmarketplace-1.11.0}/src/stackit/stackitmarketplace/rest.py +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: stackit-stackitmarketplace
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.11.0
|
|
4
4
|
Summary: STACKIT Marketplace API
|
|
5
|
+
License-File: LICENSE.md
|
|
6
|
+
License-File: NOTICE.txt
|
|
5
7
|
Author: STACKIT Developer Tools
|
|
6
8
|
Author-email: developer-tools@stackit.cloud
|
|
7
9
|
Requires-Python: >=3.9,<4.0
|
|
@@ -13,6 +15,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
13
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
15
17
|
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
19
|
Requires-Dist: pydantic (>=2.9.2)
|
|
17
20
|
Requires-Dist: python-dateutil (>=2.9.0.post0)
|
|
18
21
|
Requires-Dist: requests (>=2.32.3)
|
|
@@ -63,6 +63,9 @@ class CatalogProductDetail(BaseModel):
|
|
|
63
63
|
default=None, description="The list of categories associated to the product."
|
|
64
64
|
)
|
|
65
65
|
delivery_method: DeliveryMethod = Field(alias="deliveryMethod")
|
|
66
|
+
demo_url: Optional[Annotated[str, Field(strict=True, max_length=512)]] = Field(
|
|
67
|
+
default=None, description="The URL to a demo if available.", alias="demoUrl"
|
|
68
|
+
)
|
|
66
69
|
description: StrictStr = Field(description="The product description.")
|
|
67
70
|
documentation_url: Annotated[str, Field(strict=True, max_length=512)] = Field(
|
|
68
71
|
description="The documentation URL.", alias="documentationUrl"
|
|
@@ -108,6 +111,7 @@ class CatalogProductDetail(BaseModel):
|
|
|
108
111
|
"assets",
|
|
109
112
|
"categories",
|
|
110
113
|
"deliveryMethod",
|
|
114
|
+
"demoUrl",
|
|
111
115
|
"description",
|
|
112
116
|
"documentationUrl",
|
|
113
117
|
"email",
|
|
@@ -129,6 +133,18 @@ class CatalogProductDetail(BaseModel):
|
|
|
129
133
|
"videoUrl",
|
|
130
134
|
]
|
|
131
135
|
|
|
136
|
+
@field_validator("demo_url")
|
|
137
|
+
def demo_url_validate_regular_expression(cls, value):
|
|
138
|
+
"""Validates the regular expression"""
|
|
139
|
+
if value is None:
|
|
140
|
+
return value
|
|
141
|
+
|
|
142
|
+
if not re.match(r"^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$", value):
|
|
143
|
+
raise ValueError(
|
|
144
|
+
r"must validate the regular expression /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/"
|
|
145
|
+
)
|
|
146
|
+
return value
|
|
147
|
+
|
|
132
148
|
@field_validator("documentation_url")
|
|
133
149
|
def documentation_url_validate_regular_expression(cls, value):
|
|
134
150
|
"""Validates the regular expression"""
|
|
@@ -260,6 +276,7 @@ class CatalogProductDetail(BaseModel):
|
|
|
260
276
|
"assets": Assets.from_dict(obj["assets"]) if obj.get("assets") is not None else None,
|
|
261
277
|
"categories": obj.get("categories"),
|
|
262
278
|
"deliveryMethod": obj.get("deliveryMethod"),
|
|
279
|
+
"demoUrl": obj.get("demoUrl"),
|
|
263
280
|
"description": obj.get("description"),
|
|
264
281
|
"documentationUrl": obj.get("documentationUrl"),
|
|
265
282
|
"email": obj.get("email"),
|
|
@@ -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 typing import Any, ClassVar, Dict, List, Optional, Set
|
|
20
21
|
|
|
21
|
-
from pydantic import BaseModel, ConfigDict, Field, StrictStr
|
|
22
|
-
from typing_extensions import Self
|
|
22
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictStr, field_validator
|
|
23
|
+
from typing_extensions import Annotated, Self
|
|
23
24
|
|
|
24
25
|
from stackit.stackitmarketplace.models.catalog_pricing_option_highlight import (
|
|
25
26
|
CatalogPricingOptionHighlight,
|
|
@@ -38,6 +39,9 @@ class CatalogProductPricingOption(BaseModel):
|
|
|
38
39
|
highlights: List[CatalogPricingOptionHighlight] = Field(description="The list of highlights.")
|
|
39
40
|
name: StrictStr = Field(description="The pricing option name.")
|
|
40
41
|
notice_period: Optional[NoticePeriod] = Field(default=None, alias="noticePeriod")
|
|
42
|
+
plan_id: Annotated[str, Field(min_length=10, strict=True, max_length=29)] = Field(
|
|
43
|
+
description="The user-readable plan ID of a pricing option.", alias="planId"
|
|
44
|
+
)
|
|
41
45
|
price_type: Optional[PriceType] = Field(default=None, alias="priceType")
|
|
42
46
|
pricing_plan: Optional[StrictStr] = Field(
|
|
43
47
|
default=None, description="Additional price type information.", alias="pricingPlan"
|
|
@@ -54,6 +58,7 @@ class CatalogProductPricingOption(BaseModel):
|
|
|
54
58
|
"highlights",
|
|
55
59
|
"name",
|
|
56
60
|
"noticePeriod",
|
|
61
|
+
"planId",
|
|
57
62
|
"priceType",
|
|
58
63
|
"pricingPlan",
|
|
59
64
|
"rate",
|
|
@@ -63,6 +68,13 @@ class CatalogProductPricingOption(BaseModel):
|
|
|
63
68
|
"unit",
|
|
64
69
|
]
|
|
65
70
|
|
|
71
|
+
@field_validator("plan_id")
|
|
72
|
+
def plan_id_validate_regular_expression(cls, value):
|
|
73
|
+
"""Validates the regular expression"""
|
|
74
|
+
if not re.match(r"^[a-z0-9-]{1,20}-[0-9a-f]{8}$", value):
|
|
75
|
+
raise ValueError(r"must validate the regular expression /^[a-z0-9-]{1,20}-[0-9a-f]{8}$/")
|
|
76
|
+
return value
|
|
77
|
+
|
|
66
78
|
model_config = ConfigDict(
|
|
67
79
|
populate_by_name=True,
|
|
68
80
|
validate_assignment=True,
|
|
@@ -133,6 +145,7 @@ class CatalogProductPricingOption(BaseModel):
|
|
|
133
145
|
"noticePeriod": (
|
|
134
146
|
NoticePeriod.from_dict(obj["noticePeriod"]) if obj.get("noticePeriod") is not None else None
|
|
135
147
|
),
|
|
148
|
+
"planId": obj.get("planId"),
|
|
136
149
|
"priceType": obj.get("priceType"),
|
|
137
150
|
"pricingPlan": obj.get("pricingPlan"),
|
|
138
151
|
"rate": obj.get("rate"),
|
|
@@ -38,6 +38,9 @@ class SubscriptionProduct(BaseModel):
|
|
|
38
38
|
assets: Optional[Assets] = None
|
|
39
39
|
delivery_method: DeliveryMethod = Field(alias="deliveryMethod")
|
|
40
40
|
lifecycle_state: ProductLifecycleState = Field(alias="lifecycleState")
|
|
41
|
+
plan_id: Annotated[str, Field(min_length=10, strict=True, max_length=29)] = Field(
|
|
42
|
+
description="The user-readable plan ID of a pricing option.", alias="planId"
|
|
43
|
+
)
|
|
41
44
|
price_type: PriceType = Field(alias="priceType")
|
|
42
45
|
pricing_plan: StrictStr = Field(description="Additional price type information.", alias="pricingPlan")
|
|
43
46
|
product_id: Annotated[str, Field(min_length=10, strict=True, max_length=29)] = Field(
|
|
@@ -62,6 +65,7 @@ class SubscriptionProduct(BaseModel):
|
|
|
62
65
|
"assets",
|
|
63
66
|
"deliveryMethod",
|
|
64
67
|
"lifecycleState",
|
|
68
|
+
"planId",
|
|
65
69
|
"priceType",
|
|
66
70
|
"pricingPlan",
|
|
67
71
|
"productId",
|
|
@@ -72,6 +76,13 @@ class SubscriptionProduct(BaseModel):
|
|
|
72
76
|
"vendorWebsiteUrl",
|
|
73
77
|
]
|
|
74
78
|
|
|
79
|
+
@field_validator("plan_id")
|
|
80
|
+
def plan_id_validate_regular_expression(cls, value):
|
|
81
|
+
"""Validates the regular expression"""
|
|
82
|
+
if not re.match(r"^[a-z0-9-]{1,20}-[0-9a-f]{8}$", value):
|
|
83
|
+
raise ValueError(r"must validate the regular expression /^[a-z0-9-]{1,20}-[0-9a-f]{8}$/")
|
|
84
|
+
return value
|
|
85
|
+
|
|
75
86
|
@field_validator("product_id")
|
|
76
87
|
def product_id_validate_regular_expression(cls, value):
|
|
77
88
|
"""Validates the regular expression"""
|
|
@@ -178,6 +189,7 @@ class SubscriptionProduct(BaseModel):
|
|
|
178
189
|
"assets": Assets.from_dict(obj["assets"]) if obj.get("assets") is not None else None,
|
|
179
190
|
"deliveryMethod": obj.get("deliveryMethod"),
|
|
180
191
|
"lifecycleState": obj.get("lifecycleState"),
|
|
192
|
+
"planId": obj.get("planId"),
|
|
181
193
|
"priceType": obj.get("priceType"),
|
|
182
194
|
"pricingPlan": obj.get("pricingPlan"),
|
|
183
195
|
"productId": obj.get("productId"),
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|