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.
- hiddenlayer/__init__.py +109 -114
- hiddenlayer/_base_client.py +1995 -0
- hiddenlayer/_client.py +761 -0
- hiddenlayer/_compat.py +219 -0
- hiddenlayer/_constants.py +14 -0
- hiddenlayer/_exceptions.py +108 -0
- hiddenlayer/_files.py +123 -0
- hiddenlayer/_models.py +835 -0
- hiddenlayer/_oauth2.py +118 -0
- hiddenlayer/_qs.py +150 -0
- hiddenlayer/_resource.py +43 -0
- hiddenlayer/_response.py +832 -0
- hiddenlayer/_streaming.py +333 -0
- hiddenlayer/_types.py +260 -0
- hiddenlayer/_utils/__init__.py +64 -0
- hiddenlayer/_utils/_compat.py +45 -0
- hiddenlayer/_utils/_datetime_parse.py +136 -0
- hiddenlayer/_utils/_logs.py +25 -0
- hiddenlayer/_utils/_proxy.py +65 -0
- hiddenlayer/_utils/_reflection.py +42 -0
- hiddenlayer/_utils/_resources_proxy.py +24 -0
- hiddenlayer/_utils/_streams.py +12 -0
- hiddenlayer/_utils/_sync.py +86 -0
- hiddenlayer/_utils/_transform.py +457 -0
- hiddenlayer/_utils/_typing.py +156 -0
- hiddenlayer/_utils/_utils.py +421 -0
- hiddenlayer/_version.py +4 -0
- hiddenlayer/lib/.keep +4 -0
- hiddenlayer/lib/__init__.py +6 -0
- hiddenlayer/lib/community_scan.py +174 -0
- hiddenlayer/lib/model_scan.py +752 -0
- hiddenlayer/lib/scan_utils.py +142 -0
- hiddenlayer/pagination.py +127 -0
- hiddenlayer/resources/__init__.py +75 -0
- hiddenlayer/resources/interactions.py +205 -0
- hiddenlayer/resources/models/__init__.py +33 -0
- hiddenlayer/resources/models/cards.py +259 -0
- hiddenlayer/resources/models/models.py +284 -0
- hiddenlayer/resources/prompt_analyzer.py +207 -0
- hiddenlayer/resources/scans/__init__.py +61 -0
- hiddenlayer/resources/scans/jobs.py +499 -0
- hiddenlayer/resources/scans/results.py +169 -0
- hiddenlayer/resources/scans/scans.py +166 -0
- hiddenlayer/resources/scans/upload/__init__.py +33 -0
- hiddenlayer/resources/scans/upload/file.py +279 -0
- hiddenlayer/resources/scans/upload/upload.py +340 -0
- hiddenlayer/resources/sensors.py +575 -0
- hiddenlayer/types/__init__.py +16 -0
- hiddenlayer/types/interaction_analyze_params.py +62 -0
- hiddenlayer/types/interaction_analyze_response.py +199 -0
- hiddenlayer/types/model_retrieve_response.py +50 -0
- hiddenlayer/types/models/__init__.py +6 -0
- hiddenlayer/types/models/card_list_params.py +65 -0
- hiddenlayer/types/models/card_list_response.py +50 -0
- hiddenlayer/types/prompt_analyzer_create_params.py +23 -0
- hiddenlayer/types/prompt_analyzer_create_response.py +381 -0
- hiddenlayer/types/scans/__init__.py +14 -0
- hiddenlayer/types/scans/job_list_params.py +75 -0
- hiddenlayer/types/scans/job_list_response.py +22 -0
- hiddenlayer/types/scans/job_request_params.py +49 -0
- hiddenlayer/types/scans/job_retrieve_params.py +16 -0
- hiddenlayer/types/scans/result_sarif_response.py +7 -0
- hiddenlayer/types/scans/scan_job.py +46 -0
- hiddenlayer/types/scans/scan_report.py +367 -0
- hiddenlayer/types/scans/upload/__init__.py +6 -0
- hiddenlayer/types/scans/upload/file_add_response.py +24 -0
- hiddenlayer/types/scans/upload/file_complete_response.py +12 -0
- hiddenlayer/types/scans/upload_complete_all_response.py +12 -0
- hiddenlayer/types/scans/upload_start_params.py +34 -0
- hiddenlayer/types/scans/upload_start_response.py +12 -0
- hiddenlayer/types/sensor_create_params.py +24 -0
- hiddenlayer/types/sensor_create_response.py +33 -0
- hiddenlayer/types/sensor_query_params.py +39 -0
- hiddenlayer/types/sensor_query_response.py +43 -0
- hiddenlayer/types/sensor_retrieve_response.py +33 -0
- hiddenlayer/types/sensor_update_params.py +20 -0
- hiddenlayer/types/sensor_update_response.py +9 -0
- hiddenlayer_sdk-3.0.1.dist-info/METADATA +521 -0
- hiddenlayer_sdk-3.0.1.dist-info/RECORD +82 -0
- {hiddenlayer_sdk-2.0.10.dist-info → hiddenlayer_sdk-3.0.1.dist-info}/WHEEL +1 -2
- {hiddenlayer_sdk-2.0.10.dist-info → hiddenlayer_sdk-3.0.1.dist-info}/licenses/LICENSE +1 -1
- hiddenlayer/sdk/constants.py +0 -26
- hiddenlayer/sdk/exceptions.py +0 -12
- hiddenlayer/sdk/models.py +0 -58
- hiddenlayer/sdk/rest/__init__.py +0 -135
- hiddenlayer/sdk/rest/api/__init__.py +0 -10
- hiddenlayer/sdk/rest/api/aidr_predictive_api.py +0 -308
- hiddenlayer/sdk/rest/api/health_api.py +0 -272
- hiddenlayer/sdk/rest/api/model_api.py +0 -559
- hiddenlayer/sdk/rest/api/model_supply_chain_api.py +0 -4063
- hiddenlayer/sdk/rest/api/readiness_api.py +0 -272
- hiddenlayer/sdk/rest/api/sensor_api.py +0 -1432
- hiddenlayer/sdk/rest/api_client.py +0 -770
- hiddenlayer/sdk/rest/api_response.py +0 -21
- hiddenlayer/sdk/rest/configuration.py +0 -445
- hiddenlayer/sdk/rest/exceptions.py +0 -199
- hiddenlayer/sdk/rest/models/__init__.py +0 -113
- hiddenlayer/sdk/rest/models/address.py +0 -110
- hiddenlayer/sdk/rest/models/artifact.py +0 -155
- hiddenlayer/sdk/rest/models/artifact_change.py +0 -108
- hiddenlayer/sdk/rest/models/artifact_content.py +0 -101
- hiddenlayer/sdk/rest/models/artifact_location.py +0 -109
- hiddenlayer/sdk/rest/models/attachment.py +0 -129
- hiddenlayer/sdk/rest/models/begin_multi_file_upload200_response.py +0 -87
- hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response.py +0 -97
- hiddenlayer/sdk/rest/models/begin_multipart_file_upload200_response_parts_inner.py +0 -94
- hiddenlayer/sdk/rest/models/code_flow.py +0 -113
- hiddenlayer/sdk/rest/models/configuration_override.py +0 -108
- hiddenlayer/sdk/rest/models/conversion.py +0 -114
- hiddenlayer/sdk/rest/models/create_sensor_request.py +0 -95
- hiddenlayer/sdk/rest/models/edge.py +0 -108
- hiddenlayer/sdk/rest/models/edge_traversal.py +0 -122
- hiddenlayer/sdk/rest/models/errors_inner.py +0 -91
- hiddenlayer/sdk/rest/models/exception.py +0 -113
- hiddenlayer/sdk/rest/models/external_properties.py +0 -273
- hiddenlayer/sdk/rest/models/external_property_file_reference.py +0 -102
- hiddenlayer/sdk/rest/models/external_property_file_references.py +0 -240
- hiddenlayer/sdk/rest/models/file_details_v3.py +0 -139
- hiddenlayer/sdk/rest/models/file_result_v3.py +0 -117
- hiddenlayer/sdk/rest/models/file_scan_report_v3.py +0 -132
- hiddenlayer/sdk/rest/models/file_scan_reports_v3.py +0 -95
- hiddenlayer/sdk/rest/models/fix.py +0 -113
- hiddenlayer/sdk/rest/models/get_condensed_model_scan_reports200_response.py +0 -102
- hiddenlayer/sdk/rest/models/graph.py +0 -123
- hiddenlayer/sdk/rest/models/graph_traversal.py +0 -97
- hiddenlayer/sdk/rest/models/inventory_v3.py +0 -101
- hiddenlayer/sdk/rest/models/invocation.py +0 -199
- hiddenlayer/sdk/rest/models/location.py +0 -146
- hiddenlayer/sdk/rest/models/location_inner.py +0 -138
- hiddenlayer/sdk/rest/models/location_relationship.py +0 -107
- hiddenlayer/sdk/rest/models/logical_location.py +0 -104
- hiddenlayer/sdk/rest/models/message.py +0 -92
- hiddenlayer/sdk/rest/models/mitre_atlas_inner.py +0 -110
- hiddenlayer/sdk/rest/models/model.py +0 -103
- hiddenlayer/sdk/rest/models/model_inventory_info.py +0 -103
- hiddenlayer/sdk/rest/models/model_version.py +0 -97
- hiddenlayer/sdk/rest/models/multi_file_upload_request_v3.py +0 -97
- hiddenlayer/sdk/rest/models/multiformat_message_string.py +0 -95
- hiddenlayer/sdk/rest/models/node.py +0 -122
- hiddenlayer/sdk/rest/models/notification.py +0 -157
- hiddenlayer/sdk/rest/models/notify_model_scan_completed200_response.py +0 -87
- hiddenlayer/sdk/rest/models/paged_response_with_total.py +0 -94
- hiddenlayer/sdk/rest/models/pagination_v3.py +0 -95
- hiddenlayer/sdk/rest/models/physical_location.py +0 -94
- hiddenlayer/sdk/rest/models/problem_details.py +0 -103
- hiddenlayer/sdk/rest/models/property_bag.py +0 -101
- hiddenlayer/sdk/rest/models/rectangle.py +0 -110
- hiddenlayer/sdk/rest/models/region.py +0 -127
- hiddenlayer/sdk/rest/models/replacement.py +0 -103
- hiddenlayer/sdk/rest/models/reporting_configuration.py +0 -113
- hiddenlayer/sdk/rest/models/reporting_descriptor.py +0 -162
- hiddenlayer/sdk/rest/models/reporting_descriptor_reference.py +0 -103
- hiddenlayer/sdk/rest/models/reporting_descriptor_relationship.py +0 -115
- hiddenlayer/sdk/rest/models/result.py +0 -312
- hiddenlayer/sdk/rest/models/result_provenance.py +0 -133
- hiddenlayer/sdk/rest/models/rule_details_inner.py +0 -102
- hiddenlayer/sdk/rest/models/run.py +0 -318
- hiddenlayer/sdk/rest/models/run_automation_details.py +0 -129
- hiddenlayer/sdk/rest/models/sarif210.py +0 -123
- hiddenlayer/sdk/rest/models/scan_create_request.py +0 -87
- hiddenlayer/sdk/rest/models/scan_detection_v3.py +0 -159
- hiddenlayer/sdk/rest/models/scan_detection_v31.py +0 -158
- hiddenlayer/sdk/rest/models/scan_header_v3.py +0 -129
- hiddenlayer/sdk/rest/models/scan_job.py +0 -115
- hiddenlayer/sdk/rest/models/scan_job_access.py +0 -97
- hiddenlayer/sdk/rest/models/scan_model_details_v3.py +0 -99
- hiddenlayer/sdk/rest/models/scan_model_details_v31.py +0 -97
- hiddenlayer/sdk/rest/models/scan_model_ids_v3.py +0 -89
- hiddenlayer/sdk/rest/models/scan_report_v3.py +0 -139
- hiddenlayer/sdk/rest/models/scan_results_map_v3.py +0 -105
- hiddenlayer/sdk/rest/models/scan_results_v3.py +0 -120
- hiddenlayer/sdk/rest/models/security_posture.py +0 -89
- hiddenlayer/sdk/rest/models/sensor.py +0 -100
- hiddenlayer/sdk/rest/models/sensor_query_response.py +0 -101
- hiddenlayer/sdk/rest/models/sensor_sor_model_card_query_response.py +0 -101
- hiddenlayer/sdk/rest/models/sensor_sor_model_card_response.py +0 -127
- hiddenlayer/sdk/rest/models/sensor_sor_query_filter.py +0 -108
- hiddenlayer/sdk/rest/models/sensor_sor_query_request.py +0 -109
- hiddenlayer/sdk/rest/models/special_locations.py +0 -97
- hiddenlayer/sdk/rest/models/stack.py +0 -113
- hiddenlayer/sdk/rest/models/stack_frame.py +0 -104
- hiddenlayer/sdk/rest/models/submission_response.py +0 -95
- hiddenlayer/sdk/rest/models/submission_v2.py +0 -109
- hiddenlayer/sdk/rest/models/suppression.py +0 -133
- hiddenlayer/sdk/rest/models/thread_flow.py +0 -144
- hiddenlayer/sdk/rest/models/thread_flow_location.py +0 -166
- hiddenlayer/sdk/rest/models/tool.py +0 -107
- hiddenlayer/sdk/rest/models/tool_component.py +0 -251
- hiddenlayer/sdk/rest/models/tool_component_reference.py +0 -108
- hiddenlayer/sdk/rest/models/translation_metadata.py +0 -110
- hiddenlayer/sdk/rest/models/validation_error_model.py +0 -99
- hiddenlayer/sdk/rest/models/version_control_details.py +0 -108
- hiddenlayer/sdk/rest/models/web_request.py +0 -112
- hiddenlayer/sdk/rest/models/web_response.py +0 -112
- hiddenlayer/sdk/rest/rest.py +0 -257
- hiddenlayer/sdk/services/__init__.py +0 -0
- hiddenlayer/sdk/services/aidr_predictive.py +0 -130
- hiddenlayer/sdk/services/model_scan.py +0 -505
- hiddenlayer/sdk/utils.py +0 -92
- hiddenlayer/sdk/version.py +0 -1
- hiddenlayer_sdk-2.0.10.dist-info/METADATA +0 -368
- hiddenlayer_sdk-2.0.10.dist-info/RECORD +0 -126
- hiddenlayer_sdk-2.0.10.dist-info/top_level.txt +0 -1
- /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
|
+
)
|