@@ -54,6 +54,15 @@ impl ListDatastoreItemsOptionalParams {
5454 }
5555}
5656
57+ /// BulkDeleteDatastoreItemsError is a struct for typed errors of method [`ActionsDatastoresAPI::bulk_delete_datastore_items`]
58+ #[ derive( Debug , Clone , Serialize , Deserialize ) ]
59+ #[ serde( untagged) ]
60+ pub enum BulkDeleteDatastoreItemsError {
61+ JSONAPIErrorResponse ( crate :: datadogV2:: model:: JSONAPIErrorResponse ) ,
62+ APIErrorResponse ( crate :: datadogV2:: model:: APIErrorResponse ) ,
63+ UnknownValue ( serde_json:: Value ) ,
64+ }
65+
5766/// BulkWriteDatastoreItemsError is a struct for typed errors of method [`ActionsDatastoresAPI::bulk_write_datastore_items`]
5867#[ derive( Debug , Clone , Serialize , Deserialize ) ]
5968#[ serde( untagged) ]
@@ -200,6 +209,167 @@ impl ActionsDatastoresAPI {
200209 Self { config, client }
201210 }
202211
212+ /// Deletes multiple items from a datastore by their keys in a single operation.
213+ pub async fn bulk_delete_datastore_items (
214+ & self ,
215+ datastore_id : String ,
216+ body : crate :: datadogV2:: model:: BulkDeleteAppsDatastoreItemsRequest ,
217+ ) -> Result <
218+ crate :: datadogV2:: model:: DeleteAppsDatastoreItemResponseArray ,
219+ datadog:: Error < BulkDeleteDatastoreItemsError > ,
220+ > {
221+ match self
222+ . bulk_delete_datastore_items_with_http_info ( datastore_id, body)
223+ . await
224+ {
225+ Ok ( response_content) => {
226+ if let Some ( e) = response_content. entity {
227+ Ok ( e)
228+ } else {
229+ Err ( datadog:: Error :: Serde ( serde:: de:: Error :: custom (
230+ "response content was None" ,
231+ ) ) )
232+ }
233+ }
234+ Err ( err) => Err ( err) ,
235+ }
236+ }
237+
238+ /// Deletes multiple items from a datastore by their keys in a single operation.
239+ pub async fn bulk_delete_datastore_items_with_http_info (
240+ & self ,
241+ datastore_id : String ,
242+ body : crate :: datadogV2:: model:: BulkDeleteAppsDatastoreItemsRequest ,
243+ ) -> Result <
244+ datadog:: ResponseContent < crate :: datadogV2:: model:: DeleteAppsDatastoreItemResponseArray > ,
245+ datadog:: Error < BulkDeleteDatastoreItemsError > ,
246+ > {
247+ let local_configuration = & self . config ;
248+ let operation_id = "v2.bulk_delete_datastore_items" ;
249+
250+ let local_client = & self . client ;
251+
252+ let local_uri_str = format ! (
253+ "{}/api/v2/actions-datastores/{datastore_id}/items/bulk" ,
254+ local_configuration. get_operation_host( operation_id) ,
255+ datastore_id = datadog:: urlencode( datastore_id)
256+ ) ;
257+ let mut local_req_builder =
258+ local_client. request ( reqwest:: Method :: DELETE , local_uri_str. as_str ( ) ) ;
259+
260+ // build headers
261+ let mut headers = HeaderMap :: new ( ) ;
262+ headers. insert ( "Content-Type" , HeaderValue :: from_static ( "application/json" ) ) ;
263+ headers. insert ( "Accept" , HeaderValue :: from_static ( "application/json" ) ) ;
264+
265+ // build user agent
266+ match HeaderValue :: from_str ( local_configuration. user_agent . as_str ( ) ) {
267+ Ok ( user_agent) => headers. insert ( reqwest:: header:: USER_AGENT , user_agent) ,
268+ Err ( e) => {
269+ log:: warn!( "Failed to parse user agent header: {e}, falling back to default" ) ;
270+ headers. insert (
271+ reqwest:: header:: USER_AGENT ,
272+ HeaderValue :: from_static ( datadog:: DEFAULT_USER_AGENT . as_str ( ) ) ,
273+ )
274+ }
275+ } ;
276+
277+ // build auth
278+ if let Some ( local_key) = local_configuration. auth_keys . get ( "apiKeyAuth" ) {
279+ headers. insert (
280+ "DD-API-KEY" ,
281+ HeaderValue :: from_str ( local_key. key . as_str ( ) )
282+ . expect ( "failed to parse DD-API-KEY header" ) ,
283+ ) ;
284+ } ;
285+ if let Some ( local_key) = local_configuration. auth_keys . get ( "appKeyAuth" ) {
286+ headers. insert (
287+ "DD-APPLICATION-KEY" ,
288+ HeaderValue :: from_str ( local_key. key . as_str ( ) )
289+ . expect ( "failed to parse DD-APPLICATION-KEY header" ) ,
290+ ) ;
291+ } ;
292+
293+ // build body parameters
294+ let output = Vec :: new ( ) ;
295+ let mut ser = serde_json:: Serializer :: with_formatter ( output, datadog:: DDFormatter ) ;
296+ if body. serialize ( & mut ser) . is_ok ( ) {
297+ if let Some ( content_encoding) = headers. get ( "Content-Encoding" ) {
298+ match content_encoding. to_str ( ) . unwrap_or_default ( ) {
299+ "gzip" => {
300+ let mut enc = GzEncoder :: new ( Vec :: new ( ) , Compression :: default ( ) ) ;
301+ let _ = enc. write_all ( ser. into_inner ( ) . as_slice ( ) ) ;
302+ match enc. finish ( ) {
303+ Ok ( buf) => {
304+ local_req_builder = local_req_builder. body ( buf) ;
305+ }
306+ Err ( e) => return Err ( datadog:: Error :: Io ( e) ) ,
307+ }
308+ }
309+ "deflate" => {
310+ let mut enc = ZlibEncoder :: new ( Vec :: new ( ) , Compression :: default ( ) ) ;
311+ let _ = enc. write_all ( ser. into_inner ( ) . as_slice ( ) ) ;
312+ match enc. finish ( ) {
313+ Ok ( buf) => {
314+ local_req_builder = local_req_builder. body ( buf) ;
315+ }
316+ Err ( e) => return Err ( datadog:: Error :: Io ( e) ) ,
317+ }
318+ }
319+ "zstd1" => {
320+ let mut enc = zstd:: stream:: Encoder :: new ( Vec :: new ( ) , 0 ) . unwrap ( ) ;
321+ let _ = enc. write_all ( ser. into_inner ( ) . as_slice ( ) ) ;
322+ match enc. finish ( ) {
323+ Ok ( buf) => {
324+ local_req_builder = local_req_builder. body ( buf) ;
325+ }
326+ Err ( e) => return Err ( datadog:: Error :: Io ( e) ) ,
327+ }
328+ }
329+ _ => {
330+ local_req_builder = local_req_builder. body ( ser. into_inner ( ) ) ;
331+ }
332+ }
333+ } else {
334+ local_req_builder = local_req_builder. body ( ser. into_inner ( ) ) ;
335+ }
336+ }
337+
338+ local_req_builder = local_req_builder. headers ( headers) ;
339+ let local_req = local_req_builder. build ( ) ?;
340+ log:: debug!( "request content: {:?}" , local_req. body( ) ) ;
341+ let local_resp = local_client. execute ( local_req) . await ?;
342+
343+ let local_status = local_resp. status ( ) ;
344+ let local_content = local_resp. text ( ) . await ?;
345+ log:: debug!( "response content: {}" , local_content) ;
346+
347+ if !local_status. is_client_error ( ) && !local_status. is_server_error ( ) {
348+ match serde_json:: from_str :: <
349+ crate :: datadogV2:: model:: DeleteAppsDatastoreItemResponseArray ,
350+ > ( & local_content)
351+ {
352+ Ok ( e) => {
353+ return Ok ( datadog:: ResponseContent {
354+ status : local_status,
355+ content : local_content,
356+ entity : Some ( e) ,
357+ } )
358+ }
359+ Err ( e) => return Err ( datadog:: Error :: Serde ( e) ) ,
360+ } ;
361+ } else {
362+ let local_entity: Option < BulkDeleteDatastoreItemsError > =
363+ serde_json:: from_str ( & local_content) . ok ( ) ;
364+ let local_error = datadog:: ResponseContent {
365+ status : local_status,
366+ content : local_content,
367+ entity : local_entity,
368+ } ;
369+ Err ( datadog:: Error :: ResponseError ( local_error) )
370+ }
371+ }
372+
203373 /// Creates or replaces multiple items in a datastore by their keys in a single operation.
204374 pub async fn bulk_write_datastore_items (
205375 & self ,
0 commit comments