@@ -75,6 +75,10 @@ class SIPGrants:
7575 # make outbound calls
7676 call : bool = False
7777
78+ @dataclasses .dataclass
79+ class InferenceGrants :
80+ # perform inference
81+ perform : bool = False
7882
7983@dataclasses .dataclass
8084class Claims :
@@ -84,6 +88,7 @@ class Claims:
8488 metadata : str = ""
8589 video : Optional [VideoGrants ] = None
8690 sip : Optional [SIPGrants ] = None
91+ inference : Optional [InferenceGrants ] = None
8792 attributes : Optional [dict [str , str ]] = None
8893 sha256 : Optional [str ] = None
8994 room_preset : Optional [str ] = None
@@ -135,6 +140,10 @@ def with_grants(self, grants: VideoGrants) -> "AccessToken":
135140 def with_sip_grants (self , grants : SIPGrants ) -> "AccessToken" :
136141 self .claims .sip = grants
137142 return self
143+
144+ def with_inference_grants (self , grants : InferenceGrants ) -> "AccessToken" :
145+ self .claims .inference = grants
146+ return self
138147
139148 def with_identity (self , identity : str ) -> "AccessToken" :
140149 self .identity = identity
@@ -225,11 +234,17 @@ def verify(self, token: str, *, verify_signature: bool = True) -> Claims:
225234 sip_dict = {k : v for k , v in sip_dict .items () if k in SIPGrants .__dataclass_fields__ }
226235 sip = SIPGrants (** sip_dict )
227236
237+ inference_dict = claims .get ("inference" , dict ())
238+ inference_dict = {camel_to_snake (k ): v for k , v in inference_dict .items ()}
239+ inference_dict = {k : v for k , v in inference_dict .items () if k in InferenceGrants .__dataclass_fields__ }
240+ inference = InferenceGrants (** inference_dict )
241+
228242 grant_claims = Claims (
229243 identity = claims .get ("sub" , "" ),
230244 name = claims .get ("name" , "" ),
231245 video = video ,
232246 sip = sip ,
247+ inference = inference ,
233248 attributes = claims .get ("attributes" , {}),
234249 metadata = claims .get ("metadata" , "" ),
235250 sha256 = claims .get ("sha256" , "" ),
0 commit comments