diff --git a/services/authorization/oas_commit b/services/authorization/oas_commit new file mode 100644 index 00000000..064e1081 --- /dev/null +++ b/services/authorization/oas_commit @@ -0,0 +1 @@ +cfcfc32bc1ae335acecd7bf7ffb60354fdc565ab diff --git a/services/authorization/src/stackit/authorization/__init__.py b/services/authorization/src/stackit/authorization/__init__.py index d40de2a5..e9c0c867 100644 --- a/services/authorization/src/stackit/authorization/__init__.py +++ b/services/authorization/src/stackit/authorization/__init__.py @@ -31,12 +31,10 @@ "AddCustomRoleResponse", "AddMembersPayload", "AddRolePayload", - "AssignableSubject", "DeleteRoleResponse", "ErrorResponse", "ExistingPermission", "GetRoleResponse", - "ListAssignableSubjectsResponse", "ListMembersResponse", "ListPermissionsResponse", "ListUserMembershipsResponse", @@ -79,9 +77,6 @@ from stackit.authorization.models.add_role_payload import ( AddRolePayload as AddRolePayload, ) -from stackit.authorization.models.assignable_subject import ( - AssignableSubject as AssignableSubject, -) from stackit.authorization.models.delete_role_response import ( DeleteRoleResponse as DeleteRoleResponse, ) @@ -92,9 +87,6 @@ from stackit.authorization.models.get_role_response import ( GetRoleResponse as GetRoleResponse, ) -from stackit.authorization.models.list_assignable_subjects_response import ( - ListAssignableSubjectsResponse as ListAssignableSubjectsResponse, -) from stackit.authorization.models.list_members_response import ( ListMembersResponse as ListMembersResponse, ) diff --git a/services/authorization/src/stackit/authorization/api/default_api.py b/services/authorization/src/stackit/authorization/api/default_api.py index a7f021b2..0c10bc4c 100644 --- a/services/authorization/src/stackit/authorization/api/default_api.py +++ b/services/authorization/src/stackit/authorization/api/default_api.py @@ -24,9 +24,6 @@ from stackit.authorization.models.add_role_payload import AddRolePayload from stackit.authorization.models.delete_role_response import DeleteRoleResponse from stackit.authorization.models.get_role_response import GetRoleResponse -from stackit.authorization.models.list_assignable_subjects_response import ( - ListAssignableSubjectsResponse, -) from stackit.authorization.models.list_members_response import ListMembersResponse from stackit.authorization.models.list_permissions_response import ( ListPermissionsResponse, @@ -871,273 +868,6 @@ def _delete_role_serialize( _request_auth=_request_auth, ) - @validate_call - def get_assignable_subjects( - self, - resource_type: StrictStr, - resource_id: StrictStr, - subject: Optional[StrictStr] = None, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ListAssignableSubjectsResponse: - """Get subjects assignable to a resource - - BFF endpoint for portal. List subjects assignable to a given resource. - - :param resource_type: (required) - :type resource_type: str - :param resource_id: (required) - :type resource_id: str - :param subject: - :type subject: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_assignable_subjects_serialize( - resource_type=resource_type, - resource_id=resource_id, - subject=subject, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index, - ) - - _response_types_map: Dict[str, Optional[str]] = { - "200": "ListAssignableSubjectsResponse", - "400": "ErrorResponse", - "401": "ErrorResponse", - "403": "ErrorResponse", - } - response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ).data - - @validate_call - def get_assignable_subjects_with_http_info( - self, - resource_type: StrictStr, - resource_id: StrictStr, - subject: Optional[StrictStr] = None, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> ApiResponse[ListAssignableSubjectsResponse]: - """Get subjects assignable to a resource - - BFF endpoint for portal. List subjects assignable to a given resource. - - :param resource_type: (required) - :type resource_type: str - :param resource_id: (required) - :type resource_id: str - :param subject: - :type subject: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_assignable_subjects_serialize( - resource_type=resource_type, - resource_id=resource_id, - subject=subject, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index, - ) - - _response_types_map: Dict[str, Optional[str]] = { - "200": "ListAssignableSubjectsResponse", - "400": "ErrorResponse", - "401": "ErrorResponse", - "403": "ErrorResponse", - } - response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) - response_data.read() - return self.api_client.response_deserialize( - response_data=response_data, - response_types_map=_response_types_map, - ) - - @validate_call - def get_assignable_subjects_without_preload_content( - self, - resource_type: StrictStr, - resource_id: StrictStr, - subject: Optional[StrictStr] = None, - _request_timeout: Union[ - None, - Annotated[StrictFloat, Field(gt=0)], - Tuple[Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]], - ] = None, - _request_auth: Optional[Dict[StrictStr, Any]] = None, - _content_type: Optional[StrictStr] = None, - _headers: Optional[Dict[StrictStr, Any]] = None, - _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0, - ) -> RESTResponseType: - """Get subjects assignable to a resource - - BFF endpoint for portal. List subjects assignable to a given resource. - - :param resource_type: (required) - :type resource_type: str - :param resource_id: (required) - :type resource_id: str - :param subject: - :type subject: str - :param _request_timeout: timeout setting for this request. If one - number provided, it will be total request - timeout. It can also be a pair (tuple) of - (connection, read) timeouts. - :type _request_timeout: int, tuple(int, int), optional - :param _request_auth: set to override the auth_settings for an a single - request; this effectively ignores the - authentication in the spec for a single request. - :type _request_auth: dict, optional - :param _content_type: force content-type for the request. - :type _content_type: str, Optional - :param _headers: set to override the headers for a single - request; this effectively ignores the headers - in the spec for a single request. - :type _headers: dict, optional - :param _host_index: set to override the host_index for a single - request; this effectively ignores the host_index - in the spec for a single request. - :type _host_index: int, optional - :return: Returns the result object. - """ # noqa: E501 - - _param = self._get_assignable_subjects_serialize( - resource_type=resource_type, - resource_id=resource_id, - subject=subject, - _request_auth=_request_auth, - _content_type=_content_type, - _headers=_headers, - _host_index=_host_index, - ) - - _response_types_map: Dict[str, Optional[str]] = { - "200": "ListAssignableSubjectsResponse", - "400": "ErrorResponse", - "401": "ErrorResponse", - "403": "ErrorResponse", - } - response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout) - return response_data.response - - def _get_assignable_subjects_serialize( - self, - resource_type, - resource_id, - subject, - _request_auth, - _content_type, - _headers, - _host_index, - ) -> RequestSerialized: - - _host = None - - _collection_formats: Dict[str, str] = {} - - _path_params: Dict[str, str] = {} - _query_params: List[Tuple[str, str]] = [] - _header_params: Dict[str, Optional[str]] = _headers or {} - _form_params: List[Tuple[str, str]] = [] - _files: Dict[str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]] = {} - _body_params: Optional[bytes] = None - - # process the path parameters - if resource_type is not None: - _path_params["resourceType"] = resource_type - if resource_id is not None: - _path_params["resourceId"] = resource_id - # process the query parameters - if subject is not None: - - _query_params.append(("subject", subject)) - - # process the header parameters - # process the form parameters - # process the body parameter - - # set the HTTP header `Accept` - if "Accept" not in _header_params: - _header_params["Accept"] = self.api_client.select_header_accept(["application/json"]) - - # authentication setting - _auth_settings: List[str] = [] - - return self.api_client.param_serialize( - method="GET", - resource_path="/v2/bff/{resourceType}/{resourceId}/assignableSubjects", - path_params=_path_params, - query_params=_query_params, - header_params=_header_params, - body=_body_params, - post_params=_form_params, - files=_files, - auth_settings=_auth_settings, - collection_formats=_collection_formats, - _host=_host, - _request_auth=_request_auth, - ) - @validate_call def get_role( self, diff --git a/services/authorization/src/stackit/authorization/models/__init__.py b/services/authorization/src/stackit/authorization/models/__init__.py index 3ca762f1..bcb6b9af 100644 --- a/services/authorization/src/stackit/authorization/models/__init__.py +++ b/services/authorization/src/stackit/authorization/models/__init__.py @@ -17,14 +17,10 @@ from stackit.authorization.models.add_custom_role_response import AddCustomRoleResponse from stackit.authorization.models.add_members_payload import AddMembersPayload from stackit.authorization.models.add_role_payload import AddRolePayload -from stackit.authorization.models.assignable_subject import AssignableSubject from stackit.authorization.models.delete_role_response import DeleteRoleResponse from stackit.authorization.models.error_response import ErrorResponse from stackit.authorization.models.existing_permission import ExistingPermission from stackit.authorization.models.get_role_response import GetRoleResponse -from stackit.authorization.models.list_assignable_subjects_response import ( - ListAssignableSubjectsResponse, -) from stackit.authorization.models.list_members_response import ListMembersResponse from stackit.authorization.models.list_permissions_response import ( ListPermissionsResponse, diff --git a/services/authorization/src/stackit/authorization/models/assignable_subject.py b/services/authorization/src/stackit/authorization/models/assignable_subject.py deleted file mode 100644 index bb4f2855..00000000 --- a/services/authorization/src/stackit/authorization/models/assignable_subject.py +++ /dev/null @@ -1,82 +0,0 @@ -# coding: utf-8 - -""" - STACKIT Membership API - - The Membership API is used to manage memberships, roles and permissions of STACKIT resources, like projects, folders, organizations and other resources. - - The version of the OpenAPI document: 2.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -from typing import Any, ClassVar, Dict, List, Optional, Set - -from pydantic import BaseModel, ConfigDict, Field, StrictStr -from typing_extensions import Annotated, Self - - -class AssignableSubject(BaseModel): - """ - AssignableSubject - """ # noqa: E501 - - display_name: Optional[StrictStr] = Field(default=None, alias="displayName") - subject: Annotated[str, Field(min_length=1, strict=True, max_length=255)] - __properties: ClassVar[List[str]] = ["displayName", "subject"] - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of AssignableSubject from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of AssignableSubject from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate({"displayName": obj.get("displayName"), "subject": obj.get("subject")}) - return _obj diff --git a/services/authorization/src/stackit/authorization/models/list_assignable_subjects_response.py b/services/authorization/src/stackit/authorization/models/list_assignable_subjects_response.py deleted file mode 100644 index d05992e3..00000000 --- a/services/authorization/src/stackit/authorization/models/list_assignable_subjects_response.py +++ /dev/null @@ -1,117 +0,0 @@ -# coding: utf-8 - -""" - STACKIT Membership API - - The Membership API is used to manage memberships, roles and permissions of STACKIT resources, like projects, folders, organizations and other resources. - - The version of the OpenAPI document: 2.0 - Generated by OpenAPI Generator (https://openapi-generator.tech) - - Do not edit the class manually. -""" # noqa: E501 - -from __future__ import annotations - -import json -import pprint -import re # noqa: F401 -from typing import Any, ClassVar, Dict, List, Optional, Set - -from pydantic import BaseModel, ConfigDict, Field, field_validator -from typing_extensions import Annotated, Self - -from stackit.authorization.models.assignable_subject import AssignableSubject - - -class ListAssignableSubjectsResponse(BaseModel): - """ - ListAssignableSubjectsResponse - """ # noqa: E501 - - resource_id: Annotated[str, Field(strict=True)] = Field(alias="resourceId") - resource_type: Annotated[str, Field(strict=True)] = Field(alias="resourceType") - subjects: List[AssignableSubject] - __properties: ClassVar[List[str]] = ["resourceId", "resourceType", "subjects"] - - @field_validator("resource_id") - def resource_id_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^([a-zA-Z0-9\/_|\-=+@.]{1,})$", value): - raise ValueError(r"must validate the regular expression /^([a-zA-Z0-9\/_|\-=+@.]{1,})$/") - return value - - @field_validator("resource_type") - def resource_type_validate_regular_expression(cls, value): - """Validates the regular expression""" - if not re.match(r"^[a-z](?:-?[a-z]){1,63}$", value): - raise ValueError(r"must validate the regular expression /^[a-z](?:-?[a-z]){1,63}$/") - return value - - model_config = ConfigDict( - populate_by_name=True, - validate_assignment=True, - protected_namespaces=(), - ) - - def to_str(self) -> str: - """Returns the string representation of the model using alias""" - return pprint.pformat(self.model_dump(by_alias=True)) - - def to_json(self) -> str: - """Returns the JSON representation of the model using alias""" - # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead - return json.dumps(self.to_dict()) - - @classmethod - def from_json(cls, json_str: str) -> Optional[Self]: - """Create an instance of ListAssignableSubjectsResponse from a JSON string""" - return cls.from_dict(json.loads(json_str)) - - def to_dict(self) -> Dict[str, Any]: - """Return the dictionary representation of the model using alias. - - This has the following differences from calling pydantic's - `self.model_dump(by_alias=True)`: - - * `None` is only added to the output dict for nullable fields that - were set at model initialization. Other fields with value `None` - are ignored. - """ - excluded_fields: Set[str] = set([]) - - _dict = self.model_dump( - by_alias=True, - exclude=excluded_fields, - exclude_none=True, - ) - # override the default output from pydantic by calling `to_dict()` of each item in subjects (list) - _items = [] - if self.subjects: - for _item in self.subjects: - if _item: - _items.append(_item.to_dict()) - _dict["subjects"] = _items - return _dict - - @classmethod - def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: - """Create an instance of ListAssignableSubjectsResponse from a dict""" - if obj is None: - return None - - if not isinstance(obj, dict): - return cls.model_validate(obj) - - _obj = cls.model_validate( - { - "resourceId": obj.get("resourceId"), - "resourceType": obj.get("resourceType"), - "subjects": ( - [AssignableSubject.from_dict(_item) for _item in obj["subjects"]] - if obj.get("subjects") is not None - else None - ), - } - ) - return _obj