1+ from typing import Any , Dict , List , Optional , Union
2+ from metorial_util_endpoint import BaseMetorialEndpoint , MetorialEndpointManager , MetorialRequest
3+ from ..resources import mapDashboardInstancePortalsSurfaceProviderGroupsListOutput , DashboardInstancePortalsSurfaceProviderGroupsListOutput , mapDashboardInstancePortalsSurfaceProviderGroupsListQuery , DashboardInstancePortalsSurfaceProviderGroupsListQuery , mapDashboardInstancePortalsSurfaceProviderGroupsGetOutput , DashboardInstancePortalsSurfaceProviderGroupsGetOutput , mapDashboardInstancePortalsSurfaceProviderGroupsCreateOutput , DashboardInstancePortalsSurfaceProviderGroupsCreateOutput , mapDashboardInstancePortalsSurfaceProviderGroupsCreateBody , DashboardInstancePortalsSurfaceProviderGroupsCreateBody , mapDashboardInstancePortalsSurfaceProviderGroupsUpdateOutput , DashboardInstancePortalsSurfaceProviderGroupsUpdateOutput , mapDashboardInstancePortalsSurfaceProviderGroupsUpdateBody , DashboardInstancePortalsSurfaceProviderGroupsUpdateBody , mapDashboardInstancePortalsSurfaceProviderGroupsDeleteOutput , DashboardInstancePortalsSurfaceProviderGroupsDeleteOutput , mapDashboardInstancePortalsSurfaceProviderGroupsAddListingOutput , DashboardInstancePortalsSurfaceProviderGroupsAddListingOutput , mapDashboardInstancePortalsSurfaceProviderGroupsAddListingBody , DashboardInstancePortalsSurfaceProviderGroupsAddListingBody , mapDashboardInstancePortalsSurfaceProviderGroupsRemoveListingOutput , DashboardInstancePortalsSurfaceProviderGroupsRemoveListingOutput
4+
5+ class MetorialDashboardInstancePortalsSurfaceProviderGroupsEndpoint (BaseMetorialEndpoint ):
6+ """Manage the provider groups linked to a portal consumer surface for organizing providers."""
7+
8+ def __init__ (self , config : MetorialEndpointManager ):
9+ super ().__init__ (config )
10+
11+ def list (self , instance_id : str , portal_id : str , * , limit : Optional [float ] = None , after : Optional [str ] = None , before : Optional [str ] = None , cursor : Optional [str ] = None , order : Optional [str ] = None ) -> DashboardInstancePortalsSurfaceProviderGroupsListOutput :
12+ """
13+ List portal surface provider groups
14+ Returns a paginated list of provider groups linked to the portal consumer surface.
15+
16+ :param instance_id: str
17+ :param portal_id: str
18+ :param limit: Optional[float] (optional)
19+ :param after: Optional[str] (optional)
20+ :param before: Optional[str] (optional)
21+ :param cursor: Optional[str] (optional)
22+ :param order: Optional[str] (optional)
23+ :return: DashboardInstancePortalsSurfaceProviderGroupsListOutput
24+ """
25+ # Build query parameters from keyword arguments
26+ query_dict = {}
27+ if limit is not None :
28+ query_dict ["limit" ] = limit
29+ if after is not None :
30+ query_dict ["after" ] = after
31+ if before is not None :
32+ query_dict ["before" ] = before
33+ if cursor is not None :
34+ query_dict ["cursor" ] = cursor
35+ if order is not None :
36+ query_dict ["order" ] = order
37+
38+ request = MetorialRequest (
39+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' ],
40+ query = query_dict
41+ )
42+ return self ._get (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsListOutput .from_dict )
43+
44+ def get (self , instance_id : str , portal_id : str , consumer_surface_provider_group_id : str ) -> DashboardInstancePortalsSurfaceProviderGroupsGetOutput :
45+ """
46+ Get portal surface provider group
47+ Retrieves a portal surface provider group by ID.
48+
49+ :param instance_id: str
50+ :param portal_id: str
51+ :param consumer_surface_provider_group_id: str
52+ :return: DashboardInstancePortalsSurfaceProviderGroupsGetOutput
53+ """
54+ request = MetorialRequest (
55+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' , consumer_surface_provider_group_id ]
56+ )
57+ return self ._get (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsGetOutput .from_dict )
58+
59+ def create (self , instance_id : str , portal_id : str , * , name : str , description : Optional [str ] = None ) -> DashboardInstancePortalsSurfaceProviderGroupsCreateOutput :
60+ """
61+ Create portal surface provider group
62+ Creates a new provider group linked to the portal consumer surface.
63+
64+ :param instance_id: str
65+ :param portal_id: str
66+ :param name: str
67+ :param description: Optional[str] (optional)
68+ :return: DashboardInstancePortalsSurfaceProviderGroupsCreateOutput
69+ """
70+ # Build body parameters from keyword arguments
71+ body_dict = {}
72+ body_dict ["name" ] = name
73+ if description is not None :
74+ body_dict ["description" ] = description
75+
76+ request = MetorialRequest (
77+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' ],
78+ body = body_dict
79+ )
80+ return self ._post (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsCreateOutput .from_dict )
81+
82+ def update (self , instance_id : str , portal_id : str , consumer_surface_provider_group_id : str , * , name : Optional [str ] = None , description : Optional [str ] = None , index : Optional [float ] = None ) -> DashboardInstancePortalsSurfaceProviderGroupsUpdateOutput :
83+ """
84+ Update portal surface provider group
85+ Updates a provider group linked to the portal consumer surface.
86+
87+ :param instance_id: str
88+ :param portal_id: str
89+ :param consumer_surface_provider_group_id: str
90+ :param name: Optional[str] (optional)
91+ :param description: Optional[str] (optional)
92+ :param index: Optional[float] (optional)
93+ :return: DashboardInstancePortalsSurfaceProviderGroupsUpdateOutput
94+ """
95+ # Build body parameters from keyword arguments
96+ body_dict = {}
97+ if name is not None :
98+ body_dict ["name" ] = name
99+ if description is not None :
100+ body_dict ["description" ] = description
101+ if index is not None :
102+ body_dict ["index" ] = index
103+
104+ request = MetorialRequest (
105+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' , consumer_surface_provider_group_id ],
106+ body = body_dict
107+ )
108+ return self ._patch (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsUpdateOutput .from_dict )
109+
110+ def delete (self , instance_id : str , portal_id : str , consumer_surface_provider_group_id : str ) -> DashboardInstancePortalsSurfaceProviderGroupsDeleteOutput :
111+ """
112+ Delete portal surface provider group
113+ Deletes a provider group linked to the portal consumer surface.
114+
115+ :param instance_id: str
116+ :param portal_id: str
117+ :param consumer_surface_provider_group_id: str
118+ :return: DashboardInstancePortalsSurfaceProviderGroupsDeleteOutput
119+ """
120+ request = MetorialRequest (
121+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' , consumer_surface_provider_group_id ]
122+ )
123+ return self ._delete (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsDeleteOutput .from_dict )
124+
125+ def add_listing (self , instance_id : str , portal_id : str , consumer_surface_provider_group_id : str , * , consumer_access_listing_id : str ) -> DashboardInstancePortalsSurfaceProviderGroupsAddListingOutput :
126+ """
127+ Add listing to surface provider group
128+ Adds a consumer access listing to the surface provider group.
129+
130+ :param instance_id: str
131+ :param portal_id: str
132+ :param consumer_surface_provider_group_id: str
133+ :param consumer_access_listing_id: str
134+ :return: DashboardInstancePortalsSurfaceProviderGroupsAddListingOutput
135+ """
136+ # Build body parameters from keyword arguments
137+ body_dict = {}
138+ body_dict ["consumer_access_listing_id" ] = consumer_access_listing_id
139+
140+ request = MetorialRequest (
141+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' , consumer_surface_provider_group_id , 'listings' ],
142+ body = body_dict
143+ )
144+ return self ._post (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsAddListingOutput .from_dict )
145+
146+ def remove_listing (self , instance_id : str , portal_id : str , consumer_surface_provider_group_id : str , consumer_access_listing_id : str ) -> DashboardInstancePortalsSurfaceProviderGroupsRemoveListingOutput :
147+ """
148+ Remove listing from surface provider group
149+ Removes a consumer access listing from the surface provider group.
150+
151+ :param instance_id: str
152+ :param portal_id: str
153+ :param consumer_surface_provider_group_id: str
154+ :param consumer_access_listing_id: str
155+ :return: DashboardInstancePortalsSurfaceProviderGroupsRemoveListingOutput
156+ """
157+ request = MetorialRequest (
158+ path = ['dashboard' , 'instances' , instance_id , 'portals' , portal_id , 'surface-provider-groups' , consumer_surface_provider_group_id , 'listings' , consumer_access_listing_id ]
159+ )
160+ return self ._delete (request ).transform (mapDashboardInstancePortalsSurfaceProviderGroupsRemoveListingOutput .from_dict )
0 commit comments