hiddenlayer-sdk 2.0.10__py3-none-any.whl → 3.0.1__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 (204) hide show
  1. hiddenlayer/__init__.py +109 -114
  2. hiddenlayer/_base_client.py +1995 -0
  3. hiddenlayer/_client.py +761 -0
  4. hiddenlayer/_compat.py +219 -0
  5. hiddenlayer/_constants.py +14 -0
  6. hiddenlayer/_exceptions.py +108 -0
  7. hiddenlayer/_files.py +123 -0
  8. hiddenlayer/_models.py +835 -0
  9. hiddenlayer/_oauth2.py +118 -0
  10. hiddenlayer/_qs.py +150 -0
  11. hiddenlayer/_resource.py +43 -0
  12. hiddenlayer/_response.py +832 -0
  13. hiddenlayer/_streaming.py +333 -0
  14. hiddenlayer/_types.py +260 -0
  15. hiddenlayer/_utils/__init__.py +64 -0
  16. hiddenlayer/_utils/_compat.py +45 -0
  17. hiddenlayer/_utils/_datetime_parse.py +136 -0
  18. hiddenlayer/_utils/_logs.py +25 -0
  19. hiddenlayer/_utils/_proxy.py +65 -0
  20. hiddenlayer/_utils/_reflection.py +42 -0
  21. hiddenlayer/_utils/_resources_proxy.py +24 -0
  22. hiddenlayer/_utils/_streams.py +12 -0
  23. hiddenlayer/_utils/_sync.py +86 -0
  24. hiddenlayer/_utils/_transform.py +457 -0
  25. hiddenlayer/_utils/_typing.py +156 -0
  26. hiddenlayer/_utils/_utils.py +421 -0
  27. hiddenlayer/_version.py +4 -0
  28. hiddenlayer/lib/.keep +4 -0
  29. hiddenlayer/lib/__init__.py +6 -0
  30. hiddenlayer/lib/community_scan.py +174 -0
  31. hiddenlayer/lib/model_scan.py +752 -0
  32. hiddenlayer/lib/scan_utils.py +142 -0
  33. hiddenlayer/pagination.py +127 -0
  34. hiddenlayer/resources/__init__.py +75 -0
  35. hiddenlayer/resources/interactions.py +205 -0
  36. hiddenlayer/resources/models/__init__.py +33 -0
  37. hiddenlayer/resources/models/cards.py +259 -0
  38. hiddenlayer/resources/models/models.py +284 -0
  39. hiddenlayer/resources/prompt_analyzer.py +207 -0
  40. hiddenlayer/resources/scans/__init__.py +61 -0
  41. hiddenlayer/resources/scans/jobs.py +499 -0
  42. hiddenlayer/resources/scans/results.py +169 -0
  43. hiddenlayer/resources/scans/scans.py +166 -0
  44. hiddenlayer/resources/scans/upload/__init__.py +33 -0
  45. hiddenlayer/resources/scans/upload/file.py +279 -0
  46. hiddenlayer/resources/scans/upload/upload.py +340 -0
  47. hiddenlayer/resources/sensors.py +575 -0
  48. hiddenlayer/types/__init__.py +16 -0
  49. hiddenlayer/types/interaction_analyze_params.py +62 -0
  50. hiddenlayer/types/interaction_analyze_response.py +199 -0
  51. hiddenlayer/types/model_retrieve_response.py +50 -0
  52. hiddenlayer/types/models/__init__.py +6 -0
  53. hiddenlayer/types/models/card_list_params.py +65 -0
  54. hiddenlayer/types/models/card_list_response.py +50 -0
  55. hiddenlayer/types/prompt_analyzer_create_params.py +23 -0
  56. hiddenlayer/types/prompt_analyzer_create_response.py +381 -0
  57. hiddenlayer/types/scans/__init__.py +14 -0
  58. hiddenlayer/types/scans/job_list_params.py +75 -0
  59. hiddenlayer/types/scans/job_list_response.py +22 -0
  60. hiddenlayer/types/scans/job_request_params.py +49 -0
  61. hiddenlayer/types/scans/job_retrieve_params.py +16 -0
  62. hiddenlayer/types/scans/result_sarif_response.py +7 -0
  63. hiddenlayer/types/scans/scan_job.py +46 -0
  64. hiddenlayer/types/scans/scan_report.py +367 -0
  65. hiddenlayer/types/scans/upload/__init__.py +6 -0
  66. hiddenlayer/types/scans/upload/file_add_response.py +24 -0
  67. hiddenlayer/types/scans/upload/file_complete_response.py +12 -0
  68. hiddenlayer/types/scans/upload_complete_all_response.py +12 -0
  69. hiddenlayer/types/scans/upload_start_params.py +34 -0
  70. hiddenlayer/types/scans/upload_start_response.py +12 -0
  71. hiddenlayer/types/sensor_create_params.py +24 -0
  72. hiddenlayer/types/sensor_create_response.py +33 -0
  73. hiddenlayer/types/sensor_query_params.py +39 -0
  74. hiddenlayer/types/sensor_query_response.py +43 -0
  75. hiddenlayer/types/sensor_retrieve_response.py +33 -0
  76. hiddenlayer/types/sensor_update_params.py +20 -0
  77. hiddenlayer/types/sensor_update_response.py +9 -0
  78. hiddenlayer_sdk-3.0.1.dist-info/METADATA +521 -0
  79. hiddenlayer_sdk-3.0.1.dist-info/RECORD +82 -0
  80. {hiddenlayer_sdk-2.0.10.dist-info → hiddenlayer_sdk-3.0.1.dist-info}/WHEEL +1 -2
  81. {hiddenlayer_sdk-2.0.10.dist-info → hiddenlayer_sdk-3.0.1.dist-info}/licenses/LICENSE +1 -1
  82. hiddenlayer/sdk/constants.py +0 -26
  83. hiddenlayer/sdk/exceptions.py +0 -12
  84. hiddenlayer/sdk/models.py +0 -58
  85. hiddenlayer/sdk/rest/__init__.py +0 -135
  86. hiddenlayer/sdk/rest/api/__init__.py +0 -10
  87. hiddenlayer/sdk/rest/api/aidr_predictive_api.py +0 -308
  88. hiddenlayer/sdk/rest/api/health_api.py +0 -272
  89. hiddenlayer/sdk/rest/api/model_api.py +0 -559
  90. hiddenlayer/sdk/rest/api/model_supply_chain_api.py +0 -4063
  91. hiddenlayer/sdk/rest/api/readiness_api.py +0 -272
  92. hiddenlayer/sdk/rest/api/sensor_api.py +0 -1432
  93. hiddenlayer/sdk/rest/api_client.py +0 -770
  94. hiddenlayer/sdk/rest/api_response.py +0 -21
  95. hiddenlayer/sdk/rest/configuration.py +0 -445
  96. hiddenlayer/sdk/rest/exceptions.py +0 -199
  97. hiddenlayer/sdk/rest/models/__init__.py +0 -113
  98. hiddenlayer/sdk/rest/models/address.py +0 -110
  99. hiddenlayer/sdk/rest/models/artifact.py +0 -155
  100. hiddenlayer/sdk/rest/models/artifact_change.py +0 -108
  101. hiddenlayer/sdk/rest/models/artifact_content.py +0 -101
  102. hiddenlayer/sdk/rest/models/artifact_location.py +0 -109
  103. hiddenlayer/sdk/rest/models/attachment.py +0 -129
  104. hiddenlayer/sdk/rest/models/begin_multi_file_upload200_response.py +0 -87
  105. hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response.py +0 -97
  106. hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response_parts_inner.py +0 -94
  107. hiddenlayer/sdk/rest/models/code_flow.py +0 -113
  108. hiddenlayer/sdk/rest/models/configuration_override.py +0 -108
  109. hiddenlayer/sdk/rest/models/conversion.py +0 -114
  110. hiddenlayer/sdk/rest/models/create_sensor_request.py +0 -95
  111. hiddenlayer/sdk/rest/models/edge.py +0 -108
  112. hiddenlayer/sdk/rest/models/edge_traversal.py +0 -122
  113. hiddenlayer/sdk/rest/models/errors_inner.py +0 -91
  114. hiddenlayer/sdk/rest/models/exception.py +0 -113
  115. hiddenlayer/sdk/rest/models/external_properties.py +0 -273
  116. hiddenlayer/sdk/rest/models/external_property_file_reference.py +0 -102
  117. hiddenlayer/sdk/rest/models/external_property_file_references.py +0 -240
  118. hiddenlayer/sdk/rest/models/file_details_v3.py +0 -139
  119. hiddenlayer/sdk/rest/models/file_result_v3.py +0 -117
  120. hiddenlayer/sdk/rest/models/file_scan_report_v3.py +0 -132
  121. hiddenlayer/sdk/rest/models/file_scan_reports_v3.py +0 -95
  122. hiddenlayer/sdk/rest/models/fix.py +0 -113
  123. hiddenlayer/sdk/rest/models/get_condensed_model_scan_reports200_response.py +0 -102
  124. hiddenlayer/sdk/rest/models/graph.py +0 -123
  125. hiddenlayer/sdk/rest/models/graph_traversal.py +0 -97
  126. hiddenlayer/sdk/rest/models/inventory_v3.py +0 -101
  127. hiddenlayer/sdk/rest/models/invocation.py +0 -199
  128. hiddenlayer/sdk/rest/models/location.py +0 -146
  129. hiddenlayer/sdk/rest/models/location_inner.py +0 -138
  130. hiddenlayer/sdk/rest/models/location_relationship.py +0 -107
  131. hiddenlayer/sdk/rest/models/logical_location.py +0 -104
  132. hiddenlayer/sdk/rest/models/message.py +0 -92
  133. hiddenlayer/sdk/rest/models/mitre_atlas_inner.py +0 -110
  134. hiddenlayer/sdk/rest/models/model.py +0 -103
  135. hiddenlayer/sdk/rest/models/model_inventory_info.py +0 -103
  136. hiddenlayer/sdk/rest/models/model_version.py +0 -97
  137. hiddenlayer/sdk/rest/models/multi_file_upload_request_v3.py +0 -97
  138. hiddenlayer/sdk/rest/models/multiformat_message_string.py +0 -95
  139. hiddenlayer/sdk/rest/models/node.py +0 -122
  140. hiddenlayer/sdk/rest/models/notification.py +0 -157
  141. hiddenlayer/sdk/rest/models/notify_model_scan_completed200_response.py +0 -87
  142. hiddenlayer/sdk/rest/models/paged_response_with_total.py +0 -94
  143. hiddenlayer/sdk/rest/models/pagination_v3.py +0 -95
  144. hiddenlayer/sdk/rest/models/physical_location.py +0 -94
  145. hiddenlayer/sdk/rest/models/problem_details.py +0 -103
  146. hiddenlayer/sdk/rest/models/property_bag.py +0 -101
  147. hiddenlayer/sdk/rest/models/rectangle.py +0 -110
  148. hiddenlayer/sdk/rest/models/region.py +0 -127
  149. hiddenlayer/sdk/rest/models/replacement.py +0 -103
  150. hiddenlayer/sdk/rest/models/reporting_configuration.py +0 -113
  151. hiddenlayer/sdk/rest/models/reporting_descriptor.py +0 -162
  152. hiddenlayer/sdk/rest/models/reporting_descriptor_reference.py +0 -103
  153. hiddenlayer/sdk/rest/models/reporting_descriptor_relationship.py +0 -115
  154. hiddenlayer/sdk/rest/models/result.py +0 -312
  155. hiddenlayer/sdk/rest/models/result_provenance.py +0 -133
  156. hiddenlayer/sdk/rest/models/rule_details_inner.py +0 -102
  157. hiddenlayer/sdk/rest/models/run.py +0 -318
  158. hiddenlayer/sdk/rest/models/run_automation_details.py +0 -129
  159. hiddenlayer/sdk/rest/models/sarif210.py +0 -123
  160. hiddenlayer/sdk/rest/models/scan_create_request.py +0 -87
  161. hiddenlayer/sdk/rest/models/scan_detection_v3.py +0 -159
  162. hiddenlayer/sdk/rest/models/scan_detection_v31.py +0 -158
  163. hiddenlayer/sdk/rest/models/scan_header_v3.py +0 -129
  164. hiddenlayer/sdk/rest/models/scan_job.py +0 -115
  165. hiddenlayer/sdk/rest/models/scan_job_access.py +0 -97
  166. hiddenlayer/sdk/rest/models/scan_model_details_v3.py +0 -99
  167. hiddenlayer/sdk/rest/models/scan_model_details_v31.py +0 -97
  168. hiddenlayer/sdk/rest/models/scan_model_ids_v3.py +0 -89
  169. hiddenlayer/sdk/rest/models/scan_report_v3.py +0 -139
  170. hiddenlayer/sdk/rest/models/scan_results_map_v3.py +0 -105
  171. hiddenlayer/sdk/rest/models/scan_results_v3.py +0 -120
  172. hiddenlayer/sdk/rest/models/security_posture.py +0 -89
  173. hiddenlayer/sdk/rest/models/sensor.py +0 -100
  174. hiddenlayer/sdk/rest/models/sensor_query_response.py +0 -101
  175. hiddenlayer/sdk/rest/models/sensor_sor_model_card_query_response.py +0 -101
  176. hiddenlayer/sdk/rest/models/sensor_sor_model_card_response.py +0 -127
  177. hiddenlayer/sdk/rest/models/sensor_sor_query_filter.py +0 -108
  178. hiddenlayer/sdk/rest/models/sensor_sor_query_request.py +0 -109
  179. hiddenlayer/sdk/rest/models/special_locations.py +0 -97
  180. hiddenlayer/sdk/rest/models/stack.py +0 -113
  181. hiddenlayer/sdk/rest/models/stack_frame.py +0 -104
  182. hiddenlayer/sdk/rest/models/submission_response.py +0 -95
  183. hiddenlayer/sdk/rest/models/submission_v2.py +0 -109
  184. hiddenlayer/sdk/rest/models/suppression.py +0 -133
  185. hiddenlayer/sdk/rest/models/thread_flow.py +0 -144
  186. hiddenlayer/sdk/rest/models/thread_flow_location.py +0 -166
  187. hiddenlayer/sdk/rest/models/tool.py +0 -107
  188. hiddenlayer/sdk/rest/models/tool_component.py +0 -251
  189. hiddenlayer/sdk/rest/models/tool_component_reference.py +0 -108
  190. hiddenlayer/sdk/rest/models/translation_metadata.py +0 -110
  191. hiddenlayer/sdk/rest/models/validation_error_model.py +0 -99
  192. hiddenlayer/sdk/rest/models/version_control_details.py +0 -108
  193. hiddenlayer/sdk/rest/models/web_request.py +0 -112
  194. hiddenlayer/sdk/rest/models/web_response.py +0 -112
  195. hiddenlayer/sdk/rest/rest.py +0 -257
  196. hiddenlayer/sdk/services/__init__.py +0 -0
  197. hiddenlayer/sdk/services/aidr_predictive.py +0 -130
  198. hiddenlayer/sdk/services/model_scan.py +0 -505
  199. hiddenlayer/sdk/utils.py +0 -92
  200. hiddenlayer/sdk/version.py +0 -1
  201. hiddenlayer_sdk-2.0.10.dist-info/METADATA +0 -368
  202. hiddenlayer_sdk-2.0.10.dist-info/RECORD +0 -126
  203. hiddenlayer_sdk-2.0.10.dist-info/top_level.txt +0 -1
  204. /hiddenlayer/{sdk/__init__.py → py.typed} +0 -0
@@ -0,0 +1,499 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import List, Union
6
+ from datetime import datetime
7
+ from typing_extensions import Literal
8
+
9
+ import httpx
10
+
11
+ from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
12
+ from ..._utils import maybe_transform, strip_not_given, async_maybe_transform
13
+ from ..._compat import cached_property
14
+ from ..._resource import SyncAPIResource, AsyncAPIResource
15
+ from ..._response import (
16
+ to_raw_response_wrapper,
17
+ to_streamed_response_wrapper,
18
+ async_to_raw_response_wrapper,
19
+ async_to_streamed_response_wrapper,
20
+ )
21
+ from ...types.scans import job_list_params, job_request_params, job_retrieve_params
22
+ from ..._base_client import make_request_options
23
+ from ...types.scans.scan_job import ScanJob
24
+ from ...types.scans.scan_report import ScanReport
25
+ from ...types.scans.job_list_response import JobListResponse
26
+
27
+ __all__ = ["JobsResource", "AsyncJobsResource"]
28
+
29
+
30
+ class JobsResource(SyncAPIResource):
31
+ @cached_property
32
+ def with_raw_response(self) -> JobsResourceWithRawResponse:
33
+ """
34
+ This property can be used as a prefix for any HTTP method call to return
35
+ the raw response object instead of the parsed content.
36
+
37
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#accessing-raw-response-data-eg-headers
38
+ """
39
+ return JobsResourceWithRawResponse(self)
40
+
41
+ @cached_property
42
+ def with_streaming_response(self) -> JobsResourceWithStreamingResponse:
43
+ """
44
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
45
+
46
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#with_streaming_response
47
+ """
48
+ return JobsResourceWithStreamingResponse(self)
49
+
50
+ def retrieve(
51
+ self,
52
+ scan_id: str,
53
+ *,
54
+ has_detections: bool | Omit = omit,
55
+ x_correlation_id: str | Omit = omit,
56
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
57
+ # The extra values given here take precedence over values defined on the client or passed to this method.
58
+ extra_headers: Headers | None = None,
59
+ extra_query: Query | None = None,
60
+ extra_body: Body | None = None,
61
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
62
+ ) -> ScanReport:
63
+ """
64
+ Get scan results
65
+
66
+ Args:
67
+ has_detections: Filter file_results to only those that have detections (and parents)
68
+
69
+ extra_headers: Send extra headers
70
+
71
+ extra_query: Add additional query parameters to the request
72
+
73
+ extra_body: Add additional JSON properties to the request
74
+
75
+ timeout: Override the client-level default timeout for this request, in seconds
76
+ """
77
+ if not scan_id:
78
+ raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
79
+ extra_headers = {"Accept": "application/json; charset=utf-8", **(extra_headers or {})}
80
+ extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
81
+ return self._get(
82
+ f"/scan/v3/results/{scan_id}",
83
+ options=make_request_options(
84
+ extra_headers=extra_headers,
85
+ extra_query=extra_query,
86
+ extra_body=extra_body,
87
+ timeout=timeout,
88
+ query=maybe_transform({"has_detections": has_detections}, job_retrieve_params.JobRetrieveParams),
89
+ ),
90
+ cast_to=ScanReport,
91
+ )
92
+
93
+ def list(
94
+ self,
95
+ *,
96
+ compliance_status: List[Literal["COMPLIANT", "NONCOMPLIANT"]] | Omit = omit,
97
+ detection_category: str | Omit = omit,
98
+ end_time: Union[str, datetime] | Omit = omit,
99
+ latest_per_model_version_only: bool | Omit = omit,
100
+ limit: int | Omit = omit,
101
+ model_ids: SequenceNotStr[str] | Omit = omit,
102
+ model_name: job_list_params.ModelName | Omit = omit,
103
+ model_version_ids: SequenceNotStr[str] | Omit = omit,
104
+ offset: int | Omit = omit,
105
+ request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"]] | Omit = omit,
106
+ scanner_version: str | Omit = omit,
107
+ severity: SequenceNotStr[str] | Omit = omit,
108
+ sort: str | Omit = omit,
109
+ source: job_list_params.Source | Omit = omit,
110
+ start_time: Union[str, datetime] | Omit = omit,
111
+ status: SequenceNotStr[str] | Omit = omit,
112
+ x_correlation_id: str | Omit = omit,
113
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
114
+ # The extra values given here take precedence over values defined on the client or passed to this method.
115
+ extra_headers: Headers | None = None,
116
+ extra_query: Query | None = None,
117
+ extra_body: Body | None = None,
118
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
119
+ ) -> JobListResponse:
120
+ """
121
+ Get scan results (Summaries)
122
+
123
+ Args:
124
+ compliance_status: A comma separated list of rule set evaluation statuses to include
125
+
126
+ detection_category: filter by a single detection category
127
+
128
+ end_time: End Time
129
+
130
+ latest_per_model_version_only: only return latest result per model version
131
+
132
+ model_ids: Model ID
133
+
134
+ model_name: filter by the model name
135
+
136
+ model_version_ids: Model Version IDs
137
+
138
+ request_source: Filter by request source using a comma-separated list
139
+
140
+ scanner_version: filter by version of the scanner
141
+
142
+ severity: Severities
143
+
144
+ sort: allow sorting by model name, status, severity or created at, ascending (+) or
145
+ the default descending (-)
146
+
147
+ source: source of model related to scans
148
+
149
+ start_time: Start Time
150
+
151
+ status: Statuses
152
+
153
+ extra_headers: Send extra headers
154
+
155
+ extra_query: Add additional query parameters to the request
156
+
157
+ extra_body: Add additional JSON properties to the request
158
+
159
+ timeout: Override the client-level default timeout for this request, in seconds
160
+ """
161
+ extra_headers = {"Accept": "application/json; charset=utf-8", **(extra_headers or {})}
162
+ extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
163
+ return self._get(
164
+ "/scan/v3/results",
165
+ options=make_request_options(
166
+ extra_headers=extra_headers,
167
+ extra_query=extra_query,
168
+ extra_body=extra_body,
169
+ timeout=timeout,
170
+ query=maybe_transform(
171
+ {
172
+ "compliance_status": compliance_status,
173
+ "detection_category": detection_category,
174
+ "end_time": end_time,
175
+ "latest_per_model_version_only": latest_per_model_version_only,
176
+ "limit": limit,
177
+ "model_ids": model_ids,
178
+ "model_name": model_name,
179
+ "model_version_ids": model_version_ids,
180
+ "offset": offset,
181
+ "request_source": request_source,
182
+ "scanner_version": scanner_version,
183
+ "severity": severity,
184
+ "sort": sort,
185
+ "source": source,
186
+ "start_time": start_time,
187
+ "status": status,
188
+ },
189
+ job_list_params.JobListParams,
190
+ ),
191
+ ),
192
+ cast_to=JobListResponse,
193
+ )
194
+
195
+ def request(
196
+ self,
197
+ *,
198
+ access: job_request_params.Access,
199
+ inventory: job_request_params.Inventory,
200
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
201
+ # The extra values given here take precedence over values defined on the client or passed to this method.
202
+ extra_headers: Headers | None = None,
203
+ extra_query: Query | None = None,
204
+ extra_body: Body | None = None,
205
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
206
+ ) -> ScanJob:
207
+ """
208
+ Scan a remote model
209
+
210
+ Args:
211
+ extra_headers: Send extra headers
212
+
213
+ extra_query: Add additional query parameters to the request
214
+
215
+ extra_body: Add additional JSON properties to the request
216
+
217
+ timeout: Override the client-level default timeout for this request, in seconds
218
+ """
219
+ return self._post(
220
+ "/scan/v3/jobs",
221
+ body=maybe_transform(
222
+ {
223
+ "access": access,
224
+ "inventory": inventory,
225
+ },
226
+ job_request_params.JobRequestParams,
227
+ ),
228
+ options=make_request_options(
229
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
230
+ ),
231
+ cast_to=ScanJob,
232
+ )
233
+
234
+
235
+ class AsyncJobsResource(AsyncAPIResource):
236
+ @cached_property
237
+ def with_raw_response(self) -> AsyncJobsResourceWithRawResponse:
238
+ """
239
+ This property can be used as a prefix for any HTTP method call to return
240
+ the raw response object instead of the parsed content.
241
+
242
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#accessing-raw-response-data-eg-headers
243
+ """
244
+ return AsyncJobsResourceWithRawResponse(self)
245
+
246
+ @cached_property
247
+ def with_streaming_response(self) -> AsyncJobsResourceWithStreamingResponse:
248
+ """
249
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
250
+
251
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#with_streaming_response
252
+ """
253
+ return AsyncJobsResourceWithStreamingResponse(self)
254
+
255
+ async def retrieve(
256
+ self,
257
+ scan_id: str,
258
+ *,
259
+ has_detections: bool | Omit = omit,
260
+ x_correlation_id: str | Omit = omit,
261
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
262
+ # The extra values given here take precedence over values defined on the client or passed to this method.
263
+ extra_headers: Headers | None = None,
264
+ extra_query: Query | None = None,
265
+ extra_body: Body | None = None,
266
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
267
+ ) -> ScanReport:
268
+ """
269
+ Get scan results
270
+
271
+ Args:
272
+ has_detections: Filter file_results to only those that have detections (and parents)
273
+
274
+ extra_headers: Send extra headers
275
+
276
+ extra_query: Add additional query parameters to the request
277
+
278
+ extra_body: Add additional JSON properties to the request
279
+
280
+ timeout: Override the client-level default timeout for this request, in seconds
281
+ """
282
+ if not scan_id:
283
+ raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
284
+ extra_headers = {"Accept": "application/json; charset=utf-8", **(extra_headers or {})}
285
+ extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
286
+ return await self._get(
287
+ f"/scan/v3/results/{scan_id}",
288
+ options=make_request_options(
289
+ extra_headers=extra_headers,
290
+ extra_query=extra_query,
291
+ extra_body=extra_body,
292
+ timeout=timeout,
293
+ query=await async_maybe_transform(
294
+ {"has_detections": has_detections}, job_retrieve_params.JobRetrieveParams
295
+ ),
296
+ ),
297
+ cast_to=ScanReport,
298
+ )
299
+
300
+ async def list(
301
+ self,
302
+ *,
303
+ compliance_status: List[Literal["COMPLIANT", "NONCOMPLIANT"]] | Omit = omit,
304
+ detection_category: str | Omit = omit,
305
+ end_time: Union[str, datetime] | Omit = omit,
306
+ latest_per_model_version_only: bool | Omit = omit,
307
+ limit: int | Omit = omit,
308
+ model_ids: SequenceNotStr[str] | Omit = omit,
309
+ model_name: job_list_params.ModelName | Omit = omit,
310
+ model_version_ids: SequenceNotStr[str] | Omit = omit,
311
+ offset: int | Omit = omit,
312
+ request_source: List[Literal["Hybrid Upload", "API Upload", "Integration", "UI Upload"]] | Omit = omit,
313
+ scanner_version: str | Omit = omit,
314
+ severity: SequenceNotStr[str] | Omit = omit,
315
+ sort: str | Omit = omit,
316
+ source: job_list_params.Source | Omit = omit,
317
+ start_time: Union[str, datetime] | Omit = omit,
318
+ status: SequenceNotStr[str] | Omit = omit,
319
+ x_correlation_id: str | Omit = omit,
320
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
321
+ # The extra values given here take precedence over values defined on the client or passed to this method.
322
+ extra_headers: Headers | None = None,
323
+ extra_query: Query | None = None,
324
+ extra_body: Body | None = None,
325
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
326
+ ) -> JobListResponse:
327
+ """
328
+ Get scan results (Summaries)
329
+
330
+ Args:
331
+ compliance_status: A comma separated list of rule set evaluation statuses to include
332
+
333
+ detection_category: filter by a single detection category
334
+
335
+ end_time: End Time
336
+
337
+ latest_per_model_version_only: only return latest result per model version
338
+
339
+ model_ids: Model ID
340
+
341
+ model_name: filter by the model name
342
+
343
+ model_version_ids: Model Version IDs
344
+
345
+ request_source: Filter by request source using a comma-separated list
346
+
347
+ scanner_version: filter by version of the scanner
348
+
349
+ severity: Severities
350
+
351
+ sort: allow sorting by model name, status, severity or created at, ascending (+) or
352
+ the default descending (-)
353
+
354
+ source: source of model related to scans
355
+
356
+ start_time: Start Time
357
+
358
+ status: Statuses
359
+
360
+ extra_headers: Send extra headers
361
+
362
+ extra_query: Add additional query parameters to the request
363
+
364
+ extra_body: Add additional JSON properties to the request
365
+
366
+ timeout: Override the client-level default timeout for this request, in seconds
367
+ """
368
+ extra_headers = {"Accept": "application/json; charset=utf-8", **(extra_headers or {})}
369
+ extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
370
+ return await self._get(
371
+ "/scan/v3/results",
372
+ options=make_request_options(
373
+ extra_headers=extra_headers,
374
+ extra_query=extra_query,
375
+ extra_body=extra_body,
376
+ timeout=timeout,
377
+ query=await async_maybe_transform(
378
+ {
379
+ "compliance_status": compliance_status,
380
+ "detection_category": detection_category,
381
+ "end_time": end_time,
382
+ "latest_per_model_version_only": latest_per_model_version_only,
383
+ "limit": limit,
384
+ "model_ids": model_ids,
385
+ "model_name": model_name,
386
+ "model_version_ids": model_version_ids,
387
+ "offset": offset,
388
+ "request_source": request_source,
389
+ "scanner_version": scanner_version,
390
+ "severity": severity,
391
+ "sort": sort,
392
+ "source": source,
393
+ "start_time": start_time,
394
+ "status": status,
395
+ },
396
+ job_list_params.JobListParams,
397
+ ),
398
+ ),
399
+ cast_to=JobListResponse,
400
+ )
401
+
402
+ async def request(
403
+ self,
404
+ *,
405
+ access: job_request_params.Access,
406
+ inventory: job_request_params.Inventory,
407
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
408
+ # The extra values given here take precedence over values defined on the client or passed to this method.
409
+ extra_headers: Headers | None = None,
410
+ extra_query: Query | None = None,
411
+ extra_body: Body | None = None,
412
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
413
+ ) -> ScanJob:
414
+ """
415
+ Scan a remote model
416
+
417
+ Args:
418
+ extra_headers: Send extra headers
419
+
420
+ extra_query: Add additional query parameters to the request
421
+
422
+ extra_body: Add additional JSON properties to the request
423
+
424
+ timeout: Override the client-level default timeout for this request, in seconds
425
+ """
426
+ return await self._post(
427
+ "/scan/v3/jobs",
428
+ body=await async_maybe_transform(
429
+ {
430
+ "access": access,
431
+ "inventory": inventory,
432
+ },
433
+ job_request_params.JobRequestParams,
434
+ ),
435
+ options=make_request_options(
436
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
437
+ ),
438
+ cast_to=ScanJob,
439
+ )
440
+
441
+
442
+ class JobsResourceWithRawResponse:
443
+ def __init__(self, jobs: JobsResource) -> None:
444
+ self._jobs = jobs
445
+
446
+ self.retrieve = to_raw_response_wrapper(
447
+ jobs.retrieve,
448
+ )
449
+ self.list = to_raw_response_wrapper(
450
+ jobs.list,
451
+ )
452
+ self.request = to_raw_response_wrapper(
453
+ jobs.request,
454
+ )
455
+
456
+
457
+ class AsyncJobsResourceWithRawResponse:
458
+ def __init__(self, jobs: AsyncJobsResource) -> None:
459
+ self._jobs = jobs
460
+
461
+ self.retrieve = async_to_raw_response_wrapper(
462
+ jobs.retrieve,
463
+ )
464
+ self.list = async_to_raw_response_wrapper(
465
+ jobs.list,
466
+ )
467
+ self.request = async_to_raw_response_wrapper(
468
+ jobs.request,
469
+ )
470
+
471
+
472
+ class JobsResourceWithStreamingResponse:
473
+ def __init__(self, jobs: JobsResource) -> None:
474
+ self._jobs = jobs
475
+
476
+ self.retrieve = to_streamed_response_wrapper(
477
+ jobs.retrieve,
478
+ )
479
+ self.list = to_streamed_response_wrapper(
480
+ jobs.list,
481
+ )
482
+ self.request = to_streamed_response_wrapper(
483
+ jobs.request,
484
+ )
485
+
486
+
487
+ class AsyncJobsResourceWithStreamingResponse:
488
+ def __init__(self, jobs: AsyncJobsResource) -> None:
489
+ self._jobs = jobs
490
+
491
+ self.retrieve = async_to_streamed_response_wrapper(
492
+ jobs.retrieve,
493
+ )
494
+ self.list = async_to_streamed_response_wrapper(
495
+ jobs.list,
496
+ )
497
+ self.request = async_to_streamed_response_wrapper(
498
+ jobs.request,
499
+ )
@@ -0,0 +1,169 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ import httpx
6
+
7
+ from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
8
+ from ..._utils import strip_not_given
9
+ from ..._compat import cached_property
10
+ from ..._resource import SyncAPIResource, AsyncAPIResource
11
+ from ..._response import (
12
+ to_raw_response_wrapper,
13
+ to_streamed_response_wrapper,
14
+ async_to_raw_response_wrapper,
15
+ async_to_streamed_response_wrapper,
16
+ )
17
+ from ..._base_client import make_request_options
18
+
19
+ __all__ = ["ResultsResource", "AsyncResultsResource"]
20
+
21
+
22
+ class ResultsResource(SyncAPIResource):
23
+ @cached_property
24
+ def with_raw_response(self) -> ResultsResourceWithRawResponse:
25
+ """
26
+ This property can be used as a prefix for any HTTP method call to return
27
+ the raw response object instead of the parsed content.
28
+
29
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#accessing-raw-response-data-eg-headers
30
+ """
31
+ return ResultsResourceWithRawResponse(self)
32
+
33
+ @cached_property
34
+ def with_streaming_response(self) -> ResultsResourceWithStreamingResponse:
35
+ """
36
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
37
+
38
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#with_streaming_response
39
+ """
40
+ return ResultsResourceWithStreamingResponse(self)
41
+
42
+ def sarif(
43
+ self,
44
+ scan_id: str,
45
+ *,
46
+ x_correlation_id: str | Omit = omit,
47
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
48
+ # The extra values given here take precedence over values defined on the client or passed to this method.
49
+ extra_headers: Headers | None = None,
50
+ extra_query: Query | None = None,
51
+ extra_body: Body | None = None,
52
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
53
+ ) -> str:
54
+ """
55
+ Get scan results in SARIF format
56
+
57
+ Args:
58
+ extra_headers: Send extra headers
59
+
60
+ extra_query: Add additional query parameters to the request
61
+
62
+ extra_body: Add additional JSON properties to the request
63
+
64
+ timeout: Override the client-level default timeout for this request, in seconds
65
+ """
66
+ if not scan_id:
67
+ raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
68
+ extra_headers = {"Accept": "application/sarif+json", **(extra_headers or {})}
69
+ extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
70
+ return self._get(
71
+ f"/scan/v3/results/{scan_id}/sarif",
72
+ options=make_request_options(
73
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
74
+ ),
75
+ cast_to=str,
76
+ )
77
+
78
+
79
+ class AsyncResultsResource(AsyncAPIResource):
80
+ @cached_property
81
+ def with_raw_response(self) -> AsyncResultsResourceWithRawResponse:
82
+ """
83
+ This property can be used as a prefix for any HTTP method call to return
84
+ the raw response object instead of the parsed content.
85
+
86
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#accessing-raw-response-data-eg-headers
87
+ """
88
+ return AsyncResultsResourceWithRawResponse(self)
89
+
90
+ @cached_property
91
+ def with_streaming_response(self) -> AsyncResultsResourceWithStreamingResponse:
92
+ """
93
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
94
+
95
+ For more information, see https://www.github.com/hiddenlayerai/hiddenlayer-sdk-python#with_streaming_response
96
+ """
97
+ return AsyncResultsResourceWithStreamingResponse(self)
98
+
99
+ async def sarif(
100
+ self,
101
+ scan_id: str,
102
+ *,
103
+ x_correlation_id: str | Omit = omit,
104
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
105
+ # The extra values given here take precedence over values defined on the client or passed to this method.
106
+ extra_headers: Headers | None = None,
107
+ extra_query: Query | None = None,
108
+ extra_body: Body | None = None,
109
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
110
+ ) -> str:
111
+ """
112
+ Get scan results in SARIF format
113
+
114
+ Args:
115
+ extra_headers: Send extra headers
116
+
117
+ extra_query: Add additional query parameters to the request
118
+
119
+ extra_body: Add additional JSON properties to the request
120
+
121
+ timeout: Override the client-level default timeout for this request, in seconds
122
+ """
123
+ if not scan_id:
124
+ raise ValueError(f"Expected a non-empty value for `scan_id` but received {scan_id!r}")
125
+ extra_headers = {"Accept": "application/sarif+json", **(extra_headers or {})}
126
+ extra_headers = {**strip_not_given({"X-Correlation-Id": x_correlation_id}), **(extra_headers or {})}
127
+ return await self._get(
128
+ f"/scan/v3/results/{scan_id}/sarif",
129
+ options=make_request_options(
130
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
131
+ ),
132
+ cast_to=str,
133
+ )
134
+
135
+
136
+ class ResultsResourceWithRawResponse:
137
+ def __init__(self, results: ResultsResource) -> None:
138
+ self._results = results
139
+
140
+ self.sarif = to_raw_response_wrapper(
141
+ results.sarif,
142
+ )
143
+
144
+
145
+ class AsyncResultsResourceWithRawResponse:
146
+ def __init__(self, results: AsyncResultsResource) -> None:
147
+ self._results = results
148
+
149
+ self.sarif = async_to_raw_response_wrapper(
150
+ results.sarif,
151
+ )
152
+
153
+
154
+ class ResultsResourceWithStreamingResponse:
155
+ def __init__(self, results: ResultsResource) -> None:
156
+ self._results = results
157
+
158
+ self.sarif = to_streamed_response_wrapper(
159
+ results.sarif,
160
+ )
161
+
162
+
163
+ class AsyncResultsResourceWithStreamingResponse:
164
+ def __init__(self, results: AsyncResultsResource) -> None:
165
+ self._results = results
166
+
167
+ self.sarif = async_to_streamed_response_wrapper(
168
+ results.sarif,
169
+ )