Skip to content

Commit 8cffc73

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add BulkDeleteDatastoreItems to Datastore API spec (#944)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent c9db4de commit 8cffc73

18 files changed

+1165
-2
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6553,6 +6553,46 @@ components:
65536553
description: The type of the object, must be `budget`.
65546554
type: string
65556555
type: object
6556+
BulkDeleteAppsDatastoreItemsRequest:
6557+
description: Request to delete items from a datastore.
6558+
properties:
6559+
data:
6560+
$ref: '#/components/schemas/BulkDeleteAppsDatastoreItemsRequestData'
6561+
type: object
6562+
BulkDeleteAppsDatastoreItemsRequestData:
6563+
description: Data wrapper containing the data needed to delete items from a
6564+
datastore.
6565+
properties:
6566+
attributes:
6567+
$ref: '#/components/schemas/BulkDeleteAppsDatastoreItemsRequestDataAttributes'
6568+
id:
6569+
description: ID for the datastore of the items to delete.
6570+
type: string
6571+
type:
6572+
$ref: '#/components/schemas/BulkDeleteAppsDatastoreItemsRequestDataType'
6573+
required:
6574+
- type
6575+
type: object
6576+
BulkDeleteAppsDatastoreItemsRequestDataAttributes:
6577+
description: Attributes of request data to delete items from a datastore.
6578+
properties:
6579+
item_keys:
6580+
description: List of primary keys identifying items to delete from datastore.
6581+
Up to 100 items can be deleted in a single request.
6582+
items:
6583+
type: string
6584+
maxItems: 100
6585+
type: array
6586+
type: object
6587+
BulkDeleteAppsDatastoreItemsRequestDataType:
6588+
default: items
6589+
description: Items resource type.
6590+
enum:
6591+
- items
6592+
example: items
6593+
type: string
6594+
x-enum-varnames:
6595+
- ITEMS
65566596
BulkMuteFindingsRequest:
65576597
description: The new bulk mute finding request.
65586598
properties:
@@ -14869,6 +14909,17 @@ components:
1486914909
data:
1487014910
$ref: '#/components/schemas/DeleteAppsDatastoreItemResponseData'
1487114911
type: object
14912+
DeleteAppsDatastoreItemResponseArray:
14913+
description: The definition of `DeleteAppsDatastoreItemResponseArray` object.
14914+
properties:
14915+
data:
14916+
description: The `DeleteAppsDatastoreItemResponseArray` `data`.
14917+
items:
14918+
$ref: '#/components/schemas/DeleteAppsDatastoreItemResponseData'
14919+
type: array
14920+
required:
14921+
- data
14922+
type: object
1487214923
DeleteAppsDatastoreItemResponseData:
1487314924
description: Data containing the identifier of the datastore item that was successfully
1487414925
deleted.
@@ -51257,6 +51308,57 @@ paths:
5125751308
permissions:
5125851309
- apps_datastore_write
5125951310
/api/v2/actions-datastores/{datastore_id}/items/bulk:
51311+
delete:
51312+
description: Deletes multiple items from a datastore by their keys in a single
51313+
operation.
51314+
operationId: BulkDeleteDatastoreItems
51315+
parameters:
51316+
- description: The ID of the datastore.
51317+
in: path
51318+
name: datastore_id
51319+
required: true
51320+
schema:
51321+
type: string
51322+
requestBody:
51323+
content:
51324+
application/json:
51325+
schema:
51326+
$ref: '#/components/schemas/BulkDeleteAppsDatastoreItemsRequest'
51327+
required: true
51328+
responses:
51329+
'200':
51330+
content:
51331+
application/json:
51332+
schema:
51333+
$ref: '#/components/schemas/DeleteAppsDatastoreItemResponseArray'
51334+
description: OK
51335+
'400':
51336+
content:
51337+
application/json:
51338+
schema:
51339+
$ref: '#/components/schemas/JSONAPIErrorResponse'
51340+
description: Bad Request
51341+
'404':
51342+
content:
51343+
application/json:
51344+
schema:
51345+
$ref: '#/components/schemas/JSONAPIErrorResponse'
51346+
description: Not Found
51347+
'429':
51348+
$ref: '#/components/responses/TooManyRequestsResponse'
51349+
'500':
51350+
content:
51351+
application/json:
51352+
schema:
51353+
$ref: '#/components/schemas/JSONAPIErrorResponse'
51354+
description: Internal Server Error
51355+
summary: Bulk delete datastore items
51356+
tags:
51357+
- Actions Datastores
51358+
x-permission:
51359+
operator: OR
51360+
permissions:
51361+
- apps_datastore_write
5126051362
post:
5126151363
description: Creates or replaces multiple items in a datastore by their keys
5126251364
in a single operation.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Bulk delete datastore items returns "OK" response
2+
use datadog_api_client::datadog;
3+
use datadog_api_client::datadogV2::api_actions_datastores::ActionsDatastoresAPI;
4+
use datadog_api_client::datadogV2::model::BulkDeleteAppsDatastoreItemsRequest;
5+
use datadog_api_client::datadogV2::model::BulkDeleteAppsDatastoreItemsRequestData;
6+
use datadog_api_client::datadogV2::model::BulkDeleteAppsDatastoreItemsRequestDataAttributes;
7+
use datadog_api_client::datadogV2::model::BulkDeleteAppsDatastoreItemsRequestDataType;
8+
9+
#[tokio::main]
10+
async fn main() {
11+
// there is a valid "datastore" in the system
12+
let datastore_data_id = std::env::var("DATASTORE_DATA_ID").unwrap();
13+
let body = BulkDeleteAppsDatastoreItemsRequest::new().data(
14+
BulkDeleteAppsDatastoreItemsRequestData::new(
15+
BulkDeleteAppsDatastoreItemsRequestDataType::ITEMS,
16+
)
17+
.attributes(
18+
BulkDeleteAppsDatastoreItemsRequestDataAttributes::new()
19+
.item_keys(vec!["test-key".to_string()]),
20+
),
21+
);
22+
let configuration = datadog::Configuration::new();
23+
let api = ActionsDatastoresAPI::with_config(configuration);
24+
let resp = api
25+
.bulk_delete_datastore_items(datastore_data_id.clone(), body)
26+
.await;
27+
if let Ok(value) = resp {
28+
println!("{:#?}", value);
29+
} else {
30+
println!("{:#?}", resp.unwrap_err());
31+
}
32+
}

src/datadogV2/api/api_actions_datastores.rs

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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,

src/datadogV2/model/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,16 @@ pub mod model_update_apps_datastore_item_request_data_type;
7878
pub use self::model_update_apps_datastore_item_request_data_type::UpdateAppsDatastoreItemRequestDataType;
7979
pub mod model_item_api_payload;
8080
pub use self::model_item_api_payload::ItemApiPayload;
81+
pub mod model_bulk_delete_apps_datastore_items_request;
82+
pub use self::model_bulk_delete_apps_datastore_items_request::BulkDeleteAppsDatastoreItemsRequest;
83+
pub mod model_bulk_delete_apps_datastore_items_request_data;
84+
pub use self::model_bulk_delete_apps_datastore_items_request_data::BulkDeleteAppsDatastoreItemsRequestData;
85+
pub mod model_bulk_delete_apps_datastore_items_request_data_attributes;
86+
pub use self::model_bulk_delete_apps_datastore_items_request_data_attributes::BulkDeleteAppsDatastoreItemsRequestDataAttributes;
87+
pub mod model_bulk_delete_apps_datastore_items_request_data_type;
88+
pub use self::model_bulk_delete_apps_datastore_items_request_data_type::BulkDeleteAppsDatastoreItemsRequestDataType;
89+
pub mod model_delete_apps_datastore_item_response_array;
90+
pub use self::model_delete_apps_datastore_item_response_array::DeleteAppsDatastoreItemResponseArray;
8191
pub mod model_bulk_put_apps_datastore_items_request;
8292
pub use self::model_bulk_put_apps_datastore_items_request::BulkPutAppsDatastoreItemsRequest;
8393
pub mod model_bulk_put_apps_datastore_items_request_data;

0 commit comments

Comments
 (0)