diff --git a/scaleway-async/scaleway_async/tem/v1alpha1/__init__.py b/scaleway-async/scaleway_async/tem/v1alpha1/__init__.py index 53ba0d7c..fa738313 100644 --- a/scaleway-async/scaleway_async/tem/v1alpha1/__init__.py +++ b/scaleway-async/scaleway_async/tem/v1alpha1/__init__.py @@ -32,6 +32,7 @@ from .types import DomainLastStatusAutoconfigState from .types import DomainLastStatusDkimRecord from .types import DomainLastStatusDmarcRecord +from .types import DomainLastStatusMXRecord from .types import DomainLastStatusSpfRecord from .types import Domain from .types import OfferSubscription @@ -118,6 +119,7 @@ "DomainLastStatusAutoconfigState", "DomainLastStatusDkimRecord", "DomainLastStatusDmarcRecord", + "DomainLastStatusMXRecord", "DomainLastStatusSpfRecord", "Domain", "OfferSubscription", diff --git a/scaleway-async/scaleway_async/tem/v1alpha1/api.py b/scaleway-async/scaleway_async/tem/v1alpha1/api.py index 906f56ba..8ac484f5 100644 --- a/scaleway-async/scaleway_async/tem/v1alpha1/api.py +++ b/scaleway-async/scaleway_async/tem/v1alpha1/api.py @@ -763,9 +763,9 @@ async def get_domain_last_status( region: Optional[ScwRegion] = None, ) -> DomainLastStatus: """ - Display SPF and DKIM records status and potential errors. - Display SPF and DKIM records status and potential errors, including the found records to make debugging easier. - :param domain_id: ID of the domain to delete. + Display SPF, DKIM, DMARC and MX records status and potential errors. + Display SPF, DKIM, DMARC and MX records status and potential errors, including the found records to make debugging easier. + :param domain_id: ID of the domain to get records status. :param region: Region to target. If none is passed will use default region from the config. :return: :class:`DomainLastStatus ` diff --git a/scaleway-async/scaleway_async/tem/v1alpha1/marshalling.py b/scaleway-async/scaleway_async/tem/v1alpha1/marshalling.py index e040fed7..a3d9aeb4 100644 --- a/scaleway-async/scaleway_async/tem/v1alpha1/marshalling.py +++ b/scaleway-async/scaleway_async/tem/v1alpha1/marshalling.py @@ -34,6 +34,7 @@ DomainLastStatusAutoconfigState, DomainLastStatusDkimRecord, DomainLastStatusDmarcRecord, + DomainLastStatusMXRecord, DomainLastStatusSpfRecord, DomainLastStatus, ListBlocklistsResponse, @@ -783,6 +784,37 @@ def unmarshal_DomainLastStatusDmarcRecord(data: Any) -> DomainLastStatusDmarcRec return DomainLastStatusDmarcRecord(**args) +def unmarshal_DomainLastStatusMXRecord(data: Any) -> DomainLastStatusMXRecord: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'DomainLastStatusMXRecord' failed as data isn't a dictionary." + ) + + args: dict[str, Any] = {} + + field = data.get("status", None) + if field is not None: + args["status"] = field + else: + args["status"] = DomainLastStatusRecordStatus.UNKNOWN_RECORD_STATUS + + field = data.get("last_valid_at", None) + if field is not None: + args["last_valid_at"] = ( + parser.isoparse(field) if isinstance(field, str) else field + ) + else: + args["last_valid_at"] = None + + field = data.get("error", None) + if field is not None: + args["error"] = field + else: + args["error"] = None + + return DomainLastStatusMXRecord(**args) + + def unmarshal_DomainLastStatusSpfRecord(data: Any) -> DomainLastStatusSpfRecord: if not isinstance(data, dict): raise TypeError( @@ -852,6 +884,12 @@ def unmarshal_DomainLastStatus(data: Any) -> DomainLastStatus: else: args["dmarc_record"] = None + field = data.get("mx_record", None) + if field is not None: + args["mx_record"] = unmarshal_DomainLastStatusMXRecord(field) + else: + args["mx_record"] = None + field = data.get("autoconfig_state", None) if field is not None: args["autoconfig_state"] = unmarshal_DomainLastStatusAutoconfigState(field) diff --git a/scaleway-async/scaleway_async/tem/v1alpha1/types.py b/scaleway-async/scaleway_async/tem/v1alpha1/types.py index 5ca4589d..5b58cb41 100644 --- a/scaleway-async/scaleway_async/tem/v1alpha1/types.py +++ b/scaleway-async/scaleway_async/tem/v1alpha1/types.py @@ -511,6 +511,24 @@ class DomainLastStatusDmarcRecord: """ +@dataclass +class DomainLastStatusMXRecord: + status: DomainLastStatusRecordStatus + """ + Status of the MX record's configuration. This record is optional to validate a domain, but highly recommended. + """ + + last_valid_at: Optional[datetime] = None + """ + Time and date the MX record was last valid. + """ + + error: Optional[str] = None + """ + An error text displays in case the record is not valid. + """ + + @dataclass class DomainLastStatusSpfRecord: status: DomainLastStatusRecordStatus @@ -1161,6 +1179,11 @@ class DomainLastStatus: The DMARC record verification data. """ + mx_record: Optional[DomainLastStatusMXRecord] = None + """ + The MX record verification data. + """ + autoconfig_state: Optional[DomainLastStatusAutoconfigState] = None """ The verification state of domain auto-configuration. @@ -1171,7 +1194,7 @@ class DomainLastStatus: class GetDomainLastStatusRequest: domain_id: str """ - ID of the domain to delete. + ID of the domain to get records status. """ region: Optional[ScwRegion] = None diff --git a/scaleway/scaleway/tem/v1alpha1/__init__.py b/scaleway/scaleway/tem/v1alpha1/__init__.py index 53ba0d7c..fa738313 100644 --- a/scaleway/scaleway/tem/v1alpha1/__init__.py +++ b/scaleway/scaleway/tem/v1alpha1/__init__.py @@ -32,6 +32,7 @@ from .types import DomainLastStatusAutoconfigState from .types import DomainLastStatusDkimRecord from .types import DomainLastStatusDmarcRecord +from .types import DomainLastStatusMXRecord from .types import DomainLastStatusSpfRecord from .types import Domain from .types import OfferSubscription @@ -118,6 +119,7 @@ "DomainLastStatusAutoconfigState", "DomainLastStatusDkimRecord", "DomainLastStatusDmarcRecord", + "DomainLastStatusMXRecord", "DomainLastStatusSpfRecord", "Domain", "OfferSubscription", diff --git a/scaleway/scaleway/tem/v1alpha1/api.py b/scaleway/scaleway/tem/v1alpha1/api.py index a379ecc7..02d050d9 100644 --- a/scaleway/scaleway/tem/v1alpha1/api.py +++ b/scaleway/scaleway/tem/v1alpha1/api.py @@ -763,9 +763,9 @@ def get_domain_last_status( region: Optional[ScwRegion] = None, ) -> DomainLastStatus: """ - Display SPF and DKIM records status and potential errors. - Display SPF and DKIM records status and potential errors, including the found records to make debugging easier. - :param domain_id: ID of the domain to delete. + Display SPF, DKIM, DMARC and MX records status and potential errors. + Display SPF, DKIM, DMARC and MX records status and potential errors, including the found records to make debugging easier. + :param domain_id: ID of the domain to get records status. :param region: Region to target. If none is passed will use default region from the config. :return: :class:`DomainLastStatus ` diff --git a/scaleway/scaleway/tem/v1alpha1/marshalling.py b/scaleway/scaleway/tem/v1alpha1/marshalling.py index e040fed7..a3d9aeb4 100644 --- a/scaleway/scaleway/tem/v1alpha1/marshalling.py +++ b/scaleway/scaleway/tem/v1alpha1/marshalling.py @@ -34,6 +34,7 @@ DomainLastStatusAutoconfigState, DomainLastStatusDkimRecord, DomainLastStatusDmarcRecord, + DomainLastStatusMXRecord, DomainLastStatusSpfRecord, DomainLastStatus, ListBlocklistsResponse, @@ -783,6 +784,37 @@ def unmarshal_DomainLastStatusDmarcRecord(data: Any) -> DomainLastStatusDmarcRec return DomainLastStatusDmarcRecord(**args) +def unmarshal_DomainLastStatusMXRecord(data: Any) -> DomainLastStatusMXRecord: + if not isinstance(data, dict): + raise TypeError( + "Unmarshalling the type 'DomainLastStatusMXRecord' failed as data isn't a dictionary." + ) + + args: dict[str, Any] = {} + + field = data.get("status", None) + if field is not None: + args["status"] = field + else: + args["status"] = DomainLastStatusRecordStatus.UNKNOWN_RECORD_STATUS + + field = data.get("last_valid_at", None) + if field is not None: + args["last_valid_at"] = ( + parser.isoparse(field) if isinstance(field, str) else field + ) + else: + args["last_valid_at"] = None + + field = data.get("error", None) + if field is not None: + args["error"] = field + else: + args["error"] = None + + return DomainLastStatusMXRecord(**args) + + def unmarshal_DomainLastStatusSpfRecord(data: Any) -> DomainLastStatusSpfRecord: if not isinstance(data, dict): raise TypeError( @@ -852,6 +884,12 @@ def unmarshal_DomainLastStatus(data: Any) -> DomainLastStatus: else: args["dmarc_record"] = None + field = data.get("mx_record", None) + if field is not None: + args["mx_record"] = unmarshal_DomainLastStatusMXRecord(field) + else: + args["mx_record"] = None + field = data.get("autoconfig_state", None) if field is not None: args["autoconfig_state"] = unmarshal_DomainLastStatusAutoconfigState(field) diff --git a/scaleway/scaleway/tem/v1alpha1/types.py b/scaleway/scaleway/tem/v1alpha1/types.py index 5ca4589d..5b58cb41 100644 --- a/scaleway/scaleway/tem/v1alpha1/types.py +++ b/scaleway/scaleway/tem/v1alpha1/types.py @@ -511,6 +511,24 @@ class DomainLastStatusDmarcRecord: """ +@dataclass +class DomainLastStatusMXRecord: + status: DomainLastStatusRecordStatus + """ + Status of the MX record's configuration. This record is optional to validate a domain, but highly recommended. + """ + + last_valid_at: Optional[datetime] = None + """ + Time and date the MX record was last valid. + """ + + error: Optional[str] = None + """ + An error text displays in case the record is not valid. + """ + + @dataclass class DomainLastStatusSpfRecord: status: DomainLastStatusRecordStatus @@ -1161,6 +1179,11 @@ class DomainLastStatus: The DMARC record verification data. """ + mx_record: Optional[DomainLastStatusMXRecord] = None + """ + The MX record verification data. + """ + autoconfig_state: Optional[DomainLastStatusAutoconfigState] = None """ The verification state of domain auto-configuration. @@ -1171,7 +1194,7 @@ class DomainLastStatus: class GetDomainLastStatusRequest: domain_id: str """ - ID of the domain to delete. + ID of the domain to get records status. """ region: Optional[ScwRegion] = None