kalir-python 0.1.0__py3-none-any.whl

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 (163) hide show
  1. kalir/__init__.py +11 -0
  2. kalir/api/__init__.py +1 -0
  3. kalir/api/assets/__init__.py +1 -0
  4. kalir/api/assets/create_asset.py +193 -0
  5. kalir/api/assets/delete_asset.py +182 -0
  6. kalir/api/assets/get_asset.py +186 -0
  7. kalir/api/assets/list_assets.py +165 -0
  8. kalir/api/assets/update_asset.py +206 -0
  9. kalir/api/events/__init__.py +1 -0
  10. kalir/api/events/get_event.py +194 -0
  11. kalir/api/events/ingest_event.py +215 -0
  12. kalir/api/events/list_events.py +259 -0
  13. kalir/api/exposures/__init__.py +1 -0
  14. kalir/api/exposures/count_exposures.py +165 -0
  15. kalir/api/exposures/get_infostealer_summary.py +181 -0
  16. kalir/api/exposures/list_exposures.py +225 -0
  17. kalir/api/incidents/__init__.py +1 -0
  18. kalir/api/incidents/get_incident.py +194 -0
  19. kalir/api/incidents/list_incidents.py +265 -0
  20. kalir/api/incidents/update_incident_status.py +207 -0
  21. kalir/api/intel/__init__.py +1 -0
  22. kalir/api/intel/get_ransomware_stats.py +165 -0
  23. kalir/api/intel/list_ransomware_victims.py +165 -0
  24. kalir/api/mentions/__init__.py +1 -0
  25. kalir/api/mentions/list_mentions.py +283 -0
  26. kalir/api/overview/__init__.py +1 -0
  27. kalir/api/overview/get_overview.py +184 -0
  28. kalir/api/phishing/__init__.py +1 -0
  29. kalir/api/phishing/list_phishing.py +245 -0
  30. kalir/api/reports/__init__.py +1 -0
  31. kalir/api/reports/create_report.py +193 -0
  32. kalir/api/reports/download_report.py +186 -0
  33. kalir/api/reports/list_reports.py +165 -0
  34. kalir/api/rules/__init__.py +1 -0
  35. kalir/api/rules/create_rule.py +193 -0
  36. kalir/api/rules/delete_rule.py +183 -0
  37. kalir/api/rules/get_rule.py +187 -0
  38. kalir/api/rules/list_rules.py +165 -0
  39. kalir/api/rules/replace_rule.py +207 -0
  40. kalir/api/takedowns/__init__.py +1 -0
  41. kalir/api/takedowns/count_takedowns.py +165 -0
  42. kalir/api/takedowns/create_takedown.py +193 -0
  43. kalir/api/takedowns/delete_takedown.py +183 -0
  44. kalir/api/takedowns/get_takedown.py +187 -0
  45. kalir/api/takedowns/list_takedowns.py +165 -0
  46. kalir/api/takedowns/replace_takedown.py +210 -0
  47. kalir/api/takedowns/update_takedown.py +210 -0
  48. kalir/api/webhooks/__init__.py +1 -0
  49. kalir/api/webhooks/create_webhook.py +222 -0
  50. kalir/api/webhooks/delete_webhook.py +190 -0
  51. kalir/api/webhooks/get_webhook.py +194 -0
  52. kalir/api/webhooks/get_webhook_delivery.py +194 -0
  53. kalir/api/webhooks/list_webhook_deliveries.py +239 -0
  54. kalir/api/webhooks/list_webhook_event_types.py +165 -0
  55. kalir/api/webhooks/list_webhooks.py +172 -0
  56. kalir/api/webhooks/retry_webhook_delivery.py +190 -0
  57. kalir/api/webhooks/rotate_webhook_secret.py +202 -0
  58. kalir/api/webhooks/send_webhook_test.py +202 -0
  59. kalir/api/webhooks/update_webhook.py +229 -0
  60. kalir/client.py +271 -0
  61. kalir/errors.py +14 -0
  62. kalir/models/__init__.py +195 -0
  63. kalir/models/asset.py +162 -0
  64. kalir/models/asset_create.py +122 -0
  65. kalir/models/asset_create_asset_type.py +14 -0
  66. kalir/models/asset_create_metadata.py +64 -0
  67. kalir/models/count_exposures_response_200.py +78 -0
  68. kalir/models/count_takedowns_response_200.py +96 -0
  69. kalir/models/create_report_body.py +96 -0
  70. kalir/models/create_report_body_type.py +10 -0
  71. kalir/models/create_webhook_response_201.py +111 -0
  72. kalir/models/error.py +84 -0
  73. kalir/models/error_error.py +106 -0
  74. kalir/models/error_error_type.py +15 -0
  75. kalir/models/event.py +151 -0
  76. kalir/models/event_asset.py +87 -0
  77. kalir/models/event_ingest.py +146 -0
  78. kalir/models/event_ingest_asset.py +87 -0
  79. kalir/models/event_ingest_evidence.py +64 -0
  80. kalir/models/event_ingest_source.py +87 -0
  81. kalir/models/exposure.py +137 -0
  82. kalir/models/exposure_webhook_event.py +152 -0
  83. kalir/models/exposure_webhook_event_data.py +115 -0
  84. kalir/models/exposure_webhook_event_data_exposure.py +149 -0
  85. kalir/models/exposure_webhook_event_data_infection.py +136 -0
  86. kalir/models/exposure_webhook_event_type.py +8 -0
  87. kalir/models/get_incident_response_200.py +174 -0
  88. kalir/models/get_infostealer_summary_response_200.py +100 -0
  89. kalir/models/get_ransomware_stats_response_200.py +156 -0
  90. kalir/models/get_ransomware_stats_response_200_top_countries_7d_item.py +64 -0
  91. kalir/models/get_ransomware_stats_response_200_top_groups_7d_item.py +64 -0
  92. kalir/models/incident.py +170 -0
  93. kalir/models/incident_severity.py +10 -0
  94. kalir/models/incident_status.py +10 -0
  95. kalir/models/incident_webhook_event.py +152 -0
  96. kalir/models/incident_webhook_event_data.py +115 -0
  97. kalir/models/incident_webhook_event_data_previous.py +88 -0
  98. kalir/models/incident_webhook_event_type.py +9 -0
  99. kalir/models/infostealer_domain_summary.py +122 -0
  100. kalir/models/infostealer_domain_summary_snapshot.py +201 -0
  101. kalir/models/infostealer_domain_summary_snapshot_top_employee_urls_item.py +87 -0
  102. kalir/models/infostealer_domain_summary_snapshot_top_families_item.py +87 -0
  103. kalir/models/list_assets_response_200.py +100 -0
  104. kalir/models/list_events_response_200.py +109 -0
  105. kalir/models/list_exposures_response_200.py +127 -0
  106. kalir/models/list_incidents_bucket.py +10 -0
  107. kalir/models/list_incidents_response_200.py +149 -0
  108. kalir/models/list_incidents_response_200_counts.py +106 -0
  109. kalir/models/list_incidents_status.py +12 -0
  110. kalir/models/list_mentions_response_200.py +122 -0
  111. kalir/models/list_mentions_source.py +8 -0
  112. kalir/models/list_phishing_response_200.py +122 -0
  113. kalir/models/list_phishing_verdict.py +11 -0
  114. kalir/models/list_ransomware_victims_response_200.py +109 -0
  115. kalir/models/list_ransomware_victims_response_200_victims_item.py +64 -0
  116. kalir/models/list_reports_response_200.py +109 -0
  117. kalir/models/list_rules_response_200.py +100 -0
  118. kalir/models/list_takedowns_response_200.py +109 -0
  119. kalir/models/list_webhook_deliveries_response_200.py +122 -0
  120. kalir/models/list_webhook_event_types_response_200.py +100 -0
  121. kalir/models/list_webhook_event_types_response_200_data_item.py +87 -0
  122. kalir/models/list_webhooks_response_200.py +100 -0
  123. kalir/models/mention.py +194 -0
  124. kalir/models/mention_source.py +8 -0
  125. kalir/models/overview.py +231 -0
  126. kalir/models/overview_assets.py +96 -0
  127. kalir/models/overview_exposures.py +105 -0
  128. kalir/models/overview_incidents.py +114 -0
  129. kalir/models/overview_phishing.py +87 -0
  130. kalir/models/overview_risk_level.py +10 -0
  131. kalir/models/overview_takedowns.py +87 -0
  132. kalir/models/pagination.py +105 -0
  133. kalir/models/phishing_domain.py +186 -0
  134. kalir/models/phishing_domain_verdict.py +11 -0
  135. kalir/models/report.py +182 -0
  136. kalir/models/report_parameters.py +181 -0
  137. kalir/models/report_parameters_date_range.py +11 -0
  138. kalir/models/report_parameters_language.py +8 -0
  139. kalir/models/report_parameters_sections_item.py +15 -0
  140. kalir/models/report_status.py +10 -0
  141. kalir/models/rotate_webhook_secret_response_200.py +87 -0
  142. kalir/models/rule.py +174 -0
  143. kalir/models/rule_input.py +134 -0
  144. kalir/models/rule_input_actions_item.py +64 -0
  145. kalir/models/takedown.py +163 -0
  146. kalir/models/takedown_create.py +113 -0
  147. kalir/models/takedown_update.py +96 -0
  148. kalir/models/update_incident_status_body.py +90 -0
  149. kalir/models/update_incident_status_body_status.py +10 -0
  150. kalir/models/webhook_delivery.py +274 -0
  151. kalir/models/webhook_delivery_payload.py +64 -0
  152. kalir/models/webhook_delivery_status.py +9 -0
  153. kalir/models/webhook_endpoint.py +216 -0
  154. kalir/models/webhook_endpoint_input.py +124 -0
  155. kalir/models/webhook_endpoint_input_event_types_item.py +11 -0
  156. kalir/models/webhook_incident.py +232 -0
  157. kalir/models/webhook_incident_severity.py +10 -0
  158. kalir/py.typed +1 -0
  159. kalir/types.py +53 -0
  160. kalir/webhooks.py +63 -0
  161. kalir_python-0.1.0.dist-info/METADATA +76 -0
  162. kalir_python-0.1.0.dist-info/RECORD +163 -0
  163. kalir_python-0.1.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,195 @@
1
+ """ Contains all the data models used in inputs/outputs """
2
+
3
+ from .asset import Asset
4
+ from .asset_create import AssetCreate
5
+ from .asset_create_asset_type import AssetCreateAssetType
6
+ from .asset_create_metadata import AssetCreateMetadata
7
+ from .count_exposures_response_200 import CountExposuresResponse200
8
+ from .count_takedowns_response_200 import CountTakedownsResponse200
9
+ from .create_report_body import CreateReportBody
10
+ from .create_report_body_type import CreateReportBodyType
11
+ from .create_webhook_response_201 import CreateWebhookResponse201
12
+ from .error import Error
13
+ from .error_error import ErrorError
14
+ from .error_error_type import ErrorErrorType
15
+ from .event import Event
16
+ from .event_asset import EventAsset
17
+ from .event_ingest import EventIngest
18
+ from .event_ingest_asset import EventIngestAsset
19
+ from .event_ingest_evidence import EventIngestEvidence
20
+ from .event_ingest_source import EventIngestSource
21
+ from .exposure import Exposure
22
+ from .exposure_webhook_event import ExposureWebhookEvent
23
+ from .exposure_webhook_event_data import ExposureWebhookEventData
24
+ from .exposure_webhook_event_data_exposure import ExposureWebhookEventDataExposure
25
+ from .exposure_webhook_event_data_infection import ExposureWebhookEventDataInfection
26
+ from .exposure_webhook_event_type import ExposureWebhookEventType
27
+ from .get_incident_response_200 import GetIncidentResponse200
28
+ from .get_infostealer_summary_response_200 import GetInfostealerSummaryResponse200
29
+ from .get_ransomware_stats_response_200 import GetRansomwareStatsResponse200
30
+ from .get_ransomware_stats_response_200_top_countries_7d_item import GetRansomwareStatsResponse200TopCountries7DItem
31
+ from .get_ransomware_stats_response_200_top_groups_7d_item import GetRansomwareStatsResponse200TopGroups7DItem
32
+ from .incident import Incident
33
+ from .incident_severity import IncidentSeverity
34
+ from .incident_status import IncidentStatus
35
+ from .incident_webhook_event import IncidentWebhookEvent
36
+ from .incident_webhook_event_data import IncidentWebhookEventData
37
+ from .incident_webhook_event_data_previous import IncidentWebhookEventDataPrevious
38
+ from .incident_webhook_event_type import IncidentWebhookEventType
39
+ from .infostealer_domain_summary import InfostealerDomainSummary
40
+ from .infostealer_domain_summary_snapshot import InfostealerDomainSummarySnapshot
41
+ from .infostealer_domain_summary_snapshot_top_employee_urls_item import InfostealerDomainSummarySnapshotTopEmployeeUrlsItem
42
+ from .infostealer_domain_summary_snapshot_top_families_item import InfostealerDomainSummarySnapshotTopFamiliesItem
43
+ from .list_assets_response_200 import ListAssetsResponse200
44
+ from .list_events_response_200 import ListEventsResponse200
45
+ from .list_exposures_response_200 import ListExposuresResponse200
46
+ from .list_incidents_bucket import ListIncidentsBucket
47
+ from .list_incidents_response_200 import ListIncidentsResponse200
48
+ from .list_incidents_response_200_counts import ListIncidentsResponse200Counts
49
+ from .list_incidents_status import ListIncidentsStatus
50
+ from .list_mentions_response_200 import ListMentionsResponse200
51
+ from .list_mentions_source import ListMentionsSource
52
+ from .list_phishing_response_200 import ListPhishingResponse200
53
+ from .list_phishing_verdict import ListPhishingVerdict
54
+ from .list_ransomware_victims_response_200 import ListRansomwareVictimsResponse200
55
+ from .list_ransomware_victims_response_200_victims_item import ListRansomwareVictimsResponse200VictimsItem
56
+ from .list_reports_response_200 import ListReportsResponse200
57
+ from .list_rules_response_200 import ListRulesResponse200
58
+ from .list_takedowns_response_200 import ListTakedownsResponse200
59
+ from .list_webhook_deliveries_response_200 import ListWebhookDeliveriesResponse200
60
+ from .list_webhook_event_types_response_200 import ListWebhookEventTypesResponse200
61
+ from .list_webhook_event_types_response_200_data_item import ListWebhookEventTypesResponse200DataItem
62
+ from .list_webhooks_response_200 import ListWebhooksResponse200
63
+ from .mention import Mention
64
+ from .mention_source import MentionSource
65
+ from .overview import Overview
66
+ from .overview_assets import OverviewAssets
67
+ from .overview_exposures import OverviewExposures
68
+ from .overview_incidents import OverviewIncidents
69
+ from .overview_phishing import OverviewPhishing
70
+ from .overview_risk_level import OverviewRiskLevel
71
+ from .overview_takedowns import OverviewTakedowns
72
+ from .pagination import Pagination
73
+ from .phishing_domain import PhishingDomain
74
+ from .phishing_domain_verdict import PhishingDomainVerdict
75
+ from .report import Report
76
+ from .report_parameters import ReportParameters
77
+ from .report_parameters_date_range import ReportParametersDateRange
78
+ from .report_parameters_language import ReportParametersLanguage
79
+ from .report_parameters_sections_item import ReportParametersSectionsItem
80
+ from .report_status import ReportStatus
81
+ from .rotate_webhook_secret_response_200 import RotateWebhookSecretResponse200
82
+ from .rule import Rule
83
+ from .rule_input import RuleInput
84
+ from .rule_input_actions_item import RuleInputActionsItem
85
+ from .takedown import Takedown
86
+ from .takedown_create import TakedownCreate
87
+ from .takedown_update import TakedownUpdate
88
+ from .update_incident_status_body import UpdateIncidentStatusBody
89
+ from .update_incident_status_body_status import UpdateIncidentStatusBodyStatus
90
+ from .webhook_delivery import WebhookDelivery
91
+ from .webhook_delivery_payload import WebhookDeliveryPayload
92
+ from .webhook_delivery_status import WebhookDeliveryStatus
93
+ from .webhook_endpoint import WebhookEndpoint
94
+ from .webhook_endpoint_input import WebhookEndpointInput
95
+ from .webhook_endpoint_input_event_types_item import WebhookEndpointInputEventTypesItem
96
+ from .webhook_incident import WebhookIncident
97
+ from .webhook_incident_severity import WebhookIncidentSeverity
98
+
99
+ __all__ = (
100
+ "Asset",
101
+ "AssetCreate",
102
+ "AssetCreateAssetType",
103
+ "AssetCreateMetadata",
104
+ "CountExposuresResponse200",
105
+ "CountTakedownsResponse200",
106
+ "CreateReportBody",
107
+ "CreateReportBodyType",
108
+ "CreateWebhookResponse201",
109
+ "Error",
110
+ "ErrorError",
111
+ "ErrorErrorType",
112
+ "Event",
113
+ "EventAsset",
114
+ "EventIngest",
115
+ "EventIngestAsset",
116
+ "EventIngestEvidence",
117
+ "EventIngestSource",
118
+ "Exposure",
119
+ "ExposureWebhookEvent",
120
+ "ExposureWebhookEventData",
121
+ "ExposureWebhookEventDataExposure",
122
+ "ExposureWebhookEventDataInfection",
123
+ "ExposureWebhookEventType",
124
+ "GetIncidentResponse200",
125
+ "GetInfostealerSummaryResponse200",
126
+ "GetRansomwareStatsResponse200",
127
+ "GetRansomwareStatsResponse200TopCountries7DItem",
128
+ "GetRansomwareStatsResponse200TopGroups7DItem",
129
+ "Incident",
130
+ "IncidentSeverity",
131
+ "IncidentStatus",
132
+ "IncidentWebhookEvent",
133
+ "IncidentWebhookEventData",
134
+ "IncidentWebhookEventDataPrevious",
135
+ "IncidentWebhookEventType",
136
+ "InfostealerDomainSummary",
137
+ "InfostealerDomainSummarySnapshot",
138
+ "InfostealerDomainSummarySnapshotTopEmployeeUrlsItem",
139
+ "InfostealerDomainSummarySnapshotTopFamiliesItem",
140
+ "ListAssetsResponse200",
141
+ "ListEventsResponse200",
142
+ "ListExposuresResponse200",
143
+ "ListIncidentsBucket",
144
+ "ListIncidentsResponse200",
145
+ "ListIncidentsResponse200Counts",
146
+ "ListIncidentsStatus",
147
+ "ListMentionsResponse200",
148
+ "ListMentionsSource",
149
+ "ListPhishingResponse200",
150
+ "ListPhishingVerdict",
151
+ "ListRansomwareVictimsResponse200",
152
+ "ListRansomwareVictimsResponse200VictimsItem",
153
+ "ListReportsResponse200",
154
+ "ListRulesResponse200",
155
+ "ListTakedownsResponse200",
156
+ "ListWebhookDeliveriesResponse200",
157
+ "ListWebhookEventTypesResponse200",
158
+ "ListWebhookEventTypesResponse200DataItem",
159
+ "ListWebhooksResponse200",
160
+ "Mention",
161
+ "MentionSource",
162
+ "Overview",
163
+ "OverviewAssets",
164
+ "OverviewExposures",
165
+ "OverviewIncidents",
166
+ "OverviewPhishing",
167
+ "OverviewRiskLevel",
168
+ "OverviewTakedowns",
169
+ "Pagination",
170
+ "PhishingDomain",
171
+ "PhishingDomainVerdict",
172
+ "Report",
173
+ "ReportParameters",
174
+ "ReportParametersDateRange",
175
+ "ReportParametersLanguage",
176
+ "ReportParametersSectionsItem",
177
+ "ReportStatus",
178
+ "RotateWebhookSecretResponse200",
179
+ "Rule",
180
+ "RuleInput",
181
+ "RuleInputActionsItem",
182
+ "Takedown",
183
+ "TakedownCreate",
184
+ "TakedownUpdate",
185
+ "UpdateIncidentStatusBody",
186
+ "UpdateIncidentStatusBodyStatus",
187
+ "WebhookDelivery",
188
+ "WebhookDeliveryPayload",
189
+ "WebhookDeliveryStatus",
190
+ "WebhookEndpoint",
191
+ "WebhookEndpointInput",
192
+ "WebhookEndpointInputEventTypesItem",
193
+ "WebhookIncident",
194
+ "WebhookIncidentSeverity",
195
+ )
kalir/models/asset.py ADDED
@@ -0,0 +1,162 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ from ..models.asset_create_asset_type import AssetCreateAssetType
12
+ from ..types import UNSET, Unset
13
+ from typing import cast
14
+ from uuid import UUID
15
+ import datetime
16
+
17
+ if TYPE_CHECKING:
18
+ from ..models.asset_create_metadata import AssetCreateMetadata
19
+
20
+
21
+
22
+
23
+
24
+ T = TypeVar("T", bound="Asset")
25
+
26
+
27
+
28
+ @_attrs_define
29
+ class Asset:
30
+ """
31
+ Attributes:
32
+ asset_type (AssetCreateAssetType):
33
+ asset_value (str):
34
+ enabled (bool | Unset): Default: True.
35
+ metadata (AssetCreateMetadata | Unset):
36
+ asset_id (UUID | Unset):
37
+ created_at (datetime.datetime | Unset):
38
+ """
39
+
40
+ asset_type: AssetCreateAssetType
41
+ asset_value: str
42
+ enabled: bool | Unset = True
43
+ metadata: AssetCreateMetadata | Unset = UNSET
44
+ asset_id: UUID | Unset = UNSET
45
+ created_at: datetime.datetime | Unset = UNSET
46
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
47
+
48
+
49
+
50
+
51
+
52
+ def to_dict(self) -> dict[str, Any]:
53
+ from ..models.asset_create_metadata import AssetCreateMetadata # noqa: PLC0415
54
+ asset_type = self.asset_type.value
55
+
56
+ asset_value = self.asset_value
57
+
58
+ enabled = self.enabled
59
+
60
+ metadata: dict[str, Any] | Unset = UNSET
61
+ if not isinstance(self.metadata, Unset):
62
+ metadata = self.metadata.to_dict()
63
+
64
+ asset_id: str | Unset = UNSET
65
+ if not isinstance(self.asset_id, Unset):
66
+ asset_id = str(self.asset_id)
67
+
68
+ created_at: str | Unset = UNSET
69
+ if not isinstance(self.created_at, Unset):
70
+ created_at = self.created_at.isoformat()
71
+
72
+
73
+ field_dict: dict[str, Any] = {}
74
+ field_dict.update(self.additional_properties)
75
+ field_dict.update({
76
+ "asset_type": asset_type,
77
+ "asset_value": asset_value,
78
+ })
79
+ if enabled is not UNSET:
80
+ field_dict["enabled"] = enabled
81
+ if metadata is not UNSET:
82
+ field_dict["metadata"] = metadata
83
+ if asset_id is not UNSET:
84
+ field_dict["asset_id"] = asset_id
85
+ if created_at is not UNSET:
86
+ field_dict["created_at"] = created_at
87
+
88
+ return field_dict
89
+
90
+
91
+
92
+ @classmethod
93
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
94
+ from ..models.asset_create_metadata import AssetCreateMetadata # noqa: PLC0415
95
+ d = dict(src_dict)
96
+ asset_type = AssetCreateAssetType(d.pop("asset_type"))
97
+
98
+
99
+
100
+
101
+ asset_value = d.pop("asset_value")
102
+
103
+ enabled = d.pop("enabled", UNSET)
104
+
105
+ _metadata = d.pop("metadata", UNSET)
106
+ metadata: AssetCreateMetadata | Unset
107
+ if isinstance(_metadata, Unset):
108
+ metadata = UNSET
109
+ else:
110
+ metadata = AssetCreateMetadata.from_dict(_metadata)
111
+
112
+
113
+
114
+
115
+ _asset_id = d.pop("asset_id", UNSET)
116
+ asset_id: UUID | Unset
117
+ if isinstance(_asset_id, Unset):
118
+ asset_id = UNSET
119
+ else:
120
+ asset_id = UUID(_asset_id)
121
+
122
+
123
+
124
+
125
+ _created_at = d.pop("created_at", UNSET)
126
+ created_at: datetime.datetime | Unset
127
+ if isinstance(_created_at, Unset):
128
+ created_at = UNSET
129
+ else:
130
+ created_at = datetime.datetime.fromisoformat(_created_at)
131
+
132
+
133
+
134
+
135
+ asset = cls(
136
+ asset_type=asset_type,
137
+ asset_value=asset_value,
138
+ enabled=enabled,
139
+ metadata=metadata,
140
+ asset_id=asset_id,
141
+ created_at=created_at,
142
+ )
143
+
144
+
145
+ asset.additional_properties = d
146
+ return asset
147
+
148
+ @property
149
+ def additional_keys(self) -> list[str]:
150
+ return list(self.additional_properties.keys())
151
+
152
+ def __getitem__(self, key: str) -> Any:
153
+ return self.additional_properties[key]
154
+
155
+ def __setitem__(self, key: str, value: Any) -> None:
156
+ self.additional_properties[key] = value
157
+
158
+ def __delitem__(self, key: str) -> None:
159
+ del self.additional_properties[key]
160
+
161
+ def __contains__(self, key: str) -> bool:
162
+ return key in self.additional_properties
@@ -0,0 +1,122 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ from ..models.asset_create_asset_type import AssetCreateAssetType
12
+ from ..types import UNSET, Unset
13
+ from typing import cast
14
+
15
+ if TYPE_CHECKING:
16
+ from ..models.asset_create_metadata import AssetCreateMetadata
17
+
18
+
19
+
20
+
21
+
22
+ T = TypeVar("T", bound="AssetCreate")
23
+
24
+
25
+
26
+ @_attrs_define
27
+ class AssetCreate:
28
+ """
29
+ Attributes:
30
+ asset_type (AssetCreateAssetType):
31
+ asset_value (str):
32
+ enabled (bool | Unset): Default: True.
33
+ metadata (AssetCreateMetadata | Unset):
34
+ """
35
+
36
+ asset_type: AssetCreateAssetType
37
+ asset_value: str
38
+ enabled: bool | Unset = True
39
+ metadata: AssetCreateMetadata | Unset = UNSET
40
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
41
+
42
+
43
+
44
+
45
+
46
+ def to_dict(self) -> dict[str, Any]:
47
+ from ..models.asset_create_metadata import AssetCreateMetadata # noqa: PLC0415
48
+ asset_type = self.asset_type.value
49
+
50
+ asset_value = self.asset_value
51
+
52
+ enabled = self.enabled
53
+
54
+ metadata: dict[str, Any] | Unset = UNSET
55
+ if not isinstance(self.metadata, Unset):
56
+ metadata = self.metadata.to_dict()
57
+
58
+
59
+ field_dict: dict[str, Any] = {}
60
+ field_dict.update(self.additional_properties)
61
+ field_dict.update({
62
+ "asset_type": asset_type,
63
+ "asset_value": asset_value,
64
+ })
65
+ if enabled is not UNSET:
66
+ field_dict["enabled"] = enabled
67
+ if metadata is not UNSET:
68
+ field_dict["metadata"] = metadata
69
+
70
+ return field_dict
71
+
72
+
73
+
74
+ @classmethod
75
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
76
+ from ..models.asset_create_metadata import AssetCreateMetadata # noqa: PLC0415
77
+ d = dict(src_dict)
78
+ asset_type = AssetCreateAssetType(d.pop("asset_type"))
79
+
80
+
81
+
82
+
83
+ asset_value = d.pop("asset_value")
84
+
85
+ enabled = d.pop("enabled", UNSET)
86
+
87
+ _metadata = d.pop("metadata", UNSET)
88
+ metadata: AssetCreateMetadata | Unset
89
+ if isinstance(_metadata, Unset):
90
+ metadata = UNSET
91
+ else:
92
+ metadata = AssetCreateMetadata.from_dict(_metadata)
93
+
94
+
95
+
96
+
97
+ asset_create = cls(
98
+ asset_type=asset_type,
99
+ asset_value=asset_value,
100
+ enabled=enabled,
101
+ metadata=metadata,
102
+ )
103
+
104
+
105
+ asset_create.additional_properties = d
106
+ return asset_create
107
+
108
+ @property
109
+ def additional_keys(self) -> list[str]:
110
+ return list(self.additional_properties.keys())
111
+
112
+ def __getitem__(self, key: str) -> Any:
113
+ return self.additional_properties[key]
114
+
115
+ def __setitem__(self, key: str, value: Any) -> None:
116
+ self.additional_properties[key] = value
117
+
118
+ def __delitem__(self, key: str) -> None:
119
+ del self.additional_properties[key]
120
+
121
+ def __contains__(self, key: str) -> bool:
122
+ return key in self.additional_properties
@@ -0,0 +1,14 @@
1
+ from enum import StrEnum
2
+
3
+ class AssetCreateAssetType(StrEnum):
4
+ DOMAIN = "domain"
5
+ EMAIL = "email"
6
+ EMAIL_DOMAIN = "email_domain"
7
+ EXECUTIVE = "executive"
8
+ IP = "ip"
9
+ KEYWORD = "keyword"
10
+ REPO = "repo"
11
+ URL = "url"
12
+
13
+ def __str__(self) -> str:
14
+ return str(self.value)
@@ -0,0 +1,64 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ T = TypeVar("T", bound="AssetCreateMetadata")
18
+
19
+
20
+
21
+ @_attrs_define
22
+ class AssetCreateMetadata:
23
+
24
+
25
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
26
+
27
+
28
+
29
+
30
+
31
+ def to_dict(self) -> dict[str, Any]:
32
+
33
+ field_dict: dict[str, Any] = {}
34
+ field_dict.update(self.additional_properties)
35
+
36
+ return field_dict
37
+
38
+
39
+
40
+ @classmethod
41
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
42
+ d = dict(src_dict)
43
+ asset_create_metadata = cls(
44
+ )
45
+
46
+
47
+ asset_create_metadata.additional_properties = d
48
+ return asset_create_metadata
49
+
50
+ @property
51
+ def additional_keys(self) -> list[str]:
52
+ return list(self.additional_properties.keys())
53
+
54
+ def __getitem__(self, key: str) -> Any:
55
+ return self.additional_properties[key]
56
+
57
+ def __setitem__(self, key: str, value: Any) -> None:
58
+ self.additional_properties[key] = value
59
+
60
+ def __delitem__(self, key: str) -> None:
61
+ del self.additional_properties[key]
62
+
63
+ def __contains__(self, key: str) -> bool:
64
+ return key in self.additional_properties
@@ -0,0 +1,78 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Mapping
4
+ from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+
9
+ from ..types import UNSET, Unset
10
+
11
+ from ..types import UNSET, Unset
12
+
13
+
14
+
15
+
16
+
17
+
18
+ T = TypeVar("T", bound="CountExposuresResponse200")
19
+
20
+
21
+
22
+ @_attrs_define
23
+ class CountExposuresResponse200:
24
+ """
25
+ Attributes:
26
+ count (int | Unset):
27
+ """
28
+
29
+ count: int | Unset = UNSET
30
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
31
+
32
+
33
+
34
+
35
+
36
+ def to_dict(self) -> dict[str, Any]:
37
+ count = self.count
38
+
39
+
40
+ field_dict: dict[str, Any] = {}
41
+ field_dict.update(self.additional_properties)
42
+ field_dict.update({
43
+ })
44
+ if count is not UNSET:
45
+ field_dict["count"] = count
46
+
47
+ return field_dict
48
+
49
+
50
+
51
+ @classmethod
52
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
53
+ d = dict(src_dict)
54
+ count = d.pop("count", UNSET)
55
+
56
+ count_exposures_response_200 = cls(
57
+ count=count,
58
+ )
59
+
60
+
61
+ count_exposures_response_200.additional_properties = d
62
+ return count_exposures_response_200
63
+
64
+ @property
65
+ def additional_keys(self) -> list[str]:
66
+ return list(self.additional_properties.keys())
67
+
68
+ def __getitem__(self, key: str) -> Any:
69
+ return self.additional_properties[key]
70
+
71
+ def __setitem__(self, key: str, value: Any) -> None:
72
+ self.additional_properties[key] = value
73
+
74
+ def __delitem__(self, key: str) -> None:
75
+ del self.additional_properties[key]
76
+
77
+ def __contains__(self, key: str) -> bool:
78
+ return key in self.additional_properties