3838)
3939from entitysdk .utils .asset import filter_assets
4040
41+ TEntity = TypeVar ("TEntity" , bound = Entity )
4142TIdentifiable = TypeVar ("TIdentifiable" , bound = Identifiable )
4243
4344
@@ -112,13 +113,15 @@ def get_entity(
112113 * ,
113114 entity_type : type [TIdentifiable ],
114115 project_context : ProjectContext | None = None ,
116+ admin : bool = False ,
115117 ) -> TIdentifiable :
116118 """Get entity from resource id.
117119
118120 Args:
119121 entity_id: Resource id of the entity.
120122 entity_type: Type of the entity.
121123 project_context: Optional project context.
124+ admin: Whether to use the admin endpoint or not.
122125
123126 Returns:
124127 entity_type instantiated by deserializing the response.
@@ -127,8 +130,11 @@ def get_entity(
127130 api_url = self .api_url ,
128131 entity_type = entity_type ,
129132 entity_id = entity_id ,
133+ admin = admin ,
134+ )
135+ context = (
136+ self ._optional_user_context (override_context = project_context ) if not admin else None
130137 )
131- context = self ._optional_user_context (override_context = project_context )
132138 return core .get_entity (
133139 url = url ,
134140 entity_type = entity_type ,
@@ -208,13 +214,36 @@ def register_entity(
208214 token = self ._token_manager .get_token (),
209215 )
210216
217+ def get_entity_assets (
218+ self ,
219+ entity_id : ID ,
220+ * ,
221+ entity_type : type [TEntity ],
222+ project_context : ProjectContext | None = None ,
223+ admin : bool = False ,
224+ ) -> IteratorResult [Asset ]:
225+ """Get all assets of an entity."""
226+ context = (
227+ self ._optional_user_context (override_context = project_context ) if not admin else None
228+ )
229+ return core .get_entity_assets (
230+ api_url = self .api_url ,
231+ entity_id = entity_id ,
232+ entity_type = entity_type ,
233+ project_context = context ,
234+ http_client = self ._http_client ,
235+ token = self ._token_manager .get_token (),
236+ admin = admin ,
237+ )
238+
211239 def update_entity (
212240 self ,
213241 entity_id : ID ,
214242 entity_type : type [TIdentifiable ],
215243 attrs_or_entity : dict | Identifiable ,
216244 * ,
217245 project_context : ProjectContext | None = None ,
246+ admin : bool = False ,
218247 ) -> TIdentifiable :
219248 """Update an entity.
220249
@@ -223,13 +252,17 @@ def update_entity(
223252 entity_type: Type of the entity.
224253 attrs_or_entity: Attributes or entity to update.
225254 project_context: Optional project context.
255+ admin: whether to use the admin endpoint or not.
226256 """
227257 url = route .get_entities_endpoint (
228258 api_url = self .api_url ,
229259 entity_type = entity_type ,
230260 entity_id = entity_id ,
261+ admin = admin ,
262+ )
263+ context = (
264+ self ._optional_user_context (override_context = project_context ) if not admin else None
231265 )
232- context = self ._required_user_context (override_context = project_context )
233266 return core .update_entity (
234267 url = url ,
235268 project_context = context ,
@@ -239,6 +272,27 @@ def update_entity(
239272 token = self ._token_manager .get_token (),
240273 )
241274
275+ def delete_entity (
276+ self ,
277+ entity_id : ID ,
278+ entity_type : type [Identifiable ],
279+ * ,
280+ admin : bool = False ,
281+ ) -> None :
282+ """Delete an entity."""
283+ url = route .get_entities_endpoint (
284+ api_url = self .api_url ,
285+ entity_type = entity_type ,
286+ entity_id = entity_id ,
287+ admin = admin ,
288+ )
289+ core .delete_entity (
290+ url = url ,
291+ entity_type = entity_type ,
292+ http_client = self ._http_client ,
293+ token = self ._token_manager .get_token (),
294+ )
295+
242296 def upload_file (
243297 self ,
244298 * ,
@@ -617,15 +671,19 @@ def delete_asset(
617671 entity_type : type [Identifiable ],
618672 asset_id : ID ,
619673 project_context : ProjectContext | None = None ,
674+ admin : bool = False ,
620675 ) -> Asset :
621676 """Delete an entity's asset."""
622677 url = route .get_assets_endpoint (
623678 api_url = self .api_url ,
624679 entity_type = entity_type ,
625680 entity_id = entity_id ,
626681 asset_id = asset_id ,
682+ admin = admin ,
683+ )
684+ context = (
685+ self ._required_user_context (override_context = project_context ) if not admin else None
627686 )
628- context = self ._required_user_context (override_context = project_context )
629687 return core .delete_asset (
630688 url = url ,
631689 project_context = context ,
0 commit comments