@@ -76,6 +76,12 @@ class SIPGrants:
76
76
call : bool = False
77
77
78
78
79
+ @dataclasses .dataclass
80
+ class InferenceGrants :
81
+ # perform inference
82
+ perform : bool = False
83
+
84
+
79
85
@dataclasses .dataclass
80
86
class Claims :
81
87
identity : str = ""
@@ -84,6 +90,7 @@ class Claims:
84
90
metadata : str = ""
85
91
video : Optional [VideoGrants ] = None
86
92
sip : Optional [SIPGrants ] = None
93
+ inference : Optional [InferenceGrants ] = None
87
94
attributes : Optional [dict [str , str ]] = None
88
95
sha256 : Optional [str ] = None
89
96
room_preset : Optional [str ] = None
@@ -136,6 +143,10 @@ def with_sip_grants(self, grants: SIPGrants) -> "AccessToken":
136
143
self .claims .sip = grants
137
144
return self
138
145
146
+ def with_inference_grants (self , grants : InferenceGrants ) -> "AccessToken" :
147
+ self .claims .inference = grants
148
+ return self
149
+
139
150
def with_identity (self , identity : str ) -> "AccessToken" :
140
151
self .identity = identity
141
152
return self
@@ -225,11 +236,19 @@ def verify(self, token: str, *, verify_signature: bool = True) -> Claims:
225
236
sip_dict = {k : v for k , v in sip_dict .items () if k in SIPGrants .__dataclass_fields__ }
226
237
sip = SIPGrants (** sip_dict )
227
238
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
+
228
246
grant_claims = Claims (
229
247
identity = claims .get ("sub" , "" ),
230
248
name = claims .get ("name" , "" ),
231
249
video = video ,
232
250
sip = sip ,
251
+ inference = inference ,
233
252
attributes = claims .get ("attributes" , {}),
234
253
metadata = claims .get ("metadata" , "" ),
235
254
sha256 = claims .get ("sha256" , "" ),
0 commit comments