Skip to content

Commit a4daeb2

Browse files
Generate cdn
1 parent b5ad144 commit a4daeb2

17 files changed

+1201
-0
lines changed

services/cdn/src/stackit/cdn/__init__.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
"DistributionStatisticsRecord",
4141
"DistributionStatisticsRecordEntry",
4242
"DistributionStatisticsRecordRegions",
43+
"DistributionWaf",
4344
"Domain",
4445
"DomainStatus",
4546
"ErrorDetails",
@@ -59,6 +60,7 @@
5960
"HttpBackend",
6061
"HttpBackendPatch",
6162
"ListDistributionsResponse",
63+
"ListWAFCollectionsResponse",
6264
"LokiLogSink",
6365
"Optimizer",
6466
"OptimizerPatch",
@@ -74,6 +76,14 @@
7476
"PutCustomDomainResponseCertificate",
7577
"Region",
7678
"StatusError",
79+
"WAFRule",
80+
"WAFRuleCollection",
81+
"WAFRuleGroup",
82+
"WAFStatusRuleBlock",
83+
"WafConfig",
84+
"WafConfigPatch",
85+
"WafMode",
86+
"WafType",
7787
]
7888

7989
# import apis into sdk package
@@ -119,6 +129,7 @@
119129
from stackit.cdn.models.distribution_statistics_record_regions import (
120130
DistributionStatisticsRecordRegions as DistributionStatisticsRecordRegions,
121131
)
132+
from stackit.cdn.models.distribution_waf import DistributionWaf as DistributionWaf
122133
from stackit.cdn.models.domain import Domain as Domain
123134
from stackit.cdn.models.domain_status import DomainStatus as DomainStatus
124135
from stackit.cdn.models.error_details import ErrorDetails as ErrorDetails
@@ -164,6 +175,9 @@
164175
from stackit.cdn.models.list_distributions_response import (
165176
ListDistributionsResponse as ListDistributionsResponse,
166177
)
178+
from stackit.cdn.models.list_waf_collections_response import (
179+
ListWAFCollectionsResponse as ListWAFCollectionsResponse,
180+
)
167181
from stackit.cdn.models.loki_log_sink import LokiLogSink as LokiLogSink
168182
from stackit.cdn.models.optimizer import Optimizer as Optimizer
169183
from stackit.cdn.models.optimizer_patch import OptimizerPatch as OptimizerPatch
@@ -197,3 +211,15 @@
197211
)
198212
from stackit.cdn.models.region import Region as Region
199213
from stackit.cdn.models.status_error import StatusError as StatusError
214+
from stackit.cdn.models.waf_config import WafConfig as WafConfig
215+
from stackit.cdn.models.waf_config_patch import WafConfigPatch as WafConfigPatch
216+
from stackit.cdn.models.waf_mode import WafMode as WafMode
217+
from stackit.cdn.models.waf_rule import WAFRule as WAFRule
218+
from stackit.cdn.models.waf_rule_collection import (
219+
WAFRuleCollection as WAFRuleCollection,
220+
)
221+
from stackit.cdn.models.waf_rule_group import WAFRuleGroup as WAFRuleGroup
222+
from stackit.cdn.models.waf_status_rule_block import (
223+
WAFStatusRuleBlock as WAFStatusRuleBlock,
224+
)
225+
from stackit.cdn.models.waf_type import WafType as WafType

services/cdn/src/stackit/cdn/api/default_api.py

Lines changed: 300 additions & 0 deletions
Large diffs are not rendered by default.

services/cdn/src/stackit/cdn/models/__init__.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
from stackit.cdn.models.distribution_statistics_record_regions import (
3333
DistributionStatisticsRecordRegions,
3434
)
35+
from stackit.cdn.models.distribution_waf import DistributionWaf
3536
from stackit.cdn.models.domain import Domain
3637
from stackit.cdn.models.domain_status import DomainStatus
3738
from stackit.cdn.models.error_details import ErrorDetails
@@ -63,6 +64,7 @@
6364
from stackit.cdn.models.http_backend import HttpBackend
6465
from stackit.cdn.models.http_backend_patch import HttpBackendPatch
6566
from stackit.cdn.models.list_distributions_response import ListDistributionsResponse
67+
from stackit.cdn.models.list_waf_collections_response import ListWAFCollectionsResponse
6668
from stackit.cdn.models.loki_log_sink import LokiLogSink
6769
from stackit.cdn.models.optimizer import Optimizer
6870
from stackit.cdn.models.optimizer_patch import OptimizerPatch
@@ -86,3 +88,11 @@
8688
)
8789
from stackit.cdn.models.region import Region
8890
from stackit.cdn.models.status_error import StatusError
91+
from stackit.cdn.models.waf_config import WafConfig
92+
from stackit.cdn.models.waf_config_patch import WafConfigPatch
93+
from stackit.cdn.models.waf_mode import WafMode
94+
from stackit.cdn.models.waf_rule import WAFRule
95+
from stackit.cdn.models.waf_rule_collection import WAFRuleCollection
96+
from stackit.cdn.models.waf_rule_group import WAFRuleGroup
97+
from stackit.cdn.models.waf_status_rule_block import WAFStatusRuleBlock
98+
from stackit.cdn.models.waf_type import WafType

services/cdn/src/stackit/cdn/models/config.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from stackit.cdn.models.loki_log_sink import LokiLogSink
2525
from stackit.cdn.models.optimizer import Optimizer
2626
from stackit.cdn.models.region import Region
27+
from stackit.cdn.models.waf_config import WafConfig
2728

2829

2930
class Config(BaseModel):
@@ -53,6 +54,7 @@ class Config(BaseModel):
5354
)
5455
optimizer: Optional[Optimizer] = None
5556
regions: Annotated[List[Region], Field(min_length=1)]
57+
waf: WafConfig
5658
__properties: ClassVar[List[str]] = [
5759
"backend",
5860
"blockedCountries",
@@ -62,6 +64,7 @@ class Config(BaseModel):
6264
"monthlyLimitBytes",
6365
"optimizer",
6466
"regions",
67+
"waf",
6568
]
6669

6770
model_config = ConfigDict(
@@ -110,6 +113,9 @@ def to_dict(self) -> Dict[str, Any]:
110113
# override the default output from pydantic by calling `to_dict()` of optimizer
111114
if self.optimizer:
112115
_dict["optimizer"] = self.optimizer.to_dict()
116+
# override the default output from pydantic by calling `to_dict()` of waf
117+
if self.waf:
118+
_dict["waf"] = self.waf.to_dict()
113119
# set to None if default_cache_duration (nullable) is None
114120
# and model_fields_set contains the field
115121
if self.default_cache_duration is None and "default_cache_duration" in self.model_fields_set:
@@ -141,6 +147,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
141147
"monthlyLimitBytes": obj.get("monthlyLimitBytes"),
142148
"optimizer": Optimizer.from_dict(obj["optimizer"]) if obj.get("optimizer") is not None else None,
143149
"regions": obj.get("regions"),
150+
"waf": WafConfig.from_dict(obj["waf"]) if obj.get("waf") is not None else None,
144151
}
145152
)
146153
return _obj

services/cdn/src/stackit/cdn/models/config_patch.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from stackit.cdn.models.optimizer_patch import OptimizerPatch
2525
from stackit.cdn.models.patch_loki_log_sink import PatchLokiLogSink
2626
from stackit.cdn.models.region import Region
27+
from stackit.cdn.models.waf_config_patch import WafConfigPatch
2728

2829

2930
class ConfigPatch(BaseModel):
@@ -55,6 +56,7 @@ class ConfigPatch(BaseModel):
5556
)
5657
optimizer: Optional[OptimizerPatch] = None
5758
regions: Optional[Annotated[List[Region], Field(min_length=1)]] = None
59+
waf: Optional[WafConfigPatch] = None
5860
__properties: ClassVar[List[str]] = [
5961
"backend",
6062
"blockedCountries",
@@ -64,6 +66,7 @@ class ConfigPatch(BaseModel):
6466
"monthlyLimitBytes",
6567
"optimizer",
6668
"regions",
69+
"waf",
6770
]
6871

6972
model_config = ConfigDict(
@@ -112,6 +115,9 @@ def to_dict(self) -> Dict[str, Any]:
112115
# override the default output from pydantic by calling `to_dict()` of optimizer
113116
if self.optimizer:
114117
_dict["optimizer"] = self.optimizer.to_dict()
118+
# override the default output from pydantic by calling `to_dict()` of waf
119+
if self.waf:
120+
_dict["waf"] = self.waf.to_dict()
115121
# set to None if default_cache_duration (nullable) is None
116122
# and model_fields_set contains the field
117123
if self.default_cache_duration is None and "default_cache_duration" in self.model_fields_set:
@@ -148,6 +154,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
148154
"monthlyLimitBytes": obj.get("monthlyLimitBytes"),
149155
"optimizer": OptimizerPatch.from_dict(obj["optimizer"]) if obj.get("optimizer") is not None else None,
150156
"regions": obj.get("regions"),
157+
"waf": WafConfigPatch.from_dict(obj["waf"]) if obj.get("waf") is not None else None,
151158
}
152159
)
153160
return _obj

services/cdn/src/stackit/cdn/models/create_distribution_payload.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from stackit.cdn.models.optimizer import Optimizer
2424
from stackit.cdn.models.patch_loki_log_sink import PatchLokiLogSink
2525
from stackit.cdn.models.region import Region
26+
from stackit.cdn.models.waf_config import WafConfig
2627

2728

2829
class CreateDistributionPayload(BaseModel):
@@ -73,6 +74,7 @@ class CreateDistributionPayload(BaseModel):
7374
regions: Annotated[List[Region], Field(min_length=1)] = Field(
7475
description="Define in which regions you would like your content to be cached. "
7576
)
77+
waf: Optional[WafConfig] = None
7678
__properties: ClassVar[List[str]] = [
7779
"blockedCountries",
7880
"blockedIPs",
@@ -85,6 +87,7 @@ class CreateDistributionPayload(BaseModel):
8587
"originRequestHeaders",
8688
"originUrl",
8789
"regions",
90+
"waf",
8891
]
8992

9093
model_config = ConfigDict(
@@ -130,6 +133,9 @@ def to_dict(self) -> Dict[str, Any]:
130133
# override the default output from pydantic by calling `to_dict()` of optimizer
131134
if self.optimizer:
132135
_dict["optimizer"] = self.optimizer.to_dict()
136+
# override the default output from pydantic by calling `to_dict()` of waf
137+
if self.waf:
138+
_dict["waf"] = self.waf.to_dict()
133139
return _dict
134140

135141
@classmethod
@@ -154,6 +160,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
154160
"originRequestHeaders": obj.get("originRequestHeaders"),
155161
"originUrl": obj.get("originUrl"),
156162
"regions": obj.get("regions"),
163+
"waf": WafConfig.from_dict(obj["waf"]) if obj.get("waf") is not None else None,
157164
}
158165
)
159166
return _obj

services/cdn/src/stackit/cdn/models/distribution.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from typing_extensions import Annotated, Self
2323

2424
from stackit.cdn.models.config import Config
25+
from stackit.cdn.models.distribution_waf import DistributionWaf
2526
from stackit.cdn.models.domain import Domain
2627
from stackit.cdn.models.status_error import StatusError
2728

@@ -49,6 +50,7 @@ class Distribution(BaseModel):
4950
description="RFC3339 string which returns the last time the distribution configuration was modified. ",
5051
alias="updatedAt",
5152
)
53+
waf: Optional[DistributionWaf] = None
5254
__properties: ClassVar[List[str]] = [
5355
"config",
5456
"createdAt",
@@ -58,6 +60,7 @@ class Distribution(BaseModel):
5860
"projectId",
5961
"status",
6062
"updatedAt",
63+
"waf",
6164
]
6265

6366
@field_validator("status")
@@ -121,6 +124,9 @@ def to_dict(self) -> Dict[str, Any]:
121124
if _item:
122125
_items.append(_item.to_dict())
123126
_dict["errors"] = _items
127+
# override the default output from pydantic by calling `to_dict()` of waf
128+
if self.waf:
129+
_dict["waf"] = self.waf.to_dict()
124130
return _dict
125131

126132
@classmethod
@@ -146,6 +152,7 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
146152
"projectId": obj.get("projectId"),
147153
"status": obj.get("status"),
148154
"updatedAt": obj.get("updatedAt"),
155+
"waf": DistributionWaf.from_dict(obj["waf"]) if obj.get("waf") is not None else None,
149156
}
150157
)
151158
return _obj
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
# coding: utf-8
2+
3+
"""
4+
CDN API
5+
6+
API used to create and manage your CDN distributions.
7+
8+
The version of the OpenAPI document: 1beta.0.0
9+
Generated by OpenAPI Generator (https://openapi-generator.tech)
10+
11+
Do not edit the class manually.
12+
""" # noqa: E501
13+
14+
from __future__ import annotations
15+
16+
import json
17+
import pprint
18+
from typing import Any, ClassVar, Dict, List, Optional, Set
19+
20+
from pydantic import BaseModel, ConfigDict, Field
21+
from typing_extensions import Self
22+
23+
from stackit.cdn.models.waf_status_rule_block import WAFStatusRuleBlock
24+
25+
26+
class DistributionWaf(BaseModel):
27+
"""
28+
For this property to be present two pre-conditions must be met: - the WAF was enabled at least once - the query parameter ?withWafStatus is truthy This property contains the waf Status. At this point in time, this contains all resolved rules. Rules are split into 3 groups: - enabledRules - logOnlyRules - disabledRules **Do note that the global waf mode (Disabled, LogOnly, Enabled) is *NOT* reflected in this list!**
29+
""" # noqa: E501
30+
31+
disabled_rules: List[WAFStatusRuleBlock] = Field(alias="disabledRules")
32+
enabled_rules: List[WAFStatusRuleBlock] = Field(alias="enabledRules")
33+
log_only_rules: List[WAFStatusRuleBlock] = Field(alias="logOnlyRules")
34+
__properties: ClassVar[List[str]] = ["disabledRules", "enabledRules", "logOnlyRules"]
35+
36+
model_config = ConfigDict(
37+
populate_by_name=True,
38+
validate_assignment=True,
39+
protected_namespaces=(),
40+
)
41+
42+
def to_str(self) -> str:
43+
"""Returns the string representation of the model using alias"""
44+
return pprint.pformat(self.model_dump(by_alias=True))
45+
46+
def to_json(self) -> str:
47+
"""Returns the JSON representation of the model using alias"""
48+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
49+
return json.dumps(self.to_dict())
50+
51+
@classmethod
52+
def from_json(cls, json_str: str) -> Optional[Self]:
53+
"""Create an instance of DistributionWaf from a JSON string"""
54+
return cls.from_dict(json.loads(json_str))
55+
56+
def to_dict(self) -> Dict[str, Any]:
57+
"""Return the dictionary representation of the model using alias.
58+
59+
This has the following differences from calling pydantic's
60+
`self.model_dump(by_alias=True)`:
61+
62+
* `None` is only added to the output dict for nullable fields that
63+
were set at model initialization. Other fields with value `None`
64+
are ignored.
65+
"""
66+
excluded_fields: Set[str] = set([])
67+
68+
_dict = self.model_dump(
69+
by_alias=True,
70+
exclude=excluded_fields,
71+
exclude_none=True,
72+
)
73+
# override the default output from pydantic by calling `to_dict()` of each item in disabled_rules (list)
74+
_items = []
75+
if self.disabled_rules:
76+
for _item in self.disabled_rules:
77+
if _item:
78+
_items.append(_item.to_dict())
79+
_dict["disabledRules"] = _items
80+
# override the default output from pydantic by calling `to_dict()` of each item in enabled_rules (list)
81+
_items = []
82+
if self.enabled_rules:
83+
for _item in self.enabled_rules:
84+
if _item:
85+
_items.append(_item.to_dict())
86+
_dict["enabledRules"] = _items
87+
# override the default output from pydantic by calling `to_dict()` of each item in log_only_rules (list)
88+
_items = []
89+
if self.log_only_rules:
90+
for _item in self.log_only_rules:
91+
if _item:
92+
_items.append(_item.to_dict())
93+
_dict["logOnlyRules"] = _items
94+
return _dict
95+
96+
@classmethod
97+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
98+
"""Create an instance of DistributionWaf from a dict"""
99+
if obj is None:
100+
return None
101+
102+
if not isinstance(obj, dict):
103+
return cls.model_validate(obj)
104+
105+
_obj = cls.model_validate(
106+
{
107+
"disabledRules": (
108+
[WAFStatusRuleBlock.from_dict(_item) for _item in obj["disabledRules"]]
109+
if obj.get("disabledRules") is not None
110+
else None
111+
),
112+
"enabledRules": (
113+
[WAFStatusRuleBlock.from_dict(_item) for _item in obj["enabledRules"]]
114+
if obj.get("enabledRules") is not None
115+
else None
116+
),
117+
"logOnlyRules": (
118+
[WAFStatusRuleBlock.from_dict(_item) for _item in obj["logOnlyRules"]]
119+
if obj.get("logOnlyRules") is not None
120+
else None
121+
),
122+
}
123+
)
124+
return _obj

0 commit comments

Comments
 (0)