From 339b0fea2ae82f9d4249e082a8217e49c7c44090 Mon Sep 17 00:00:00 2001 From: Peter Annabel Date: Wed, 6 Aug 2025 15:11:23 -0500 Subject: [PATCH] add missing remediation-statuses endpoint --- pyproject.toml | 2 +- .../ironscales/CompanyIdStatsEndpoint.py | 2 + ...mpanyIdStatsRemediationStatusesEndpoint.py | 38 +++++++++++++++++++ .../models/ironscales/__init__.py | 6 +++ 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 src/pyironscales/endpoints/ironscales/CompanyIdStatsRemediationStatusesEndpoint.py diff --git a/pyproject.toml b/pyproject.toml index be340bc..d41a4ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "pyironscales" -version = "0.1.1" +version = "0.1.2" authors = [ { name="Peter Annabel", email="peter.annabel@gmail.com" }, ] diff --git a/src/pyironscales/endpoints/ironscales/CompanyIdStatsEndpoint.py b/src/pyironscales/endpoints/ironscales/CompanyIdStatsEndpoint.py index c8dfbcf..c9ce398 100644 --- a/src/pyironscales/endpoints/ironscales/CompanyIdStatsEndpoint.py +++ b/src/pyironscales/endpoints/ironscales/CompanyIdStatsEndpoint.py @@ -1,4 +1,5 @@ from pyironscales.endpoints.base.base_endpoint import IronscalesEndpoint +from pyironscales.endpoints.ironscales.CompanyIdStatsRemediationStatusesEndpoint import CompanyIdStatsRemediationStatusesEndpoint from pyironscales.interfaces import ( IGettable, ) @@ -16,6 +17,7 @@ class CompanyIdStatsEndpoint( def __init__(self, client, parent_endpoint=None) -> None: IronscalesEndpoint.__init__(self, client, "stats/", parent_endpoint=parent_endpoint) IGettable.__init__(self, CompanyStatisticsAndLicense) + self.remediation_statuses = self._register_child_endpoint(CompanyIdStatsRemediationStatusesEndpoint(client, parent_endpoint=self)) def get( self, diff --git a/src/pyironscales/endpoints/ironscales/CompanyIdStatsRemediationStatusesEndpoint.py b/src/pyironscales/endpoints/ironscales/CompanyIdStatsRemediationStatusesEndpoint.py new file mode 100644 index 0000000..5544207 --- /dev/null +++ b/src/pyironscales/endpoints/ironscales/CompanyIdStatsRemediationStatusesEndpoint.py @@ -0,0 +1,38 @@ +from pyironscales.endpoints.base.base_endpoint import IronscalesEndpoint + +from pyironscales.interfaces import ( + IGettable, +) +from pyironscales.models.ironscales import CompanyStatsRemediationStatuses +from pyironscales.types import ( + JSON, + IronscalesRequestParams, +) + + +class CompanyIdStatsRemediationStatusesEndpoint( + IronscalesEndpoint, + IGettable[CompanyStatsRemediationStatuses, IronscalesRequestParams], +): + def __init__(self, client, parent_endpoint=None) -> None: + IronscalesEndpoint.__init__(self, client, "remediation-statuses/", parent_endpoint=parent_endpoint) + IGettable.__init__(self, CompanyStatsRemediationStatuses) + + def get( + self, + data: JSON | None = None, + params: IronscalesRequestParams | None = None, + ) -> CompanyStatsRemediationStatuses: + """ + Performs a GET request against the /company/{id}/stats/remediation-statuses/ endpoint. + + Parameters: + data (dict[str, Any]): The data to send in the request body. + params (dict[str, int | str]): The parameters to send in the request query string. + Returns: + CompanyStatsRemediationStatuses: The parsed response data. + """ + return self._parse_one( + CompanyStatsRemediationStatuses, + super()._make_request("GET", data=data, params=params).json(), + ) diff --git a/src/pyironscales/models/ironscales/__init__.py b/src/pyironscales/models/ironscales/__init__.py index b3ffa0d..16a160c 100644 --- a/src/pyironscales/models/ironscales/__init__.py +++ b/src/pyironscales/models/ironscales/__init__.py @@ -154,6 +154,12 @@ class CompanyStatisticsAndLicense(IronscalesModel): activeMailboxes: bool | None = Field(default=None, alias="activeMailboxes") lastMailboxSyncDate: datetime | None = Field(default=None, alias="lastMailboxSyncDate") +class CompanyStatsRemediationStatuses(IronscalesModel): + phishing: dict[str, int] | None = Field(default=None, alias="Phishing") + spam: dict[str, int] | None = Field(default=None, alias="Spam") + safe: dict[str, int] | None = Field(default=None, alias="Safe") + unclassified: dict[str, int] | None = Field(default=None, alias="Unclassified") + class EscalatedEmails(IronscalesModel): arrival_date: datetime | None = Field(default=None, alias="ArrivalDate") incident_id: int | None = Field(default=None, alias="IncidentId")