@@ -76,6 +76,12 @@ class SIPGrants:
7676 call : bool = False
7777
7878
79+ @dataclasses .dataclass
80+ class InferenceGrants :
81+ # perform inference
82+ perform : bool = False
83+
84+
7985@dataclasses .dataclass
8086class Claims :
8187 identity : str = ""
@@ -84,6 +90,7 @@ class Claims:
8490 metadata : str = ""
8591 video : Optional [VideoGrants ] = None
8692 sip : Optional [SIPGrants ] = None
93+ inference : Optional [InferenceGrants ] = None
8794 attributes : Optional [dict [str , str ]] = None
8895 sha256 : Optional [str ] = None
8996 room_preset : Optional [str ] = None
@@ -136,6 +143,10 @@ def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
136143 self .claims .sip = grants
137144 return self
138145
146+ def with_inference_grants (self , grants : InferenceGrants ) -> "AccessToken" :
147+ self .claims .inference = grants
148+ return self
149+
139150 def with_identity (self , identity : str ) -> "AccessToken" :
140151 self .identity = identity
141152 return self
@@ -225,11 +236,19 @@ def verify(self, token: str, *, verify_signature: bool = True) -> Claims:
225236 sip_dict = {k : v for k , v in sip_dict .items () if k in SIPGrants .__dataclass_fields__ }
226237 sip = SIPGrants (** sip_dict )
227238
239+ inference_dict = claims .get ("inference" , dict ())
240+ inference_dict = {camel_to_snake (k ): v for k , v in inference_dict .items ()}
241+ inference_dict = {
242+ k : v for k , v in inference_dict .items () if k in InferenceGrants .__dataclass_fields__
243+ }
244+ inference = InferenceGrants (** inference_dict )
245+
228246 grant_claims = Claims (
229247 identity = claims .get ("sub" , "" ),
230248 name = claims .get ("name" , "" ),
231249 video = video ,
232250 sip = sip ,
251+ inference = inference ,
233252 attributes = claims .get ("attributes" , {}),
234253 metadata = claims .get ("metadata" , "" ),
235254 sha256 = claims .get ("sha256" , "" ),
0 commit comments