aceapi-v2-client 2.0.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 (90) hide show
  1. aceapi_v2_client/__init__.py +8 -0
  2. aceapi_v2_client/api/__init__.py +1 -0
  3. aceapi_v2_client/api/alerts/__init__.py +1 -0
  4. aceapi_v2_client/api/alerts/bulk_add_observable_alerts_bulk_add_observable_post.py +174 -0
  5. aceapi_v2_client/api/alerts/download_alert_alerts_alert_uuid_download_get.py +167 -0
  6. aceapi_v2_client/api/alerts/view_alert_logs_alerts_alert_uuid_logs_get.py +200 -0
  7. aceapi_v2_client/api/authentication/__init__.py +1 -0
  8. aceapi_v2_client/api/authentication/login_for_access_token_auth_token_post.py +187 -0
  9. aceapi_v2_client/api/authentication/refresh_access_token_auth_refresh_post.py +182 -0
  10. aceapi_v2_client/api/common/__init__.py +1 -0
  11. aceapi_v2_client/api/common/ping_common_ping_get.py +128 -0
  12. aceapi_v2_client/api/common/supported_api_version_common_supported_api_version_get.py +128 -0
  13. aceapi_v2_client/api/common/valid_companies_common_valid_companies_get.py +128 -0
  14. aceapi_v2_client/api/common/valid_directives_common_valid_directives_get.py +130 -0
  15. aceapi_v2_client/api/common/valid_observables_common_valid_observables_get.py +130 -0
  16. aceapi_v2_client/api/events/__init__.py +1 -0
  17. aceapi_v2_client/api/events/export_events_events_export_get.py +192 -0
  18. aceapi_v2_client/api/events/open_events_events_open_get.py +128 -0
  19. aceapi_v2_client/api/events/update_event_status_events_event_id_patch.py +182 -0
  20. aceapi_v2_client/api/health/__init__.py +1 -0
  21. aceapi_v2_client/api/health/ping_health_ping_get.py +136 -0
  22. aceapi_v2_client/api/nodes/__init__.py +1 -0
  23. aceapi_v2_client/api/nodes/drain_node_nodes_node_id_drain_post.py +173 -0
  24. aceapi_v2_client/api/nodes/get_node_nodes_node_id_get.py +161 -0
  25. aceapi_v2_client/api/nodes/list_nodes_nodes_get.py +128 -0
  26. aceapi_v2_client/api/nodes/resume_node_nodes_node_id_resume_post.py +169 -0
  27. aceapi_v2_client/api/observables/__init__.py +1 -0
  28. aceapi_v2_client/api/observables/create_comment_observable_comments_post.py +166 -0
  29. aceapi_v2_client/api/observables/delete_comment_observable_comments_comment_id_delete.py +159 -0
  30. aceapi_v2_client/api/observables/list_comments_observable_comments_observable_id_get.py +163 -0
  31. aceapi_v2_client/api/observables/list_observable_types_observable_types_get.py +144 -0
  32. aceapi_v2_client/api/observables/set_interesting_observables_interesting_patch.py +191 -0
  33. aceapi_v2_client/api/observables/update_comment_observable_comments_comment_id_patch.py +182 -0
  34. aceapi_v2_client/api/threats/__init__.py +1 -0
  35. aceapi_v2_client/api/threats/create_threat_threats_post.py +166 -0
  36. aceapi_v2_client/api/threats/create_threat_type_threat_types_post.py +166 -0
  37. aceapi_v2_client/api/threats/delete_threat_threats_delete.py +179 -0
  38. aceapi_v2_client/api/threats/delete_threat_type_threat_types_threat_type_id_delete.py +159 -0
  39. aceapi_v2_client/api/threats/get_threat_type_threat_types_threat_type_id_get.py +161 -0
  40. aceapi_v2_client/api/threats/list_threat_types_threat_types_get.py +128 -0
  41. aceapi_v2_client/api/threats/list_threats_threats_get.py +171 -0
  42. aceapi_v2_client/api/threats/update_threat_type_threat_types_threat_type_id_patch.py +182 -0
  43. aceapi_v2_client/auth.py +56 -0
  44. aceapi_v2_client/client.py +282 -0
  45. aceapi_v2_client/errors.py +16 -0
  46. aceapi_v2_client/models/__init__.py +87 -0
  47. aceapi_v2_client/models/body_login_for_access_token_auth_token_post.py +140 -0
  48. aceapi_v2_client/models/bulk_add_observable_request.py +110 -0
  49. aceapi_v2_client/models/bulk_add_observable_result.py +107 -0
  50. aceapi_v2_client/models/bulk_add_observable_result_failed_details.py +47 -0
  51. aceapi_v2_client/models/collector_status_read.py +86 -0
  52. aceapi_v2_client/models/company_read.py +69 -0
  53. aceapi_v2_client/models/event_read.py +84 -0
  54. aceapi_v2_client/models/export_format.py +8 -0
  55. aceapi_v2_client/models/health_response.py +62 -0
  56. aceapi_v2_client/models/http_validation_error.py +79 -0
  57. aceapi_v2_client/models/list_response_company_read.py +75 -0
  58. aceapi_v2_client/models/list_response_event_read.py +75 -0
  59. aceapi_v2_client/models/list_response_named_description_read.py +75 -0
  60. aceapi_v2_client/models/list_response_node_read.py +75 -0
  61. aceapi_v2_client/models/list_response_observable_comment_read.py +75 -0
  62. aceapi_v2_client/models/list_response_observable_type_read.py +75 -0
  63. aceapi_v2_client/models/list_response_threat_read.py +75 -0
  64. aceapi_v2_client/models/list_response_threat_type_read.py +75 -0
  65. aceapi_v2_client/models/named_description_read.py +69 -0
  66. aceapi_v2_client/models/node_read.py +163 -0
  67. aceapi_v2_client/models/observable_comment_create.py +77 -0
  68. aceapi_v2_client/models/observable_comment_read.py +102 -0
  69. aceapi_v2_client/models/observable_comment_update.py +61 -0
  70. aceapi_v2_client/models/observable_type_read.py +62 -0
  71. aceapi_v2_client/models/ping_response.py +61 -0
  72. aceapi_v2_client/models/refresh_request.py +62 -0
  73. aceapi_v2_client/models/set_interesting_observables_interesting_patch_response_set_interesting_observables_interesting_patch.py +50 -0
  74. aceapi_v2_client/models/set_interesting_request.py +77 -0
  75. aceapi_v2_client/models/status_update.py +62 -0
  76. aceapi_v2_client/models/supported_api_version_response.py +61 -0
  77. aceapi_v2_client/models/threat_create.py +69 -0
  78. aceapi_v2_client/models/threat_read.py +77 -0
  79. aceapi_v2_client/models/threat_type_create.py +61 -0
  80. aceapi_v2_client/models/threat_type_read.py +69 -0
  81. aceapi_v2_client/models/threat_type_update.py +73 -0
  82. aceapi_v2_client/models/token.py +81 -0
  83. aceapi_v2_client/models/validation_error.py +123 -0
  84. aceapi_v2_client/models/validation_error_context.py +47 -0
  85. aceapi_v2_client/py.typed +0 -0
  86. aceapi_v2_client/types.py +54 -0
  87. aceapi_v2_client-2.0.0.dist-info/METADATA +192 -0
  88. aceapi_v2_client-2.0.0.dist-info/RECORD +90 -0
  89. aceapi_v2_client-2.0.0.dist-info/WHEEL +4 -0
  90. aceapi_v2_client-2.0.0.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,161 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ... import errors
8
+ from ...client import AuthenticatedClient, Client
9
+ from ...models.http_validation_error import HTTPValidationError
10
+ from ...models.threat_type_read import ThreatTypeRead
11
+ from ...types import Response
12
+
13
+
14
+ def _get_kwargs(
15
+ threat_type_id: int,
16
+ ) -> dict[str, Any]:
17
+
18
+ _kwargs: dict[str, Any] = {
19
+ "method": "get",
20
+ "url": "/threat-types/{threat_type_id}".format(
21
+ threat_type_id=quote(str(threat_type_id), safe=""),
22
+ ),
23
+ }
24
+
25
+ return _kwargs
26
+
27
+
28
+ def _parse_response(
29
+ *, client: AuthenticatedClient | Client, response: httpx.Response
30
+ ) -> HTTPValidationError | ThreatTypeRead | None:
31
+ if response.status_code == 200:
32
+ response_200 = ThreatTypeRead.from_dict(response.json())
33
+
34
+ return response_200
35
+
36
+ if response.status_code == 422:
37
+ response_422 = HTTPValidationError.from_dict(response.json())
38
+
39
+ return response_422
40
+
41
+ if client.raise_on_unexpected_status:
42
+ raise errors.UnexpectedStatus(response.status_code, response.content)
43
+ else:
44
+ return None
45
+
46
+
47
+ def _build_response(
48
+ *, client: AuthenticatedClient | Client, response: httpx.Response
49
+ ) -> Response[HTTPValidationError | ThreatTypeRead]:
50
+ return Response(
51
+ status_code=HTTPStatus(response.status_code),
52
+ content=response.content,
53
+ headers=response.headers,
54
+ parsed=_parse_response(client=client, response=response),
55
+ )
56
+
57
+
58
+ def sync_detailed(
59
+ threat_type_id: int,
60
+ *,
61
+ client: AuthenticatedClient,
62
+ ) -> Response[HTTPValidationError | ThreatTypeRead]:
63
+ """Get Threat Type
64
+
65
+ Args:
66
+ threat_type_id (int):
67
+
68
+ Raises:
69
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
70
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
71
+
72
+ Returns:
73
+ Response[HTTPValidationError | ThreatTypeRead]
74
+ """
75
+
76
+ kwargs = _get_kwargs(
77
+ threat_type_id=threat_type_id,
78
+ )
79
+
80
+ response = client.get_httpx_client().request(
81
+ **kwargs,
82
+ )
83
+
84
+ return _build_response(client=client, response=response)
85
+
86
+
87
+ def sync(
88
+ threat_type_id: int,
89
+ *,
90
+ client: AuthenticatedClient,
91
+ ) -> HTTPValidationError | ThreatTypeRead | None:
92
+ """Get Threat Type
93
+
94
+ Args:
95
+ threat_type_id (int):
96
+
97
+ Raises:
98
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
99
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
100
+
101
+ Returns:
102
+ HTTPValidationError | ThreatTypeRead
103
+ """
104
+
105
+ return sync_detailed(
106
+ threat_type_id=threat_type_id,
107
+ client=client,
108
+ ).parsed
109
+
110
+
111
+ async def asyncio_detailed(
112
+ threat_type_id: int,
113
+ *,
114
+ client: AuthenticatedClient,
115
+ ) -> Response[HTTPValidationError | ThreatTypeRead]:
116
+ """Get Threat Type
117
+
118
+ Args:
119
+ threat_type_id (int):
120
+
121
+ Raises:
122
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
123
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
124
+
125
+ Returns:
126
+ Response[HTTPValidationError | ThreatTypeRead]
127
+ """
128
+
129
+ kwargs = _get_kwargs(
130
+ threat_type_id=threat_type_id,
131
+ )
132
+
133
+ response = await client.get_async_httpx_client().request(**kwargs)
134
+
135
+ return _build_response(client=client, response=response)
136
+
137
+
138
+ async def asyncio(
139
+ threat_type_id: int,
140
+ *,
141
+ client: AuthenticatedClient,
142
+ ) -> HTTPValidationError | ThreatTypeRead | None:
143
+ """Get Threat Type
144
+
145
+ Args:
146
+ threat_type_id (int):
147
+
148
+ Raises:
149
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
150
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
151
+
152
+ Returns:
153
+ HTTPValidationError | ThreatTypeRead
154
+ """
155
+
156
+ return (
157
+ await asyncio_detailed(
158
+ threat_type_id=threat_type_id,
159
+ client=client,
160
+ )
161
+ ).parsed
@@ -0,0 +1,128 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.list_response_threat_type_read import ListResponseThreatTypeRead
9
+ from ...types import Response
10
+
11
+
12
+ def _get_kwargs() -> dict[str, Any]:
13
+
14
+ _kwargs: dict[str, Any] = {
15
+ "method": "get",
16
+ "url": "/threat-types/",
17
+ }
18
+
19
+ return _kwargs
20
+
21
+
22
+ def _parse_response(
23
+ *, client: AuthenticatedClient | Client, response: httpx.Response
24
+ ) -> ListResponseThreatTypeRead | None:
25
+ if response.status_code == 200:
26
+ response_200 = ListResponseThreatTypeRead.from_dict(response.json())
27
+
28
+ return response_200
29
+
30
+ if client.raise_on_unexpected_status:
31
+ raise errors.UnexpectedStatus(response.status_code, response.content)
32
+ else:
33
+ return None
34
+
35
+
36
+ def _build_response(
37
+ *, client: AuthenticatedClient | Client, response: httpx.Response
38
+ ) -> Response[ListResponseThreatTypeRead]:
39
+ return Response(
40
+ status_code=HTTPStatus(response.status_code),
41
+ content=response.content,
42
+ headers=response.headers,
43
+ parsed=_parse_response(client=client, response=response),
44
+ )
45
+
46
+
47
+ def sync_detailed(
48
+ *,
49
+ client: AuthenticatedClient,
50
+ ) -> Response[ListResponseThreatTypeRead]:
51
+ """List Threat Types
52
+
53
+ Raises:
54
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
55
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
56
+
57
+ Returns:
58
+ Response[ListResponseThreatTypeRead]
59
+ """
60
+
61
+ kwargs = _get_kwargs()
62
+
63
+ response = client.get_httpx_client().request(
64
+ **kwargs,
65
+ )
66
+
67
+ return _build_response(client=client, response=response)
68
+
69
+
70
+ def sync(
71
+ *,
72
+ client: AuthenticatedClient,
73
+ ) -> ListResponseThreatTypeRead | None:
74
+ """List Threat Types
75
+
76
+ Raises:
77
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
78
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
79
+
80
+ Returns:
81
+ ListResponseThreatTypeRead
82
+ """
83
+
84
+ return sync_detailed(
85
+ client=client,
86
+ ).parsed
87
+
88
+
89
+ async def asyncio_detailed(
90
+ *,
91
+ client: AuthenticatedClient,
92
+ ) -> Response[ListResponseThreatTypeRead]:
93
+ """List Threat Types
94
+
95
+ Raises:
96
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
97
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
98
+
99
+ Returns:
100
+ Response[ListResponseThreatTypeRead]
101
+ """
102
+
103
+ kwargs = _get_kwargs()
104
+
105
+ response = await client.get_async_httpx_client().request(**kwargs)
106
+
107
+ return _build_response(client=client, response=response)
108
+
109
+
110
+ async def asyncio(
111
+ *,
112
+ client: AuthenticatedClient,
113
+ ) -> ListResponseThreatTypeRead | None:
114
+ """List Threat Types
115
+
116
+ Raises:
117
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
118
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
119
+
120
+ Returns:
121
+ ListResponseThreatTypeRead
122
+ """
123
+
124
+ return (
125
+ await asyncio_detailed(
126
+ client=client,
127
+ )
128
+ ).parsed
@@ -0,0 +1,171 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.http_validation_error import HTTPValidationError
9
+ from ...models.list_response_threat_read import ListResponseThreatRead
10
+ from ...types import UNSET, Response, Unset
11
+
12
+
13
+ def _get_kwargs(
14
+ *,
15
+ malware_id: int | None | Unset = UNSET,
16
+ ) -> dict[str, Any]:
17
+
18
+ params: dict[str, Any] = {}
19
+
20
+ json_malware_id: int | None | Unset
21
+ if isinstance(malware_id, Unset):
22
+ json_malware_id = UNSET
23
+ else:
24
+ json_malware_id = malware_id
25
+ params["malware_id"] = json_malware_id
26
+
27
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
28
+
29
+ _kwargs: dict[str, Any] = {
30
+ "method": "get",
31
+ "url": "/threats/",
32
+ "params": params,
33
+ }
34
+
35
+ return _kwargs
36
+
37
+
38
+ def _parse_response(
39
+ *, client: AuthenticatedClient | Client, response: httpx.Response
40
+ ) -> HTTPValidationError | ListResponseThreatRead | None:
41
+ if response.status_code == 200:
42
+ response_200 = ListResponseThreatRead.from_dict(response.json())
43
+
44
+ return response_200
45
+
46
+ if response.status_code == 422:
47
+ response_422 = HTTPValidationError.from_dict(response.json())
48
+
49
+ return response_422
50
+
51
+ if client.raise_on_unexpected_status:
52
+ raise errors.UnexpectedStatus(response.status_code, response.content)
53
+ else:
54
+ return None
55
+
56
+
57
+ def _build_response(
58
+ *, client: AuthenticatedClient | Client, response: httpx.Response
59
+ ) -> Response[HTTPValidationError | ListResponseThreatRead]:
60
+ return Response(
61
+ status_code=HTTPStatus(response.status_code),
62
+ content=response.content,
63
+ headers=response.headers,
64
+ parsed=_parse_response(client=client, response=response),
65
+ )
66
+
67
+
68
+ def sync_detailed(
69
+ *,
70
+ client: AuthenticatedClient,
71
+ malware_id: int | None | Unset = UNSET,
72
+ ) -> Response[HTTPValidationError | ListResponseThreatRead]:
73
+ """List Threats
74
+
75
+ Args:
76
+ malware_id (int | None | Unset):
77
+
78
+ Raises:
79
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
80
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
81
+
82
+ Returns:
83
+ Response[HTTPValidationError | ListResponseThreatRead]
84
+ """
85
+
86
+ kwargs = _get_kwargs(
87
+ malware_id=malware_id,
88
+ )
89
+
90
+ response = client.get_httpx_client().request(
91
+ **kwargs,
92
+ )
93
+
94
+ return _build_response(client=client, response=response)
95
+
96
+
97
+ def sync(
98
+ *,
99
+ client: AuthenticatedClient,
100
+ malware_id: int | None | Unset = UNSET,
101
+ ) -> HTTPValidationError | ListResponseThreatRead | None:
102
+ """List Threats
103
+
104
+ Args:
105
+ malware_id (int | None | Unset):
106
+
107
+ Raises:
108
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
109
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
110
+
111
+ Returns:
112
+ HTTPValidationError | ListResponseThreatRead
113
+ """
114
+
115
+ return sync_detailed(
116
+ client=client,
117
+ malware_id=malware_id,
118
+ ).parsed
119
+
120
+
121
+ async def asyncio_detailed(
122
+ *,
123
+ client: AuthenticatedClient,
124
+ malware_id: int | None | Unset = UNSET,
125
+ ) -> Response[HTTPValidationError | ListResponseThreatRead]:
126
+ """List Threats
127
+
128
+ Args:
129
+ malware_id (int | None | Unset):
130
+
131
+ Raises:
132
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
133
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
134
+
135
+ Returns:
136
+ Response[HTTPValidationError | ListResponseThreatRead]
137
+ """
138
+
139
+ kwargs = _get_kwargs(
140
+ malware_id=malware_id,
141
+ )
142
+
143
+ response = await client.get_async_httpx_client().request(**kwargs)
144
+
145
+ return _build_response(client=client, response=response)
146
+
147
+
148
+ async def asyncio(
149
+ *,
150
+ client: AuthenticatedClient,
151
+ malware_id: int | None | Unset = UNSET,
152
+ ) -> HTTPValidationError | ListResponseThreatRead | None:
153
+ """List Threats
154
+
155
+ Args:
156
+ malware_id (int | None | Unset):
157
+
158
+ Raises:
159
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
160
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
161
+
162
+ Returns:
163
+ HTTPValidationError | ListResponseThreatRead
164
+ """
165
+
166
+ return (
167
+ await asyncio_detailed(
168
+ client=client,
169
+ malware_id=malware_id,
170
+ )
171
+ ).parsed
@@ -0,0 +1,182 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ... import errors
8
+ from ...client import AuthenticatedClient, Client
9
+ from ...models.http_validation_error import HTTPValidationError
10
+ from ...models.threat_type_read import ThreatTypeRead
11
+ from ...models.threat_type_update import ThreatTypeUpdate
12
+ from ...types import Response
13
+
14
+
15
+ def _get_kwargs(
16
+ threat_type_id: int,
17
+ *,
18
+ body: ThreatTypeUpdate,
19
+ ) -> dict[str, Any]:
20
+ headers: dict[str, Any] = {}
21
+
22
+ _kwargs: dict[str, Any] = {
23
+ "method": "patch",
24
+ "url": "/threat-types/{threat_type_id}".format(
25
+ threat_type_id=quote(str(threat_type_id), safe=""),
26
+ ),
27
+ }
28
+
29
+ _kwargs["json"] = body.to_dict()
30
+
31
+ headers["Content-Type"] = "application/json"
32
+
33
+ _kwargs["headers"] = headers
34
+ return _kwargs
35
+
36
+
37
+ def _parse_response(
38
+ *, client: AuthenticatedClient | Client, response: httpx.Response
39
+ ) -> HTTPValidationError | ThreatTypeRead | None:
40
+ if response.status_code == 200:
41
+ response_200 = ThreatTypeRead.from_dict(response.json())
42
+
43
+ return response_200
44
+
45
+ if response.status_code == 422:
46
+ response_422 = HTTPValidationError.from_dict(response.json())
47
+
48
+ return response_422
49
+
50
+ if client.raise_on_unexpected_status:
51
+ raise errors.UnexpectedStatus(response.status_code, response.content)
52
+ else:
53
+ return None
54
+
55
+
56
+ def _build_response(
57
+ *, client: AuthenticatedClient | Client, response: httpx.Response
58
+ ) -> Response[HTTPValidationError | ThreatTypeRead]:
59
+ return Response(
60
+ status_code=HTTPStatus(response.status_code),
61
+ content=response.content,
62
+ headers=response.headers,
63
+ parsed=_parse_response(client=client, response=response),
64
+ )
65
+
66
+
67
+ def sync_detailed(
68
+ threat_type_id: int,
69
+ *,
70
+ client: AuthenticatedClient,
71
+ body: ThreatTypeUpdate,
72
+ ) -> Response[HTTPValidationError | ThreatTypeRead]:
73
+ """Update Threat Type
74
+
75
+ Args:
76
+ threat_type_id (int):
77
+ body (ThreatTypeUpdate):
78
+
79
+ Raises:
80
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
81
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
82
+
83
+ Returns:
84
+ Response[HTTPValidationError | ThreatTypeRead]
85
+ """
86
+
87
+ kwargs = _get_kwargs(
88
+ threat_type_id=threat_type_id,
89
+ body=body,
90
+ )
91
+
92
+ response = client.get_httpx_client().request(
93
+ **kwargs,
94
+ )
95
+
96
+ return _build_response(client=client, response=response)
97
+
98
+
99
+ def sync(
100
+ threat_type_id: int,
101
+ *,
102
+ client: AuthenticatedClient,
103
+ body: ThreatTypeUpdate,
104
+ ) -> HTTPValidationError | ThreatTypeRead | None:
105
+ """Update Threat Type
106
+
107
+ Args:
108
+ threat_type_id (int):
109
+ body (ThreatTypeUpdate):
110
+
111
+ Raises:
112
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
113
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
114
+
115
+ Returns:
116
+ HTTPValidationError | ThreatTypeRead
117
+ """
118
+
119
+ return sync_detailed(
120
+ threat_type_id=threat_type_id,
121
+ client=client,
122
+ body=body,
123
+ ).parsed
124
+
125
+
126
+ async def asyncio_detailed(
127
+ threat_type_id: int,
128
+ *,
129
+ client: AuthenticatedClient,
130
+ body: ThreatTypeUpdate,
131
+ ) -> Response[HTTPValidationError | ThreatTypeRead]:
132
+ """Update Threat Type
133
+
134
+ Args:
135
+ threat_type_id (int):
136
+ body (ThreatTypeUpdate):
137
+
138
+ Raises:
139
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
140
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
141
+
142
+ Returns:
143
+ Response[HTTPValidationError | ThreatTypeRead]
144
+ """
145
+
146
+ kwargs = _get_kwargs(
147
+ threat_type_id=threat_type_id,
148
+ body=body,
149
+ )
150
+
151
+ response = await client.get_async_httpx_client().request(**kwargs)
152
+
153
+ return _build_response(client=client, response=response)
154
+
155
+
156
+ async def asyncio(
157
+ threat_type_id: int,
158
+ *,
159
+ client: AuthenticatedClient,
160
+ body: ThreatTypeUpdate,
161
+ ) -> HTTPValidationError | ThreatTypeRead | None:
162
+ """Update Threat Type
163
+
164
+ Args:
165
+ threat_type_id (int):
166
+ body (ThreatTypeUpdate):
167
+
168
+ Raises:
169
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
170
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
171
+
172
+ Returns:
173
+ HTTPValidationError | ThreatTypeRead
174
+ """
175
+
176
+ return (
177
+ await asyncio_detailed(
178
+ threat_type_id=threat_type_id,
179
+ client=client,
180
+ body=body,
181
+ )
182
+ ).parsed
@@ -0,0 +1,56 @@
1
+ """convenience helpers for authenticating against the ACE API v2
2
+
3
+ this module is hand-maintained and is NOT overwritten when the rest of the
4
+ package is regenerated from the openapi schema (see ../scripts/regenerate.sh).
5
+
6
+ the generated ``AuthenticatedClient`` only knows how to send ``Authorization:
7
+ Bearer <token>``. the ACE API v2 primary auth is an api key sent in the custom
8
+ ``x-ace-auth`` header, so the helpers below build a plain ``Client`` with that
9
+ header pre-populated.
10
+ """
11
+
12
+ from .client import AuthenticatedClient, Client
13
+
14
+ # header name the ACE API v2 expects for machine-to-machine api key auth
15
+ API_KEY_HEADER = "x-ace-auth"
16
+
17
+
18
+ def authenticated_client(base_url, api_key, *, verify_ssl=True, **kwargs):
19
+ """build a ``Client`` that authenticates with an ACE api key
20
+
21
+ args:
22
+ base_url: full base url including the ``/api/v2`` prefix, e.g.
23
+ ``https://localhost:8443/api/v2``
24
+ api_key: the ACE api key (sent in the ``x-ace-auth`` header)
25
+ verify_ssl: verify the server tls certificate. set to ``False`` when
26
+ talking to a development instance using a self-signed certificate.
27
+ **kwargs: any other keyword argument accepted by ``Client`` (``timeout``,
28
+ ``headers``, ``httpx_args``, etc). extra ``headers`` are merged with
29
+ the api key header.
30
+
31
+ returns:
32
+ a configured ``Client`` ready to pass to the functions under
33
+ ``aceapi_v2_client.api``.
34
+ """
35
+ headers = {API_KEY_HEADER: api_key, **kwargs.pop("headers", {})}
36
+ return Client(base_url=base_url, headers=headers, verify_ssl=verify_ssl, **kwargs)
37
+
38
+
39
+ def token_client(base_url, access_token, *, verify_ssl=True, **kwargs):
40
+ """build an ``AuthenticatedClient`` that authenticates with a jwt access token
41
+
42
+ use this after obtaining a token from the ``/auth/token`` endpoint. the token
43
+ is sent as ``Authorization: Bearer <access_token>``.
44
+
45
+ args:
46
+ base_url: full base url including the ``/api/v2`` prefix
47
+ access_token: a jwt access token issued by the api
48
+ verify_ssl: verify the server tls certificate (``False`` for dev)
49
+ **kwargs: any other keyword argument accepted by ``AuthenticatedClient``
50
+
51
+ returns:
52
+ a configured ``AuthenticatedClient``.
53
+ """
54
+ return AuthenticatedClient(
55
+ base_url=base_url, token=access_token, verify_ssl=verify_ssl, **kwargs
56
+ )