stackit-secretsmanager 0.2.3__tar.gz → 0.4.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.
Files changed (32) hide show
  1. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/PKG-INFO +8 -4
  2. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/pyproject.toml +2 -2
  3. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/__init__.py +2 -0
  4. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/api/default_api.py +6 -0
  5. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/__init__.py +1 -0
  6. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/create_instance_payload.py +13 -2
  7. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/create_user_payload.py +7 -1
  8. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/instance.py +8 -0
  9. stackit_secretsmanager-0.4.0/src/stackit/secretsmanager/models/kms_key_payload.py +94 -0
  10. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/update_instance_payload.py +13 -2
  11. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/update_user_payload.py +7 -1
  12. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/user.py +7 -1
  13. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/LICENSE.md +0 -0
  14. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/NOTICE.txt +0 -0
  15. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/README.md +0 -0
  16. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/api/__init__.py +0 -0
  17. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/api_client.py +0 -0
  18. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/api_response.py +0 -0
  19. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/configuration.py +0 -0
  20. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/exceptions.py +0 -0
  21. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/acl.py +0 -0
  22. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/bad_request.py +0 -0
  23. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/conflict.py +0 -0
  24. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/create_acl_payload.py +0 -0
  25. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/list_acls_response.py +0 -0
  26. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/list_instances_response.py +0 -0
  27. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/list_users_response.py +0 -0
  28. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/not_found.py +0 -0
  29. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/update_acl_payload.py +0 -0
  30. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/models/update_acls_payload.py +0 -0
  31. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/py.typed +0 -0
  32. {stackit_secretsmanager-0.2.3 → stackit_secretsmanager-0.4.0}/src/stackit/secretsmanager/rest.py +0 -0
@@ -1,23 +1,27 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: stackit-secretsmanager
3
- Version: 0.2.3
3
+ Version: 0.4.0
4
4
  Summary: STACKIT Secrets Manager 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
- Requires-Python: >=3.8,<4.0
9
+ Requires-Python: >=3.9,<4.0
8
10
  Classifier: License :: OSI Approved :: Apache Software License
9
11
  Classifier: Operating System :: OS Independent
10
12
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.8
12
13
  Classifier: Programming Language :: Python :: 3.9
13
14
  Classifier: Programming Language :: Python :: 3.10
14
15
  Classifier: Programming Language :: Python :: 3.11
15
16
  Classifier: Programming Language :: Python :: 3.12
16
17
  Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Programming Language :: Python :: 3.14
17
19
  Requires-Dist: pydantic (>=2.9.2)
18
20
  Requires-Dist: python-dateutil (>=2.9.0.post0)
19
21
  Requires-Dist: requests (>=2.32.3)
20
22
  Requires-Dist: stackit-core (>=0.0.1a)
23
+ Project-URL: Homepage, https://github.com/stackitcloud/stackit-sdk-python
24
+ Project-URL: Issues, https://github.com/stackitcloud/stackit-sdk-python/issues
21
25
  Description-Content-Type: text/markdown
22
26
 
23
27
  # stackit.secretsmanager
@@ -3,7 +3,7 @@ name = "stackit-secretsmanager"
3
3
 
4
4
  [tool.poetry]
5
5
  name = "stackit-secretsmanager"
6
- version = "v0.2.3"
6
+ version = "v0.4.0"
7
7
  authors = [
8
8
  "STACKIT Developer Tools <developer-tools@stackit.cloud>",
9
9
  ]
@@ -20,7 +20,7 @@ packages = [
20
20
  ]
21
21
 
22
22
  [tool.poetry.dependencies]
23
- python = ">=3.8,<4.0"
23
+ python = ">=3.9,<4.0"
24
24
  stackit-core = ">=0.0.1a"
25
25
  requests = ">=2.32.3"
26
26
  pydantic = ">=2.9.2"
@@ -35,6 +35,7 @@ __all__ = [
35
35
  "CreateInstancePayload",
36
36
  "CreateUserPayload",
37
37
  "Instance",
38
+ "KmsKeyPayload",
38
39
  "ListACLsResponse",
39
40
  "ListInstancesResponse",
40
41
  "ListUsersResponse",
@@ -74,6 +75,7 @@ from stackit.secretsmanager.models.create_user_payload import (
74
75
  CreateUserPayload as CreateUserPayload,
75
76
  )
76
77
  from stackit.secretsmanager.models.instance import Instance as Instance
78
+ from stackit.secretsmanager.models.kms_key_payload import KmsKeyPayload as KmsKeyPayload
77
79
  from stackit.secretsmanager.models.list_acls_response import (
78
80
  ListACLsResponse as ListACLsResponse,
79
81
  )
@@ -113,6 +113,7 @@ class DefaultApi:
113
113
  "400": "BadRequest",
114
114
  "401": "str",
115
115
  "404": "NotFound",
116
+ "409": "Conflict",
116
117
  "500": None,
117
118
  }
118
119
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -187,6 +188,7 @@ class DefaultApi:
187
188
  "400": "BadRequest",
188
189
  "401": "str",
189
190
  "404": "NotFound",
191
+ "409": "Conflict",
190
192
  "500": None,
191
193
  }
192
194
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -261,6 +263,7 @@ class DefaultApi:
261
263
  "400": "BadRequest",
262
264
  "401": "str",
263
265
  "404": "NotFound",
266
+ "409": "Conflict",
264
267
  "500": None,
265
268
  }
266
269
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3626,6 +3629,7 @@ class DefaultApi:
3626
3629
  "400": "BadRequest",
3627
3630
  "401": "str",
3628
3631
  "404": "NotFound",
3632
+ "409": "Conflict",
3629
3633
  "500": None,
3630
3634
  }
3631
3635
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3700,6 +3704,7 @@ class DefaultApi:
3700
3704
  "400": "BadRequest",
3701
3705
  "401": "str",
3702
3706
  "404": "NotFound",
3707
+ "409": "Conflict",
3703
3708
  "500": None,
3704
3709
  }
3705
3710
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -3774,6 +3779,7 @@ class DefaultApi:
3774
3779
  "400": "BadRequest",
3775
3780
  "401": "str",
3776
3781
  "404": "NotFound",
3782
+ "409": "Conflict",
3777
3783
  "500": None,
3778
3784
  }
3779
3785
  response_data = self.api_client.call_api(*_param, _request_timeout=_request_timeout)
@@ -21,6 +21,7 @@ from stackit.secretsmanager.models.create_acl_payload import CreateACLPayload
21
21
  from stackit.secretsmanager.models.create_instance_payload import CreateInstancePayload
22
22
  from stackit.secretsmanager.models.create_user_payload import CreateUserPayload
23
23
  from stackit.secretsmanager.models.instance import Instance
24
+ from stackit.secretsmanager.models.kms_key_payload import KmsKeyPayload
24
25
  from stackit.secretsmanager.models.list_acls_response import ListACLsResponse
25
26
  from stackit.secretsmanager.models.list_instances_response import ListInstancesResponse
26
27
  from stackit.secretsmanager.models.list_users_response import ListUsersResponse
@@ -20,14 +20,17 @@ from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
  from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
21
  from typing_extensions import Self
22
22
 
23
+ from stackit.secretsmanager.models.kms_key_payload import KmsKeyPayload
24
+
23
25
 
24
26
  class CreateInstancePayload(BaseModel):
25
27
  """
26
28
  CreateInstancePayload
27
29
  """ # noqa: E501
28
30
 
31
+ kms_key: Optional[KmsKeyPayload] = Field(default=None, alias="kmsKey")
29
32
  name: StrictStr = Field(description="A user chosen name to distinguish multiple secrets manager instances.")
30
- __properties: ClassVar[List[str]] = ["name"]
33
+ __properties: ClassVar[List[str]] = ["kmsKey", "name"]
31
34
 
32
35
  model_config = ConfigDict(
33
36
  populate_by_name=True,
@@ -66,6 +69,9 @@ class CreateInstancePayload(BaseModel):
66
69
  exclude=excluded_fields,
67
70
  exclude_none=True,
68
71
  )
72
+ # override the default output from pydantic by calling `to_dict()` of kms_key
73
+ if self.kms_key:
74
+ _dict["kmsKey"] = self.kms_key.to_dict()
69
75
  return _dict
70
76
 
71
77
  @classmethod
@@ -77,5 +83,10 @@ class CreateInstancePayload(BaseModel):
77
83
  if not isinstance(obj, dict):
78
84
  return cls.model_validate(obj)
79
85
 
80
- _obj = cls.model_validate({"name": obj.get("name")})
86
+ _obj = cls.model_validate(
87
+ {
88
+ "kmsKey": KmsKeyPayload.from_dict(obj["kmsKey"]) if obj.get("kmsKey") is not None else None,
89
+ "name": obj.get("name"),
90
+ }
91
+ )
81
92
  return _obj
@@ -17,7 +17,13 @@ import json
17
17
  import pprint
18
18
  from typing import Any, ClassVar, Dict, List, Optional, Set
19
19
 
20
- from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
20
+ from pydantic import (
21
+ BaseModel,
22
+ ConfigDict,
23
+ Field,
24
+ StrictBool,
25
+ StrictStr,
26
+ )
21
27
  from typing_extensions import Self
22
28
 
23
29
 
@@ -20,6 +20,8 @@ from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
  from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
21
21
  from typing_extensions import Self
22
22
 
23
+ from stackit.secretsmanager.models.kms_key_payload import KmsKeyPayload
24
+
23
25
 
24
26
  class Instance(BaseModel):
25
27
  """
@@ -37,6 +39,7 @@ class Instance(BaseModel):
37
39
  alias="creationStartDate",
38
40
  )
39
41
  id: StrictStr = Field(description="A auto generated unique id which identifies the secrets manager instances.")
42
+ kms_key: Optional[KmsKeyPayload] = Field(default=None, alias="kmsKey")
40
43
  name: StrictStr = Field(description="A user chosen name to distinguish multiple secrets manager instances.")
41
44
  secret_count: StrictInt = Field(
42
45
  description="The number of secrets currently stored inside of the instance. This value will be updated once per hour.",
@@ -51,6 +54,7 @@ class Instance(BaseModel):
51
54
  "creationFinishedDate",
52
55
  "creationStartDate",
53
56
  "id",
57
+ "kmsKey",
54
58
  "name",
55
59
  "secretCount",
56
60
  "secretsEngine",
@@ -96,6 +100,9 @@ class Instance(BaseModel):
96
100
  exclude=excluded_fields,
97
101
  exclude_none=True,
98
102
  )
103
+ # override the default output from pydantic by calling `to_dict()` of kms_key
104
+ if self.kms_key:
105
+ _dict["kmsKey"] = self.kms_key.to_dict()
99
106
  return _dict
100
107
 
101
108
  @classmethod
@@ -113,6 +120,7 @@ class Instance(BaseModel):
113
120
  "creationFinishedDate": obj.get("creationFinishedDate"),
114
121
  "creationStartDate": obj.get("creationStartDate"),
115
122
  "id": obj.get("id"),
123
+ "kmsKey": KmsKeyPayload.from_dict(obj["kmsKey"]) if obj.get("kmsKey") is not None else None,
116
124
  "name": obj.get("name"),
117
125
  "secretCount": obj.get("secretCount"),
118
126
  "secretsEngine": obj.get("secretsEngine"),
@@ -0,0 +1,94 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ STACKIT Secrets Manager API
5
+
6
+ This API provides endpoints for managing the Secrets-Manager.
7
+
8
+ The version of the OpenAPI document: 1.4.1
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, StrictInt, StrictStr
21
+ from typing_extensions import Self
22
+
23
+
24
+ class KmsKeyPayload(BaseModel):
25
+ """
26
+ The key for secret encryption and decryption.
27
+ """ # noqa: E501
28
+
29
+ key_id: StrictStr = Field(description="The key UUID.", alias="keyId")
30
+ key_ring_id: StrictStr = Field(description="The key ring UUID the key is part of.", alias="keyRingId")
31
+ key_version: StrictInt = Field(description="The Key version number.", alias="keyVersion")
32
+ service_account_email: StrictStr = Field(
33
+ description="The Service account email that will consume the key. Must be in the same project as the Secrets Manager instance.",
34
+ alias="serviceAccountEmail",
35
+ )
36
+ __properties: ClassVar[List[str]] = ["keyId", "keyRingId", "keyVersion", "serviceAccountEmail"]
37
+
38
+ model_config = ConfigDict(
39
+ populate_by_name=True,
40
+ validate_assignment=True,
41
+ protected_namespaces=(),
42
+ )
43
+
44
+ def to_str(self) -> str:
45
+ """Returns the string representation of the model using alias"""
46
+ return pprint.pformat(self.model_dump(by_alias=True))
47
+
48
+ def to_json(self) -> str:
49
+ """Returns the JSON representation of the model using alias"""
50
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
51
+ return json.dumps(self.to_dict())
52
+
53
+ @classmethod
54
+ def from_json(cls, json_str: str) -> Optional[Self]:
55
+ """Create an instance of KmsKeyPayload from a JSON string"""
56
+ return cls.from_dict(json.loads(json_str))
57
+
58
+ def to_dict(self) -> Dict[str, Any]:
59
+ """Return the dictionary representation of the model using alias.
60
+
61
+ This has the following differences from calling pydantic's
62
+ `self.model_dump(by_alias=True)`:
63
+
64
+ * `None` is only added to the output dict for nullable fields that
65
+ were set at model initialization. Other fields with value `None`
66
+ are ignored.
67
+ """
68
+ excluded_fields: Set[str] = set([])
69
+
70
+ _dict = self.model_dump(
71
+ by_alias=True,
72
+ exclude=excluded_fields,
73
+ exclude_none=True,
74
+ )
75
+ return _dict
76
+
77
+ @classmethod
78
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
79
+ """Create an instance of KmsKeyPayload 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
+ {
88
+ "keyId": obj.get("keyId"),
89
+ "keyRingId": obj.get("keyRingId"),
90
+ "keyVersion": obj.get("keyVersion"),
91
+ "serviceAccountEmail": obj.get("serviceAccountEmail"),
92
+ }
93
+ )
94
+ return _obj
@@ -20,14 +20,17 @@ from typing import Any, ClassVar, Dict, List, Optional, Set
20
20
  from pydantic import BaseModel, ConfigDict, Field, StrictStr
21
21
  from typing_extensions import Self
22
22
 
23
+ from stackit.secretsmanager.models.kms_key_payload import KmsKeyPayload
24
+
23
25
 
24
26
  class UpdateInstancePayload(BaseModel):
25
27
  """
26
28
  UpdateInstancePayload
27
29
  """ # noqa: E501
28
30
 
31
+ kms_key: Optional[KmsKeyPayload] = Field(default=None, alias="kmsKey")
29
32
  name: StrictStr = Field(description="A user chosen name to distinguish multiple secrets manager instances.")
30
- __properties: ClassVar[List[str]] = ["name"]
33
+ __properties: ClassVar[List[str]] = ["kmsKey", "name"]
31
34
 
32
35
  model_config = ConfigDict(
33
36
  populate_by_name=True,
@@ -66,6 +69,9 @@ class UpdateInstancePayload(BaseModel):
66
69
  exclude=excluded_fields,
67
70
  exclude_none=True,
68
71
  )
72
+ # override the default output from pydantic by calling `to_dict()` of kms_key
73
+ if self.kms_key:
74
+ _dict["kmsKey"] = self.kms_key.to_dict()
69
75
  return _dict
70
76
 
71
77
  @classmethod
@@ -77,5 +83,10 @@ class UpdateInstancePayload(BaseModel):
77
83
  if not isinstance(obj, dict):
78
84
  return cls.model_validate(obj)
79
85
 
80
- _obj = cls.model_validate({"name": obj.get("name")})
86
+ _obj = cls.model_validate(
87
+ {
88
+ "kmsKey": KmsKeyPayload.from_dict(obj["kmsKey"]) if obj.get("kmsKey") is not None else None,
89
+ "name": obj.get("name"),
90
+ }
91
+ )
81
92
  return _obj
@@ -17,7 +17,13 @@ import json
17
17
  import pprint
18
18
  from typing import Any, ClassVar, Dict, List, Optional, Set
19
19
 
20
- from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
20
+ from pydantic import (
21
+ BaseModel,
22
+ ConfigDict,
23
+ Field,
24
+ StrictBool,
25
+ StrictStr,
26
+ )
21
27
  from typing_extensions import Self
22
28
 
23
29
 
@@ -17,7 +17,13 @@ import json
17
17
  import pprint
18
18
  from typing import Any, ClassVar, Dict, List, Optional, Set
19
19
 
20
- from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
20
+ from pydantic import (
21
+ BaseModel,
22
+ ConfigDict,
23
+ Field,
24
+ StrictBool,
25
+ StrictStr,
26
+ )
21
27
  from typing_extensions import Self
22
28
 
23
29