From 62459451750454f032c48bc0dd22d2a6308b9a19 Mon Sep 17 00:00:00 2001 From: "ci.datadog-api-spec" Date: Tue, 9 Jun 2026 16:01:33 +0000 Subject: [PATCH] Regenerate client from commit b1982e5 of spec repo --- .generator/schemas/v2/openapi.yaml | 76 ++++++++ .../ListSlackUserBindings.java | 27 +++ .../client/v2/api/SlackIntegrationApi.java | 184 ++++++++++++++++++ .../client/v2/model/SlackUserBindingData.java | 165 ++++++++++++++++ .../client/v2/model/SlackUserBindingType.java | 54 +++++ .../v2/model/SlackUserBindingsResponse.java | 155 +++++++++++++++ .../client/v2/api/slack_integration.feature | 23 +++ .../com/datadog/api/client/v2/api/undo.json | 6 + 8 files changed, 690 insertions(+) create mode 100644 examples/v2/slack-integration/ListSlackUserBindings.java create mode 100644 src/main/java/com/datadog/api/client/v2/api/SlackIntegrationApi.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SlackUserBindingData.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SlackUserBindingType.java create mode 100644 src/main/java/com/datadog/api/client/v2/model/SlackUserBindingsResponse.java create mode 100644 src/test/resources/com/datadog/api/client/v2/api/slack_integration.feature diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 2d470c8f2f0..1e960b60bb1 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -1772,6 +1772,14 @@ components: required: false schema: type: boolean + SlackUserUuidQueryParameter: + description: The UUID of the Datadog user to list Slack bindings for. + in: query + name: user_uuid + required: true + schema: + format: uuid + type: string SloID: description: The ID of the SLO. in: path @@ -86535,6 +86543,37 @@ components: required: - slackTrigger type: object + SlackUserBindingData: + description: Slack team ID data from a response. + properties: + id: + description: The Slack team ID. + example: "T01234567" + type: string + type: + $ref: "#/components/schemas/SlackUserBindingType" + type: object + SlackUserBindingType: + default: team_id + description: Slack user binding resource type. + enum: + - team_id + example: team_id + type: string + x-enum-varnames: + - TEAM_ID + SlackUserBindingsResponse: + description: Response with a list of Slack user bindings. + properties: + data: + description: An array of Slack user bindings. + example: [{"id": "T01234567", "type": "team_id"}, {"id": "T09876543", "type": "team_id"}] + items: + $ref: "#/components/schemas/SlackUserBindingData" + type: array + required: + - data + type: object SloDataSource: default: slo description: A data source for SLO queries. @@ -132237,6 +132276,36 @@ paths: summary: List ServiceNow users tags: - ServiceNow Integration + /api/v2/integration/slack/user-bindings: + get: + description: List all Slack user bindings for a given Datadog user from the Datadog Slack integration. + operationId: ListSlackUserBindings + parameters: + - $ref: "#/components/parameters/SlackUserUuidQueryParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - id: T01234567 + type: team_id + - id: T09876543 + type: team_id + schema: + $ref: "#/components/schemas/SlackUserBindingsResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/ForbiddenResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + summary: List Slack user bindings + tags: + - Slack Integration /api/v2/integration/statuspage/account: delete: description: Delete the Statuspage account configured for your organization. @@ -181539,6 +181608,13 @@ tags: name: Service Level Objectives - description: Manage your ServiceNow Integration. ServiceNow is a cloud-based platform that helps organizations manage digital workflows for enterprise operations. name: ServiceNow Integration + - description: |- + Configure your [Datadog Slack integration](https://docs.datadoghq.com/integrations/slack/) + directly through the Datadog API. + externalDocs: + description: For more information about the Datadog Slack integration, see the integration page. + url: https://docs.datadoghq.com/integrations/slack/ + name: Slack Integration - description: |- API to create, update, retrieve, and delete Software Catalog entities. externalDocs: diff --git a/examples/v2/slack-integration/ListSlackUserBindings.java b/examples/v2/slack-integration/ListSlackUserBindings.java new file mode 100644 index 00000000000..fc6278d3b90 --- /dev/null +++ b/examples/v2/slack-integration/ListSlackUserBindings.java @@ -0,0 +1,27 @@ +// List Slack user bindings returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.SlackIntegrationApi; +import com.datadog.api.client.v2.model.SlackUserBindingsResponse; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + SlackIntegrationApi apiInstance = new SlackIntegrationApi(defaultClient); + + try { + SlackUserBindingsResponse result = + apiInstance.listSlackUserBindings( + UUID.fromString("9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d")); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling SlackIntegrationApi#listSlackUserBindings"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/v2/api/SlackIntegrationApi.java b/src/main/java/com/datadog/api/client/v2/api/SlackIntegrationApi.java new file mode 100644 index 00000000000..9fb94d3e6ea --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/api/SlackIntegrationApi.java @@ -0,0 +1,184 @@ +package com.datadog.api.client.v2.api; + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.ApiResponse; +import com.datadog.api.client.Pair; +import com.datadog.api.client.v2.model.SlackUserBindingsResponse; +import jakarta.ws.rs.client.Invocation; +import jakarta.ws.rs.core.GenericType; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.CompletableFuture; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SlackIntegrationApi { + private ApiClient apiClient; + + public SlackIntegrationApi() { + this(ApiClient.getDefaultApiClient()); + } + + public SlackIntegrationApi(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * Get the API client. + * + * @return API client + */ + public ApiClient getApiClient() { + return apiClient; + } + + /** + * Set the API client. + * + * @param apiClient an instance of API client + */ + public void setApiClient(ApiClient apiClient) { + this.apiClient = apiClient; + } + + /** + * List Slack user bindings. + * + *

See {@link #listSlackUserBindingsWithHttpInfo}. + * + * @param userUuid The UUID of the Datadog user to list Slack bindings for. (required) + * @return SlackUserBindingsResponse + * @throws ApiException if fails to make API call + */ + public SlackUserBindingsResponse listSlackUserBindings(UUID userUuid) throws ApiException { + return listSlackUserBindingsWithHttpInfo(userUuid).getData(); + } + + /** + * List Slack user bindings. + * + *

See {@link #listSlackUserBindingsWithHttpInfoAsync}. + * + * @param userUuid The UUID of the Datadog user to list Slack bindings for. (required) + * @return CompletableFuture<SlackUserBindingsResponse> + */ + public CompletableFuture listSlackUserBindingsAsync(UUID userUuid) { + return listSlackUserBindingsWithHttpInfoAsync(userUuid) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List all Slack user bindings for a given Datadog user from the Datadog Slack integration. + * + * @param userUuid The UUID of the Datadog user to list Slack bindings for. (required) + * @return ApiResponse<SlackUserBindingsResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
403 Forbidden -
429 Too many requests -
+ */ + public ApiResponse listSlackUserBindingsWithHttpInfo(UUID userUuid) + throws ApiException { + Object localVarPostBody = null; + + // verify the required parameter 'userUuid' is set + if (userUuid == null) { + throw new ApiException( + 400, "Missing the required parameter 'userUuid' when calling listSlackUserBindings"); + } + // create path and map variables + String localVarPath = "/api/v2/integration/slack/user-bindings"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "user_uuid", userUuid)); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.SlackIntegrationApi.listSlackUserBindings", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List Slack user bindings. + * + *

See {@link #listSlackUserBindingsWithHttpInfo}. + * + * @param userUuid The UUID of the Datadog user to list Slack bindings for. (required) + * @return CompletableFuture<ApiResponse<SlackUserBindingsResponse>> + */ + public CompletableFuture> + listSlackUserBindingsWithHttpInfoAsync(UUID userUuid) { + Object localVarPostBody = null; + + // verify the required parameter 'userUuid' is set + if (userUuid == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, "Missing the required parameter 'userUuid' when calling listSlackUserBindings")); + return result; + } + // create path and map variables + String localVarPath = "/api/v2/integration/slack/user-bindings"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "user_uuid", userUuid)); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.SlackIntegrationApi.listSlackUserBindings", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingData.java b/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingData.java new file mode 100644 index 00000000000..2ba08e2a1a1 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingData.java @@ -0,0 +1,165 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Slack team ID data from a response. */ +@JsonPropertyOrder({SlackUserBindingData.JSON_PROPERTY_ID, SlackUserBindingData.JSON_PROPERTY_TYPE}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SlackUserBindingData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ID = "id"; + private String id; + + public static final String JSON_PROPERTY_TYPE = "type"; + private SlackUserBindingType type = SlackUserBindingType.TEAM_ID; + + public SlackUserBindingData id(String id) { + this.id = id; + return this; + } + + /** + * The Slack team ID. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public SlackUserBindingData type(SlackUserBindingType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * Slack user binding resource type. + * + * @return type + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public SlackUserBindingType getType() { + return type; + } + + public void setType(SlackUserBindingType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SlackUserBindingData + */ + @JsonAnySetter + public SlackUserBindingData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SlackUserBindingData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SlackUserBindingData slackUserBindingData = (SlackUserBindingData) o; + return Objects.equals(this.id, slackUserBindingData.id) + && Objects.equals(this.type, slackUserBindingData.type) + && Objects.equals(this.additionalProperties, slackUserBindingData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(id, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SlackUserBindingData {\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingType.java b/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingType.java new file mode 100644 index 00000000000..8e550ba03f1 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingType.java @@ -0,0 +1,54 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Slack user binding resource type. */ +@JsonSerialize(using = SlackUserBindingType.SlackUserBindingTypeSerializer.class) +public class SlackUserBindingType extends ModelEnum { + + private static final Set allowedValues = new HashSet(Arrays.asList("team_id")); + + public static final SlackUserBindingType TEAM_ID = new SlackUserBindingType("team_id"); + + SlackUserBindingType(String value) { + super(value, allowedValues); + } + + public static class SlackUserBindingTypeSerializer extends StdSerializer { + public SlackUserBindingTypeSerializer(Class t) { + super(t); + } + + public SlackUserBindingTypeSerializer() { + this(null); + } + + @Override + public void serialize( + SlackUserBindingType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static SlackUserBindingType fromValue(String value) { + return new SlackUserBindingType(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingsResponse.java b/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingsResponse.java new file mode 100644 index 00000000000..ef85fb7d405 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/SlackUserBindingsResponse.java @@ -0,0 +1,155 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** Response with a list of Slack user bindings. */ +@JsonPropertyOrder({SlackUserBindingsResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class SlackUserBindingsResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private List data = new ArrayList<>(); + + public SlackUserBindingsResponse() {} + + @JsonCreator + public SlackUserBindingsResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) List data) { + this.data = data; + } + + public SlackUserBindingsResponse data(List data) { + this.data = data; + for (SlackUserBindingData item : data) { + this.unparsed |= item.unparsed; + } + return this; + } + + public SlackUserBindingsResponse addDataItem(SlackUserBindingData dataItem) { + this.data.add(dataItem); + this.unparsed |= dataItem.unparsed; + return this; + } + + /** + * An array of Slack user bindings. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return SlackUserBindingsResponse + */ + @JsonAnySetter + public SlackUserBindingsResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this SlackUserBindingsResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SlackUserBindingsResponse slackUserBindingsResponse = (SlackUserBindingsResponse) o; + return Objects.equals(this.data, slackUserBindingsResponse.data) + && Objects.equals( + this.additionalProperties, slackUserBindingsResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class SlackUserBindingsResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/test/resources/com/datadog/api/client/v2/api/slack_integration.feature b/src/test/resources/com/datadog/api/client/v2/api/slack_integration.feature new file mode 100644 index 00000000000..0ef645a642a --- /dev/null +++ b/src/test/resources/com/datadog/api/client/v2/api/slack_integration.feature @@ -0,0 +1,23 @@ +@endpoint(slack-integration) @endpoint(slack-integration-v2) +Feature: Slack Integration + Configure your [Datadog Slack + integration](https://docs.datadoghq.com/integrations/slack/) directly + through the Datadog API. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "SlackIntegration" API + And new "ListSlackUserBindings" request + + @generated @skip @team:DataDog/chat-integrations + Scenario: List Slack user bindings returns "Bad Request" response + Given request contains "user_uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/chat-integrations + Scenario: List Slack user bindings returns "OK" response + Given request contains "user_uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index 9101d0155cb..7588d4d2d32 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/undo.json +++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json @@ -3634,6 +3634,12 @@ "type": "safe" } }, + "ListSlackUserBindings": { + "tag": "Slack Integration", + "undo": { + "type": "safe" + } + }, "DeleteStatuspageAccount": { "tag": "Statuspage Integration", "undo": {