diff --git a/CHANGELOG.md b/CHANGELOG.md index 3715abc89..a061660dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,12 @@ - [v1.3.0](services/rabbitmq/CHANGELOG.md#v130) - **Breaking Change/Fix:** `create_backup` operation now returns `CreateBackupResponseItem` instead of `List[CreateBackupResponseItem]` The return type now correctly models the actual JSON response, this operation was broken beforehand. +- `telemetrylink`: + - [v0.4.1](services/telemetrylink/CHANGELOG.md#v041) + - **Improvement:** Add validation for `description` field in `TelemetryLinkResponse` model +- `telemetryrouter`: + - [v0.5.1](services/telemetryrouter/CHANGELOG.md#v051) + - **Improvement:** Add validation for `description` field in `AccessTokenBaseRequest`, `AccessTokenBaseResponse`, `CreateAccessTokenPayload`, `CreateAccessTokenResponse`, `DestinationResponse`, `GetAccessTokenResponse`, `TelemetryRouterResponse`, `UpdateAccessTokenPayload` and `UpdateAccessTokenResponse` models - `valkey`: - [v0.2.0](services/valkey/CHANGELOG.md#v020) - **Breaking Change/Fix:** `create_backup` operation now returns `CreateBackupResponseItem` instead of `List[CreateBackupResponseItem]` diff --git a/services/telemetrylink/CHANGELOG.md b/services/telemetrylink/CHANGELOG.md index 3d30e2a56..effd8f62c 100644 --- a/services/telemetrylink/CHANGELOG.md +++ b/services/telemetrylink/CHANGELOG.md @@ -1,3 +1,6 @@ +## v0.4.1 +- **Improvement:** Add validation for `description` field in `TelemetryLinkResponse` model + ## v0.4.0 - **Improvement:** Add validation for `Description` field - **Feature:** Add support for `if_none_match` header in `create_or_update_folder_telemetry_link`, `create_or_update_organization_telemetry_link` and `create_or_update_project_telemetry_link` diff --git a/services/telemetrylink/oas_commit b/services/telemetrylink/oas_commit index 1538b64bb..e05d493f3 100644 --- a/services/telemetrylink/oas_commit +++ b/services/telemetrylink/oas_commit @@ -1 +1 @@ -d5bd75f47f4b364fa6f71663efb4ba41ec703ac8 +da4701b7dbe20e984aef89711bb9ba716e19fcba diff --git a/services/telemetrylink/pyproject.toml b/services/telemetrylink/pyproject.toml index 6c820b425..806d36a68 100644 --- a/services/telemetrylink/pyproject.toml +++ b/services/telemetrylink/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "stackit-telemetrylink" -version = "v0.4.0" +version = "v0.4.1" description = "STACKIT Telemetry Link API" authors = [{name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud"}] requires-python = ">=3.10,<4.0" diff --git a/services/telemetrylink/src/stackit/telemetrylink/models/telemetry_link_response.py b/services/telemetrylink/src/stackit/telemetrylink/models/telemetry_link_response.py index d5a134fa8..ace9b0f07 100644 --- a/services/telemetrylink/src/stackit/telemetrylink/models/telemetry_link_response.py +++ b/services/telemetrylink/src/stackit/telemetrylink/models/telemetry_link_response.py @@ -39,7 +39,7 @@ class TelemetryLinkResponse(BaseModel): access_token: Optional[StrictStr] = Field(default=None, description="The access token.", alias="accessToken") create_time: datetime = Field(description="The point in time the resource was created.", alias="createTime") - description: Optional[StrictStr] = Field( + description: Optional[Annotated[str, Field(strict=True, max_length=1024)]] = Field( default=None, description="The description is a longer text chosen by the user to provide more context for the resource.", ) @@ -80,6 +80,19 @@ def create_time_change_year_zero_to_one(cls, value): return "0001" + value[4:] # Take "0001" and append the rest of the string return value + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("region_id") def region_id_validate_enum(cls, value): """Validates the enum""" diff --git a/services/telemetrylink/uv.lock b/services/telemetrylink/uv.lock index a8c72e5cf..439d5f67f 100644 --- a/services/telemetrylink/uv.lock +++ b/services/telemetrylink/uv.lock @@ -1057,7 +1057,7 @@ dev = [ [[package]] name = "stackit-telemetrylink" -version = "0.4.0" +version = "0.4.1" source = { editable = "." } dependencies = [ { name = "pydantic" }, diff --git a/services/telemetryrouter/CHANGELOG.md b/services/telemetryrouter/CHANGELOG.md index 8105b4e4e..8ad0a17fa 100644 --- a/services/telemetryrouter/CHANGELOG.md +++ b/services/telemetryrouter/CHANGELOG.md @@ -1,3 +1,6 @@ +## v0.5.1 +- **Improvement:** Add validation for `description` field in `AccessTokenBaseRequest`, `AccessTokenBaseResponse`, `CreateAccessTokenPayload`, `CreateAccessTokenResponse`, `DestinationResponse`, `GetAccessTokenResponse`, `TelemetryRouterResponse`, `UpdateAccessTokenPayload` and `UpdateAccessTokenResponse` models + ## v0.5.0 - **Improvement:** Add validation for `Description` field diff --git a/services/telemetryrouter/oas_commit b/services/telemetryrouter/oas_commit index 9df10dbb7..e05d493f3 100644 --- a/services/telemetryrouter/oas_commit +++ b/services/telemetryrouter/oas_commit @@ -1 +1 @@ -704bc151ecb2fa86e14ed14e7066163b24c08138 +da4701b7dbe20e984aef89711bb9ba716e19fcba diff --git a/services/telemetryrouter/pyproject.toml b/services/telemetryrouter/pyproject.toml index 935d984d3..3268e5cb8 100644 --- a/services/telemetryrouter/pyproject.toml +++ b/services/telemetryrouter/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "stackit-telemetryrouter" -version = "v0.5.0" +version = "v0.5.1" description = "STACKIT Telemetry Router API" authors = [{name = "STACKIT Developer Tools", email = "developer-tools@stackit.cloud"}] requires-python = ">=3.10,<4.0" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_request.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_request.py index 90dd8e29b..387cf27ea 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_request.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_request.py @@ -40,6 +40,19 @@ class AccessTokenBaseRequest(BaseModel): ) __properties: ClassVar[List[str]] = ["description", "displayName", "ttl"] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_response.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_response.py index 319aca477..5521a2c2b 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_response.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/access_token_base_response.py @@ -46,6 +46,19 @@ class AccessTokenBaseResponse(BaseModel): status: StrictStr __properties: ClassVar[List[str]] = ["creatorId", "description", "displayName", "expirationTime", "id", "status"] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_payload.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_payload.py index d2a415b06..5aaed1d4c 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_payload.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_payload.py @@ -40,6 +40,19 @@ class CreateAccessTokenPayload(BaseModel): ) __properties: ClassVar[List[str]] = ["description", "displayName", "ttl"] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_response.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_response.py index 289c25f83..67df071f4 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_response.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/create_access_token_response.py @@ -55,6 +55,19 @@ class CreateAccessTokenResponse(BaseModel): "accessToken", ] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/destination_response.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/destination_response.py index c6b9a703b..09baf467c 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/destination_response.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/destination_response.py @@ -74,6 +74,19 @@ def credential_type_validate_enum(cls, value): raise ValueError("must be one of enum values ('bearerToken', 'basicAuth', 'accessKey')") return value + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/get_access_token_response.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/get_access_token_response.py index 9053aa434..8662da0be 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/get_access_token_response.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/get_access_token_response.py @@ -46,6 +46,19 @@ class GetAccessTokenResponse(BaseModel): status: StrictStr __properties: ClassVar[List[str]] = ["creatorId", "description", "displayName", "expirationTime", "id", "status"] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/telemetry_router_response.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/telemetry_router_response.py index 934467361..7c4e59b1c 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/telemetry_router_response.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/telemetry_router_response.py @@ -59,6 +59,19 @@ def creation_time_change_year_zero_to_one(cls, value): return "0001" + value[4:] # Take "0001" and append the rest of the string return value + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_payload.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_payload.py index 7e7a10040..28ff31807 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_payload.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_payload.py @@ -34,6 +34,19 @@ class UpdateAccessTokenPayload(BaseModel): ) __properties: ClassVar[List[str]] = ["description", "displayName"] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_response.py b/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_response.py index e82063312..3aa7ec4d7 100644 --- a/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_response.py +++ b/services/telemetryrouter/src/stackit/telemetryrouter/models/update_access_token_response.py @@ -46,6 +46,19 @@ class UpdateAccessTokenResponse(BaseModel): status: StrictStr __properties: ClassVar[List[str]] = ["creatorId", "description", "displayName", "expirationTime", "id", "status"] + @field_validator("description") + def description_validate_regular_expression(cls, value): + """Validates the regular expression""" + if value is None: + return value + + if not isinstance(value, str): + value = str(value) + + if not re.match(r"^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$", value): + raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9][a-zA-Z0-9 \-]*)?$/") + return value + @field_validator("display_name") def display_name_validate_regular_expression(cls, value): """Validates the regular expression""" diff --git a/services/telemetryrouter/uv.lock b/services/telemetryrouter/uv.lock index 21a1c38e6..7c0fdf7b1 100644 --- a/services/telemetryrouter/uv.lock +++ b/services/telemetryrouter/uv.lock @@ -1057,7 +1057,7 @@ dev = [ [[package]] name = "stackit-telemetryrouter" -version = "0.5.0" +version = "0.5.1" source = { editable = "." } dependencies = [ { name = "pydantic" },