Skip to content

Commit ac3d863

Browse files
feat(account): add audit trail resource type for contract api (scaleway#1410)
Co-authored-by: esoulard <esoulard@scaleway.com>
1 parent ee154cb commit ac3d863

File tree

6 files changed

+242
-0
lines changed

6 files changed

+242
-0
lines changed

scaleway-async/scaleway_async/audit_trail/v1alpha1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from .types import ListExportJobsRequestOrderBy
1313
from .types import ResourceType
1414
from .types import SystemEventKind
15+
from .types import AccountContractSignatureInfoAccountContractInfo
16+
from .types import AccountContractSignatureInfo
1517
from .types import AccountOrganizationInfo
1618
from .types import AccountProjectInfo
1719
from .types import AccountUserInfo
@@ -81,6 +83,8 @@
8183
"ListExportJobsRequestOrderBy",
8284
"ResourceType",
8385
"SystemEventKind",
86+
"AccountContractSignatureInfoAccountContractInfo",
87+
"AccountContractSignatureInfo",
8488
"AccountOrganizationInfo",
8589
"AccountProjectInfo",
8690
"AccountUserInfo",

scaleway-async/scaleway_async/audit_trail/v1alpha1/marshalling.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
ExportJobS3,
1919
ExportJobStatus,
2020
ExportJob,
21+
AccountContractSignatureInfoAccountContractInfo,
22+
AccountContractSignatureInfo,
2123
AccountOrganizationInfo,
2224
AccountProjectInfo,
2325
AccountUserInfo,
@@ -188,6 +190,92 @@ def unmarshal_ExportJob(data: Any) -> ExportJob:
188190
return ExportJob(**args)
189191

190192

193+
def unmarshal_AccountContractSignatureInfoAccountContractInfo(
194+
data: Any,
195+
) -> AccountContractSignatureInfoAccountContractInfo:
196+
if not isinstance(data, dict):
197+
raise TypeError(
198+
"Unmarshalling the type 'AccountContractSignatureInfoAccountContractInfo' failed as data isn't a dictionary."
199+
)
200+
201+
args: dict[str, Any] = {}
202+
203+
field = data.get("id", None)
204+
if field is not None:
205+
args["id"] = field
206+
else:
207+
args["id"] = None
208+
209+
field = data.get("type", None)
210+
if field is not None:
211+
args["type_"] = field
212+
else:
213+
args["type_"] = None
214+
215+
field = data.get("name", None)
216+
if field is not None:
217+
args["name"] = field
218+
else:
219+
args["name"] = None
220+
221+
field = data.get("version", None)
222+
if field is not None:
223+
args["version"] = field
224+
else:
225+
args["version"] = None
226+
227+
field = data.get("created_at", None)
228+
if field is not None:
229+
args["created_at"] = parser.isoparse(field) if isinstance(field, str) else field
230+
else:
231+
args["created_at"] = None
232+
233+
field = data.get("updated_at", None)
234+
if field is not None:
235+
args["updated_at"] = parser.isoparse(field) if isinstance(field, str) else field
236+
else:
237+
args["updated_at"] = None
238+
239+
return AccountContractSignatureInfoAccountContractInfo(**args)
240+
241+
242+
def unmarshal_AccountContractSignatureInfo(data: Any) -> AccountContractSignatureInfo:
243+
if not isinstance(data, dict):
244+
raise TypeError(
245+
"Unmarshalling the type 'AccountContractSignatureInfo' failed as data isn't a dictionary."
246+
)
247+
248+
args: dict[str, Any] = {}
249+
250+
field = data.get("signed_by_account_root_user_id", None)
251+
if field is not None:
252+
args["signed_by_account_root_user_id"] = field
253+
else:
254+
args["signed_by_account_root_user_id"] = None
255+
256+
field = data.get("signed_at", None)
257+
if field is not None:
258+
args["signed_at"] = parser.isoparse(field) if isinstance(field, str) else field
259+
else:
260+
args["signed_at"] = None
261+
262+
field = data.get("expires_at", None)
263+
if field is not None:
264+
args["expires_at"] = parser.isoparse(field) if isinstance(field, str) else field
265+
else:
266+
args["expires_at"] = None
267+
268+
field = data.get("contract", None)
269+
if field is not None:
270+
args["contract"] = unmarshal_AccountContractSignatureInfoAccountContractInfo(
271+
field
272+
)
273+
else:
274+
args["contract"] = None
275+
276+
return AccountContractSignatureInfo(**args)
277+
278+
191279
def unmarshal_AccountOrganizationInfo(data: Any) -> AccountOrganizationInfo:
192280
if not isinstance(data, dict):
193281
raise TypeError(
@@ -1015,6 +1103,14 @@ def unmarshal_Resource(data: Any) -> Resource:
10151103
else:
10161104
args["edge_services_backend_stage_info"] = None
10171105

1106+
field = data.get("account_contract_signature_info", None)
1107+
if field is not None:
1108+
args["account_contract_signature_info"] = (
1109+
unmarshal_AccountContractSignatureInfo(field)
1110+
)
1111+
else:
1112+
args["account_contract_signature_info"] = None
1113+
10181114
return Resource(**args)
10191115

10201116

scaleway-async/scaleway_async/audit_trail/v1alpha1/types.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class ResourceType(str, Enum, metaclass=StrEnumMeta):
134134
ACCOUNT_USER = "account_user"
135135
ACCOUNT_ORGANIZATION = "account_organization"
136136
ACCOUNT_PROJECT = "account_project"
137+
ACCOUNT_CONTRACT_SIGNATURE = "account_contract_signature"
137138
INSTANCE_SERVER = "instance_server"
138139
INSTANCE_PLACEMENT_GROUP = "instance_placement_group"
139140
INSTANCE_SECURITY_GROUP = "instance_security_group"
@@ -183,6 +184,24 @@ def __str__(self) -> str:
183184
return str(self.value)
184185

185186

187+
@dataclass
188+
class AccountContractSignatureInfoAccountContractInfo:
189+
id: str
190+
type_: str
191+
name: str
192+
version: int
193+
created_at: Optional[datetime] = None
194+
updated_at: Optional[datetime] = None
195+
196+
197+
@dataclass
198+
class AccountContractSignatureInfo:
199+
signed_by_account_root_user_id: str
200+
signed_at: Optional[datetime] = None
201+
expires_at: Optional[datetime] = None
202+
contract: Optional[AccountContractSignatureInfoAccountContractInfo] = None
203+
204+
186205
@dataclass
187206
class AccountOrganizationInfo:
188207
pass
@@ -425,6 +444,8 @@ class Resource:
425444

426445
edge_services_backend_stage_info: Optional[EdgeServicesBackendStageInfo] = None
427446

447+
account_contract_signature_info: Optional[AccountContractSignatureInfo] = None
448+
428449

429450
@dataclass
430451
class EventPrincipal:

scaleway/scaleway/audit_trail/v1alpha1/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
from .types import ListExportJobsRequestOrderBy
1313
from .types import ResourceType
1414
from .types import SystemEventKind
15+
from .types import AccountContractSignatureInfoAccountContractInfo
16+
from .types import AccountContractSignatureInfo
1517
from .types import AccountOrganizationInfo
1618
from .types import AccountProjectInfo
1719
from .types import AccountUserInfo
@@ -81,6 +83,8 @@
8183
"ListExportJobsRequestOrderBy",
8284
"ResourceType",
8385
"SystemEventKind",
86+
"AccountContractSignatureInfoAccountContractInfo",
87+
"AccountContractSignatureInfo",
8488
"AccountOrganizationInfo",
8589
"AccountProjectInfo",
8690
"AccountUserInfo",

scaleway/scaleway/audit_trail/v1alpha1/marshalling.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
ExportJobS3,
1919
ExportJobStatus,
2020
ExportJob,
21+
AccountContractSignatureInfoAccountContractInfo,
22+
AccountContractSignatureInfo,
2123
AccountOrganizationInfo,
2224
AccountProjectInfo,
2325
AccountUserInfo,
@@ -188,6 +190,92 @@ def unmarshal_ExportJob(data: Any) -> ExportJob:
188190
return ExportJob(**args)
189191

190192

193+
def unmarshal_AccountContractSignatureInfoAccountContractInfo(
194+
data: Any,
195+
) -> AccountContractSignatureInfoAccountContractInfo:
196+
if not isinstance(data, dict):
197+
raise TypeError(
198+
"Unmarshalling the type 'AccountContractSignatureInfoAccountContractInfo' failed as data isn't a dictionary."
199+
)
200+
201+
args: dict[str, Any] = {}
202+
203+
field = data.get("id", None)
204+
if field is not None:
205+
args["id"] = field
206+
else:
207+
args["id"] = None
208+
209+
field = data.get("type", None)
210+
if field is not None:
211+
args["type_"] = field
212+
else:
213+
args["type_"] = None
214+
215+
field = data.get("name", None)
216+
if field is not None:
217+
args["name"] = field
218+
else:
219+
args["name"] = None
220+
221+
field = data.get("version", None)
222+
if field is not None:
223+
args["version"] = field
224+
else:
225+
args["version"] = None
226+
227+
field = data.get("created_at", None)
228+
if field is not None:
229+
args["created_at"] = parser.isoparse(field) if isinstance(field, str) else field
230+
else:
231+
args["created_at"] = None
232+
233+
field = data.get("updated_at", None)
234+
if field is not None:
235+
args["updated_at"] = parser.isoparse(field) if isinstance(field, str) else field
236+
else:
237+
args["updated_at"] = None
238+
239+
return AccountContractSignatureInfoAccountContractInfo(**args)
240+
241+
242+
def unmarshal_AccountContractSignatureInfo(data: Any) -> AccountContractSignatureInfo:
243+
if not isinstance(data, dict):
244+
raise TypeError(
245+
"Unmarshalling the type 'AccountContractSignatureInfo' failed as data isn't a dictionary."
246+
)
247+
248+
args: dict[str, Any] = {}
249+
250+
field = data.get("signed_by_account_root_user_id", None)
251+
if field is not None:
252+
args["signed_by_account_root_user_id"] = field
253+
else:
254+
args["signed_by_account_root_user_id"] = None
255+
256+
field = data.get("signed_at", None)
257+
if field is not None:
258+
args["signed_at"] = parser.isoparse(field) if isinstance(field, str) else field
259+
else:
260+
args["signed_at"] = None
261+
262+
field = data.get("expires_at", None)
263+
if field is not None:
264+
args["expires_at"] = parser.isoparse(field) if isinstance(field, str) else field
265+
else:
266+
args["expires_at"] = None
267+
268+
field = data.get("contract", None)
269+
if field is not None:
270+
args["contract"] = unmarshal_AccountContractSignatureInfoAccountContractInfo(
271+
field
272+
)
273+
else:
274+
args["contract"] = None
275+
276+
return AccountContractSignatureInfo(**args)
277+
278+
191279
def unmarshal_AccountOrganizationInfo(data: Any) -> AccountOrganizationInfo:
192280
if not isinstance(data, dict):
193281
raise TypeError(
@@ -1015,6 +1103,14 @@ def unmarshal_Resource(data: Any) -> Resource:
10151103
else:
10161104
args["edge_services_backend_stage_info"] = None
10171105

1106+
field = data.get("account_contract_signature_info", None)
1107+
if field is not None:
1108+
args["account_contract_signature_info"] = (
1109+
unmarshal_AccountContractSignatureInfo(field)
1110+
)
1111+
else:
1112+
args["account_contract_signature_info"] = None
1113+
10181114
return Resource(**args)
10191115

10201116

scaleway/scaleway/audit_trail/v1alpha1/types.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class ResourceType(str, Enum, metaclass=StrEnumMeta):
134134
ACCOUNT_USER = "account_user"
135135
ACCOUNT_ORGANIZATION = "account_organization"
136136
ACCOUNT_PROJECT = "account_project"
137+
ACCOUNT_CONTRACT_SIGNATURE = "account_contract_signature"
137138
INSTANCE_SERVER = "instance_server"
138139
INSTANCE_PLACEMENT_GROUP = "instance_placement_group"
139140
INSTANCE_SECURITY_GROUP = "instance_security_group"
@@ -183,6 +184,24 @@ def __str__(self) -> str:
183184
return str(self.value)
184185

185186

187+
@dataclass
188+
class AccountContractSignatureInfoAccountContractInfo:
189+
id: str
190+
type_: str
191+
name: str
192+
version: int
193+
created_at: Optional[datetime] = None
194+
updated_at: Optional[datetime] = None
195+
196+
197+
@dataclass
198+
class AccountContractSignatureInfo:
199+
signed_by_account_root_user_id: str
200+
signed_at: Optional[datetime] = None
201+
expires_at: Optional[datetime] = None
202+
contract: Optional[AccountContractSignatureInfoAccountContractInfo] = None
203+
204+
186205
@dataclass
187206
class AccountOrganizationInfo:
188207
pass
@@ -425,6 +444,8 @@ class Resource:
425444

426445
edge_services_backend_stage_info: Optional[EdgeServicesBackendStageInfo] = None
427446

447+
account_contract_signature_info: Optional[AccountContractSignatureInfo] = None
448+
428449

429450
@dataclass
430451
class EventPrincipal:

0 commit comments

Comments
 (0)