88
99import httpx
1010
11+ from .evals import (
12+ EvalsResource ,
13+ AsyncEvalsResource ,
14+ EvalsResourceWithRawResponse ,
15+ AsyncEvalsResourceWithRawResponse ,
16+ EvalsResourceWithStreamingResponse ,
17+ AsyncEvalsResourceWithStreamingResponse ,
18+ )
1119from ...types import (
1220 project_list_params ,
1321 project_create_params ,
1422 project_update_params ,
1523 project_validate_params ,
24+ project_invite_sme_params ,
1625 project_increment_queries_params ,
1726 project_retrieve_analytics_params ,
1827)
3544 AsyncClustersResourceWithStreamingResponse ,
3645)
3746from ..._compat import cached_property
47+ from .query_logs import (
48+ QueryLogsResource ,
49+ AsyncQueryLogsResource ,
50+ QueryLogsResourceWithRawResponse ,
51+ AsyncQueryLogsResourceWithRawResponse ,
52+ QueryLogsResourceWithStreamingResponse ,
53+ AsyncQueryLogsResourceWithStreamingResponse ,
54+ )
3855from ..._resource import SyncAPIResource , AsyncAPIResource
3956from ..._response import (
4057 to_raw_response_wrapper ,
5067 AccessKeysResourceWithStreamingResponse ,
5168 AsyncAccessKeysResourceWithStreamingResponse ,
5269)
70+ from .remediations import (
71+ RemediationsResource ,
72+ AsyncRemediationsResource ,
73+ RemediationsResourceWithRawResponse ,
74+ AsyncRemediationsResourceWithRawResponse ,
75+ RemediationsResourceWithStreamingResponse ,
76+ AsyncRemediationsResourceWithStreamingResponse ,
77+ )
5378from ..._base_client import make_request_options
5479from ...types .project_list_response import ProjectListResponse
5580from ...types .project_return_schema import ProjectReturnSchema
5681from ...types .project_retrieve_response import ProjectRetrieveResponse
5782from ...types .project_validate_response import ProjectValidateResponse
83+ from ...types .project_invite_sme_response import ProjectInviteSmeResponse
5884from ...types .project_retrieve_analytics_response import ProjectRetrieveAnalyticsResponse
5985
6086__all__ = ["ProjectsResource" , "AsyncProjectsResource" ]
@@ -73,6 +99,18 @@ def entries(self) -> EntriesResource:
7399 def clusters (self ) -> ClustersResource :
74100 return ClustersResource (self ._client )
75101
102+ @cached_property
103+ def evals (self ) -> EvalsResource :
104+ return EvalsResource (self ._client )
105+
106+ @cached_property
107+ def query_logs (self ) -> QueryLogsResource :
108+ return QueryLogsResource (self ._client )
109+
110+ @cached_property
111+ def remediations (self ) -> RemediationsResource :
112+ return RemediationsResource (self ._client )
113+
76114 @cached_property
77115 def with_raw_response (self ) -> ProjectsResourceWithRawResponse :
78116 """
@@ -374,6 +412,52 @@ def increment_queries(
374412 cast_to = object ,
375413 )
376414
415+ def invite_sme (
416+ self ,
417+ project_id : str ,
418+ * ,
419+ email : str ,
420+ page_type : Literal ["query_log" , "remediation" ],
421+ url_query_string : str ,
422+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
423+ # The extra values given here take precedence over values defined on the client or passed to this method.
424+ extra_headers : Headers | None = None ,
425+ extra_query : Query | None = None ,
426+ extra_body : Body | None = None ,
427+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
428+ ) -> ProjectInviteSmeResponse :
429+ """
430+ Invite a subject matter expert to view a specific query log or remediation.
431+
432+ Returns: SMERemediationNotificationResponse with status and notification details
433+
434+ Args:
435+ extra_headers: Send extra headers
436+
437+ extra_query: Add additional query parameters to the request
438+
439+ extra_body: Add additional JSON properties to the request
440+
441+ timeout: Override the client-level default timeout for this request, in seconds
442+ """
443+ if not project_id :
444+ raise ValueError (f"Expected a non-empty value for `project_id` but received { project_id !r} " )
445+ return self ._post (
446+ f"/api/projects/{ project_id } /notifications" ,
447+ body = maybe_transform (
448+ {
449+ "email" : email ,
450+ "page_type" : page_type ,
451+ "url_query_string" : url_query_string ,
452+ },
453+ project_invite_sme_params .ProjectInviteSmeParams ,
454+ ),
455+ options = make_request_options (
456+ extra_headers = extra_headers , extra_query = extra_query , extra_body = extra_body , timeout = timeout
457+ ),
458+ cast_to = ProjectInviteSmeResponse ,
459+ )
460+
377461 def retrieve_analytics (
378462 self ,
379463 project_id : str ,
@@ -623,6 +707,18 @@ def entries(self) -> AsyncEntriesResource:
623707 def clusters (self ) -> AsyncClustersResource :
624708 return AsyncClustersResource (self ._client )
625709
710+ @cached_property
711+ def evals (self ) -> AsyncEvalsResource :
712+ return AsyncEvalsResource (self ._client )
713+
714+ @cached_property
715+ def query_logs (self ) -> AsyncQueryLogsResource :
716+ return AsyncQueryLogsResource (self ._client )
717+
718+ @cached_property
719+ def remediations (self ) -> AsyncRemediationsResource :
720+ return AsyncRemediationsResource (self ._client )
721+
626722 @cached_property
627723 def with_raw_response (self ) -> AsyncProjectsResourceWithRawResponse :
628724 """
@@ -926,6 +1022,52 @@ async def increment_queries(
9261022 cast_to = object ,
9271023 )
9281024
1025+ async def invite_sme (
1026+ self ,
1027+ project_id : str ,
1028+ * ,
1029+ email : str ,
1030+ page_type : Literal ["query_log" , "remediation" ],
1031+ url_query_string : str ,
1032+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
1033+ # The extra values given here take precedence over values defined on the client or passed to this method.
1034+ extra_headers : Headers | None = None ,
1035+ extra_query : Query | None = None ,
1036+ extra_body : Body | None = None ,
1037+ timeout : float | httpx .Timeout | None | NotGiven = NOT_GIVEN ,
1038+ ) -> ProjectInviteSmeResponse :
1039+ """
1040+ Invite a subject matter expert to view a specific query log or remediation.
1041+
1042+ Returns: SMERemediationNotificationResponse with status and notification details
1043+
1044+ Args:
1045+ extra_headers: Send extra headers
1046+
1047+ extra_query: Add additional query parameters to the request
1048+
1049+ extra_body: Add additional JSON properties to the request
1050+
1051+ timeout: Override the client-level default timeout for this request, in seconds
1052+ """
1053+ if not project_id :
1054+ raise ValueError (f"Expected a non-empty value for `project_id` but received { project_id !r} " )
1055+ return await self ._post (
1056+ f"/api/projects/{ project_id } /notifications" ,
1057+ body = await async_maybe_transform (
1058+ {
1059+ "email" : email ,
1060+ "page_type" : page_type ,
1061+ "url_query_string" : url_query_string ,
1062+ },
1063+ project_invite_sme_params .ProjectInviteSmeParams ,
1064+ ),
1065+ options = make_request_options (
1066+ extra_headers = extra_headers , extra_query = extra_query , extra_body = extra_body , timeout = timeout
1067+ ),
1068+ cast_to = ProjectInviteSmeResponse ,
1069+ )
1070+
9291071 async def retrieve_analytics (
9301072 self ,
9311073 project_id : str ,
@@ -1189,6 +1331,9 @@ def __init__(self, projects: ProjectsResource) -> None:
11891331 projects .increment_queries # pyright: ignore[reportDeprecated],
11901332 )
11911333 )
1334+ self .invite_sme = to_raw_response_wrapper (
1335+ projects .invite_sme ,
1336+ )
11921337 self .retrieve_analytics = to_raw_response_wrapper (
11931338 projects .retrieve_analytics ,
11941339 )
@@ -1208,6 +1353,18 @@ def entries(self) -> EntriesResourceWithRawResponse:
12081353 def clusters (self ) -> ClustersResourceWithRawResponse :
12091354 return ClustersResourceWithRawResponse (self ._projects .clusters )
12101355
1356+ @cached_property
1357+ def evals (self ) -> EvalsResourceWithRawResponse :
1358+ return EvalsResourceWithRawResponse (self ._projects .evals )
1359+
1360+ @cached_property
1361+ def query_logs (self ) -> QueryLogsResourceWithRawResponse :
1362+ return QueryLogsResourceWithRawResponse (self ._projects .query_logs )
1363+
1364+ @cached_property
1365+ def remediations (self ) -> RemediationsResourceWithRawResponse :
1366+ return RemediationsResourceWithRawResponse (self ._projects .remediations )
1367+
12111368
12121369class AsyncProjectsResourceWithRawResponse :
12131370 def __init__ (self , projects : AsyncProjectsResource ) -> None :
@@ -1236,6 +1393,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
12361393 projects .increment_queries # pyright: ignore[reportDeprecated],
12371394 )
12381395 )
1396+ self .invite_sme = async_to_raw_response_wrapper (
1397+ projects .invite_sme ,
1398+ )
12391399 self .retrieve_analytics = async_to_raw_response_wrapper (
12401400 projects .retrieve_analytics ,
12411401 )
@@ -1255,6 +1415,18 @@ def entries(self) -> AsyncEntriesResourceWithRawResponse:
12551415 def clusters (self ) -> AsyncClustersResourceWithRawResponse :
12561416 return AsyncClustersResourceWithRawResponse (self ._projects .clusters )
12571417
1418+ @cached_property
1419+ def evals (self ) -> AsyncEvalsResourceWithRawResponse :
1420+ return AsyncEvalsResourceWithRawResponse (self ._projects .evals )
1421+
1422+ @cached_property
1423+ def query_logs (self ) -> AsyncQueryLogsResourceWithRawResponse :
1424+ return AsyncQueryLogsResourceWithRawResponse (self ._projects .query_logs )
1425+
1426+ @cached_property
1427+ def remediations (self ) -> AsyncRemediationsResourceWithRawResponse :
1428+ return AsyncRemediationsResourceWithRawResponse (self ._projects .remediations )
1429+
12581430
12591431class ProjectsResourceWithStreamingResponse :
12601432 def __init__ (self , projects : ProjectsResource ) -> None :
@@ -1283,6 +1455,9 @@ def __init__(self, projects: ProjectsResource) -> None:
12831455 projects .increment_queries # pyright: ignore[reportDeprecated],
12841456 )
12851457 )
1458+ self .invite_sme = to_streamed_response_wrapper (
1459+ projects .invite_sme ,
1460+ )
12861461 self .retrieve_analytics = to_streamed_response_wrapper (
12871462 projects .retrieve_analytics ,
12881463 )
@@ -1302,6 +1477,18 @@ def entries(self) -> EntriesResourceWithStreamingResponse:
13021477 def clusters (self ) -> ClustersResourceWithStreamingResponse :
13031478 return ClustersResourceWithStreamingResponse (self ._projects .clusters )
13041479
1480+ @cached_property
1481+ def evals (self ) -> EvalsResourceWithStreamingResponse :
1482+ return EvalsResourceWithStreamingResponse (self ._projects .evals )
1483+
1484+ @cached_property
1485+ def query_logs (self ) -> QueryLogsResourceWithStreamingResponse :
1486+ return QueryLogsResourceWithStreamingResponse (self ._projects .query_logs )
1487+
1488+ @cached_property
1489+ def remediations (self ) -> RemediationsResourceWithStreamingResponse :
1490+ return RemediationsResourceWithStreamingResponse (self ._projects .remediations )
1491+
13051492
13061493class AsyncProjectsResourceWithStreamingResponse :
13071494 def __init__ (self , projects : AsyncProjectsResource ) -> None :
@@ -1330,6 +1517,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
13301517 projects .increment_queries # pyright: ignore[reportDeprecated],
13311518 )
13321519 )
1520+ self .invite_sme = async_to_streamed_response_wrapper (
1521+ projects .invite_sme ,
1522+ )
13331523 self .retrieve_analytics = async_to_streamed_response_wrapper (
13341524 projects .retrieve_analytics ,
13351525 )
@@ -1348,3 +1538,15 @@ def entries(self) -> AsyncEntriesResourceWithStreamingResponse:
13481538 @cached_property
13491539 def clusters (self ) -> AsyncClustersResourceWithStreamingResponse :
13501540 return AsyncClustersResourceWithStreamingResponse (self ._projects .clusters )
1541+
1542+ @cached_property
1543+ def evals (self ) -> AsyncEvalsResourceWithStreamingResponse :
1544+ return AsyncEvalsResourceWithStreamingResponse (self ._projects .evals )
1545+
1546+ @cached_property
1547+ def query_logs (self ) -> AsyncQueryLogsResourceWithStreamingResponse :
1548+ return AsyncQueryLogsResourceWithStreamingResponse (self ._projects .query_logs )
1549+
1550+ @cached_property
1551+ def remediations (self ) -> AsyncRemediationsResourceWithStreamingResponse :
1552+ return AsyncRemediationsResourceWithStreamingResponse (self ._projects .remediations )
0 commit comments