diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 42168cb0f307..095006c0c124 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -51339,6 +51339,49 @@ components: $ref: '#/components/schemas/ServiceDefinitionData' type: array type: object + ServiceList: + properties: + data: + $ref: '#/components/schemas/ServiceListData' + type: object + ServiceListData: + properties: + attributes: + $ref: '#/components/schemas/ServiceListDataAttributes' + id: + type: string + type: + $ref: '#/components/schemas/ServiceListDataType' + required: + - type + type: object + ServiceListDataAttributes: + properties: + metadata: + items: + $ref: '#/components/schemas/ServiceListDataAttributesMetadataItems' + type: array + services: + items: + type: string + type: array + type: object + ServiceListDataAttributesMetadataItems: + properties: + isTraced: + type: boolean + isUsm: + type: boolean + type: object + ServiceListDataType: + default: services_list + description: Services list resource type. + enum: + - services_list + example: services_list + type: string + x-enum-varnames: + - SERVICES_LIST ServiceNowBasicAuth: description: The definition of the `ServiceNowBasicAuth` object. properties: @@ -61601,6 +61644,26 @@ paths: permissions: - apm_retention_filter_write - apm_pipelines_write + /api/v2/apm/services: + get: + operationId: GetServiceList + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceList' + description: OK + '429': + $ref: '#/components/responses/TooManyRequestsResponse' + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - apm_read + summary: Get service list + tags: + - APM /api/v2/app-builder/apps: delete: description: Delete multiple apps in a single request from a list of app IDs. @@ -69334,9 +69397,6 @@ paths: operator: OR permissions: - incident_read - x-unstable: '**Note**: This endpoint is in Preview. - - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' post: description: Create an impact for an incident. operationId: CreateIncidentImpact @@ -69380,9 +69440,6 @@ paths: operator: OR permissions: - incident_write - x-unstable: '**Note**: This endpoint is in Preview. - - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/incidents/{incident_id}/impacts/{impact_id}: delete: description: Delete an incident impact. @@ -69413,9 +69470,6 @@ paths: operator: OR permissions: - incident_write - x-unstable: '**Note**: This endpoint is in Preview. - - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).' /api/v2/incidents/{incident_id}/relationships/integrations: get: description: Get all integration metadata for an incident. @@ -88586,6 +88640,9 @@ servers: tags: - description: Configure your API endpoints through the Datadog API. name: API Management +- description: Observe, troubleshoot, and improve cloud-scale applications with all + telemetry in context + name: APM - description: Manage configuration of [APM retention filters](https://app.datadoghq.com/apm/traces/retention-filters) for your organization. You need an API and application key with Admin rights to interact with this endpoint. See [retention filters](https://docs.datadoghq.com/tracing/trace_pipeline/trace_retention/#retention-filters) diff --git a/examples/v2/apm/GetServiceList.ts b/examples/v2/apm/GetServiceList.ts new file mode 100644 index 000000000000..aafc1750019d --- /dev/null +++ b/examples/v2/apm/GetServiceList.ts @@ -0,0 +1,17 @@ +/** + * Get service list returns "OK" response + */ + +import { client, v2 } from "@datadog/datadog-api-client"; + +const configuration = client.createConfiguration(); +const apiInstance = new v2.APMApi(configuration); + +apiInstance + .getServiceList() + .then((data: v2.ServiceList) => { + console.log( + "API called successfully. Returned data: " + JSON.stringify(data) + ); + }) + .catch((error: any) => console.error(error)); diff --git a/features/support/scenarios_model_mapping.ts b/features/support/scenarios_model_mapping.ts index 3c1c4e156b1e..bbe435474a04 100644 --- a/features/support/scenarios_model_mapping.ts +++ b/features/support/scenarios_model_mapping.ts @@ -3092,6 +3092,9 @@ export const ScenariosModelMappings: {[key: string]: {[key: string]: any}} = { }, "operationResponseType": "{}", }, + "v2.GetServiceList": { + "operationResponseType": "ServiceList", + }, "v2.ListApps": { "limit": { "type": "number", diff --git a/features/v2/apm.feature b/features/v2/apm.feature new file mode 100644 index 000000000000..e35bd4d4750c --- /dev/null +++ b/features/v2/apm.feature @@ -0,0 +1,13 @@ +@endpoint(apm) @endpoint(apm-v2) +Feature: APM + Observe, troubleshoot, and improve cloud-scale applications with all + telemetry in context + + @generated @skip @team:DataDog/apm-aoe + Scenario: Get service list returns "OK" response + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "APM" API + And new "GetServiceList" request + When the request is sent + Then the response status is 200 OK diff --git a/features/v2/incidents.feature b/features/v2/incidents.feature index 74ae965968fd..12ab3e2f5ba5 100644 --- a/features/v2/incidents.feature +++ b/features/v2/incidents.feature @@ -806,16 +806,14 @@ Feature: Incidents @generated @skip @team:DataDog/incident-app Scenario: List an incident's impacts returns "Bad Request" response - Given operation "ListIncidentImpacts" enabled - And new "ListIncidentImpacts" request + Given new "ListIncidentImpacts" request And request contains "incident_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/incident-app Scenario: List an incident's impacts returns "Not Found" response - Given operation "ListIncidentImpacts" enabled - And new "ListIncidentImpacts" request + Given new "ListIncidentImpacts" request And request contains "incident_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found diff --git a/features/v2/undo.json b/features/v2/undo.json index 8aec373cdd9e..e0f0b98d0c96 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -516,6 +516,12 @@ "type": "idempotent" } }, + "GetServiceList": { + "tag": "APM", + "undo": { + "type": "safe" + } + }, "DeleteApps": { "tag": "App Builder", "undo": { diff --git a/packages/datadog-api-client-common/configuration.ts b/packages/datadog-api-client-common/configuration.ts index e94e5c055eac..4188961126f9 100644 --- a/packages/datadog-api-client-common/configuration.ts +++ b/packages/datadog-api-client-common/configuration.ts @@ -282,14 +282,12 @@ export function createConfiguration( "v2.updateDeploymentGate": false, "v2.updateDeploymentRule": false, "v2.createIncident": false, - "v2.createIncidentImpact": false, "v2.createIncidentIntegration": false, "v2.createIncidentNotificationRule": false, "v2.createIncidentNotificationTemplate": false, "v2.createIncidentTodo": false, "v2.createIncidentType": false, "v2.deleteIncident": false, - "v2.deleteIncidentImpact": false, "v2.deleteIncidentIntegration": false, "v2.deleteIncidentNotificationRule": false, "v2.deleteIncidentNotificationTemplate": false, @@ -302,7 +300,6 @@ export function createConfiguration( "v2.getIncidentTodo": false, "v2.getIncidentType": false, "v2.listIncidentAttachments": false, - "v2.listIncidentImpacts": false, "v2.listIncidentIntegrations": false, "v2.listIncidentNotificationRules": false, "v2.listIncidentNotificationTemplates": false, diff --git a/packages/datadog-api-client-v2/apis/APMApi.ts b/packages/datadog-api-client-v2/apis/APMApi.ts new file mode 100644 index 000000000000..2406e8262a76 --- /dev/null +++ b/packages/datadog-api-client-v2/apis/APMApi.ts @@ -0,0 +1,133 @@ +import { BaseAPIRequestFactory } from "../../datadog-api-client-common/baseapi"; +import { + Configuration, + applySecurityAuthentication, +} from "../../datadog-api-client-common/configuration"; +import { + RequestContext, + HttpMethod, + ResponseContext, +} from "../../datadog-api-client-common/http/http"; + +import { logger } from "../../../logger"; +import { ObjectSerializer } from "../models/ObjectSerializer"; +import { ApiException } from "../../datadog-api-client-common/exception"; + +import { APIErrorResponse } from "../models/APIErrorResponse"; +import { ServiceList } from "../models/ServiceList"; + +export class APMApiRequestFactory extends BaseAPIRequestFactory { + public async getServiceList( + _options?: Configuration + ): Promise { + const _config = _options || this.configuration; + + // Path Params + const localVarPath = "/api/v2/apm/services"; + + // Make Request Context + const requestContext = _config + .getServer("v2.APMApi.getServiceList") + .makeRequestContext(localVarPath, HttpMethod.GET); + requestContext.setHeaderParam("Accept", "application/json"); + requestContext.setHttpConfig(_config.httpConfig); + + // Apply auth methods + applySecurityAuthentication(_config, requestContext, [ + "apiKeyAuth", + "appKeyAuth", + "AuthZ", + ]); + + return requestContext; + } +} + +export class APMApiResponseProcessor { + /** + * Unwraps the actual response sent by the server from the response context and deserializes the response content + * to the expected objects + * + * @params response Response returned by the server for a request to getServiceList + * @throws ApiException if the response code was not in [200, 299] + */ + public async getServiceList(response: ResponseContext): Promise { + const contentType = ObjectSerializer.normalizeMediaType( + response.headers["content-type"] + ); + if (response.httpStatusCode === 200) { + const body: ServiceList = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "ServiceList" + ) as ServiceList; + return body; + } + if (response.httpStatusCode === 429) { + const bodyText = ObjectSerializer.parse( + await response.body.text(), + contentType + ); + let body: APIErrorResponse; + try { + body = ObjectSerializer.deserialize( + bodyText, + "APIErrorResponse" + ) as APIErrorResponse; + } catch (error) { + logger.debug(`Got error deserializing error: ${error}`); + throw new ApiException( + response.httpStatusCode, + bodyText + ); + } + throw new ApiException(response.httpStatusCode, body); + } + + // Work around for missing responses in specification, e.g. for petstore.yaml + if (response.httpStatusCode >= 200 && response.httpStatusCode <= 299) { + const body: ServiceList = ObjectSerializer.deserialize( + ObjectSerializer.parse(await response.body.text(), contentType), + "ServiceList", + "" + ) as ServiceList; + return body; + } + + const body = (await response.body.text()) || ""; + throw new ApiException( + response.httpStatusCode, + 'Unknown API Status Code!\nBody: "' + body + '"' + ); + } +} + +export class APMApi { + private requestFactory: APMApiRequestFactory; + private responseProcessor: APMApiResponseProcessor; + private configuration: Configuration; + + public constructor( + configuration: Configuration, + requestFactory?: APMApiRequestFactory, + responseProcessor?: APMApiResponseProcessor + ) { + this.configuration = configuration; + this.requestFactory = + requestFactory || new APMApiRequestFactory(configuration); + this.responseProcessor = responseProcessor || new APMApiResponseProcessor(); + } + + /** + * @param param The request object + */ + public getServiceList(options?: Configuration): Promise { + const requestContextPromise = this.requestFactory.getServiceList(options); + return requestContextPromise.then((requestContext) => { + return this.configuration.httpApi + .send(requestContext) + .then((responseContext) => { + return this.responseProcessor.getServiceList(responseContext); + }); + }); + } +} diff --git a/packages/datadog-api-client-v2/apis/IncidentsApi.ts b/packages/datadog-api-client-v2/apis/IncidentsApi.ts index 33d7224fe1ff..f9dc1300da02 100644 --- a/packages/datadog-api-client-v2/apis/IncidentsApi.ts +++ b/packages/datadog-api-client-v2/apis/IncidentsApi.ts @@ -112,11 +112,6 @@ export class IncidentsApiRequestFactory extends BaseAPIRequestFactory { ): Promise { const _config = _options || this.configuration; - logger.warn("Using unstable operation 'createIncidentImpact'"); - if (!_config.unstableOperations["v2.createIncidentImpact"]) { - throw new Error("Unstable operation 'createIncidentImpact' is disabled"); - } - // verify required parameter 'incidentId' is not null or undefined if (incidentId === null || incidentId === undefined) { throw new RequiredError("incidentId", "createIncidentImpact"); @@ -495,11 +490,6 @@ export class IncidentsApiRequestFactory extends BaseAPIRequestFactory { ): Promise { const _config = _options || this.configuration; - logger.warn("Using unstable operation 'deleteIncidentImpact'"); - if (!_config.unstableOperations["v2.deleteIncidentImpact"]) { - throw new Error("Unstable operation 'deleteIncidentImpact' is disabled"); - } - // verify required parameter 'incidentId' is not null or undefined if (incidentId === null || incidentId === undefined) { throw new RequiredError("incidentId", "deleteIncidentImpact"); @@ -1140,11 +1130,6 @@ export class IncidentsApiRequestFactory extends BaseAPIRequestFactory { ): Promise { const _config = _options || this.configuration; - logger.warn("Using unstable operation 'listIncidentImpacts'"); - if (!_config.unstableOperations["v2.listIncidentImpacts"]) { - throw new Error("Unstable operation 'listIncidentImpacts' is disabled"); - } - // verify required parameter 'incidentId' is not null or undefined if (incidentId === null || incidentId === undefined) { throw new RequiredError("incidentId", "listIncidentImpacts"); diff --git a/packages/datadog-api-client-v2/index.ts b/packages/datadog-api-client-v2/index.ts index 3e002f15f167..c3bd4a1ccef1 100644 --- a/packages/datadog-api-client-v2/index.ts +++ b/packages/datadog-api-client-v2/index.ts @@ -7,6 +7,8 @@ export { APIManagementApi, } from "./apis/APIManagementApi"; +export { APMApi } from "./apis/APMApi"; + export { APMRetentionFiltersApiCreateApmRetentionFilterRequest, APMRetentionFiltersApiDeleteApmRetentionFilterRequest, @@ -4171,6 +4173,11 @@ export { ServiceDefinitionV2Repo } from "./models/ServiceDefinitionV2Repo"; export { ServiceDefinitionV2Slack } from "./models/ServiceDefinitionV2Slack"; export { ServiceDefinitionV2SlackType } from "./models/ServiceDefinitionV2SlackType"; export { ServiceDefinitionV2Version } from "./models/ServiceDefinitionV2Version"; +export { ServiceList } from "./models/ServiceList"; +export { ServiceListData } from "./models/ServiceListData"; +export { ServiceListDataAttributes } from "./models/ServiceListDataAttributes"; +export { ServiceListDataAttributesMetadataItems } from "./models/ServiceListDataAttributesMetadataItems"; +export { ServiceListDataType } from "./models/ServiceListDataType"; export { ServiceNowBasicAuth } from "./models/ServiceNowBasicAuth"; export { ServiceNowBasicAuthType } from "./models/ServiceNowBasicAuthType"; export { ServiceNowBasicAuthUpdate } from "./models/ServiceNowBasicAuthUpdate"; diff --git a/packages/datadog-api-client-v2/models/ObjectSerializer.ts b/packages/datadog-api-client-v2/models/ObjectSerializer.ts index 1f67c4869f6f..1a9652169b05 100644 --- a/packages/datadog-api-client-v2/models/ObjectSerializer.ts +++ b/packages/datadog-api-client-v2/models/ObjectSerializer.ts @@ -2405,6 +2405,10 @@ import { ServiceDefinitionV2Opsgenie } from "./ServiceDefinitionV2Opsgenie"; import { ServiceDefinitionV2Repo } from "./ServiceDefinitionV2Repo"; import { ServiceDefinitionV2Slack } from "./ServiceDefinitionV2Slack"; import { ServiceDefinitionsListResponse } from "./ServiceDefinitionsListResponse"; +import { ServiceList } from "./ServiceList"; +import { ServiceListData } from "./ServiceListData"; +import { ServiceListDataAttributes } from "./ServiceListDataAttributes"; +import { ServiceListDataAttributesMetadataItems } from "./ServiceListDataAttributesMetadataItems"; import { ServiceNowBasicAuth } from "./ServiceNowBasicAuth"; import { ServiceNowBasicAuthUpdate } from "./ServiceNowBasicAuthUpdate"; import { ServiceNowIntegration } from "./ServiceNowIntegration"; @@ -4191,6 +4195,7 @@ const enumsMap: { [key: string]: any[] } = { ServiceDefinitionV2OpsgenieRegion: ["US", "EU"], ServiceDefinitionV2SlackType: ["slack"], ServiceDefinitionV2Version: ["v2"], + ServiceListDataType: ["services_list"], ServiceNowBasicAuthType: ["ServiceNowBasicAuth"], ServiceNowIntegrationType: ["ServiceNow"], ShiftDataRelationshipsUserDataType: ["users"], @@ -7290,6 +7295,11 @@ const typeMap: { [index: string]: any } = { ServiceDefinitionV2Repo: ServiceDefinitionV2Repo, ServiceDefinitionV2Slack: ServiceDefinitionV2Slack, ServiceDefinitionsListResponse: ServiceDefinitionsListResponse, + ServiceList: ServiceList, + ServiceListData: ServiceListData, + ServiceListDataAttributes: ServiceListDataAttributes, + ServiceListDataAttributesMetadataItems: + ServiceListDataAttributesMetadataItems, ServiceNowBasicAuth: ServiceNowBasicAuth, ServiceNowBasicAuthUpdate: ServiceNowBasicAuthUpdate, ServiceNowIntegration: ServiceNowIntegration, diff --git a/packages/datadog-api-client-v2/models/ServiceList.ts b/packages/datadog-api-client-v2/models/ServiceList.ts new file mode 100644 index 000000000000..5f2a57120ab3 --- /dev/null +++ b/packages/datadog-api-client-v2/models/ServiceList.ts @@ -0,0 +1,47 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { ServiceListData } from "./ServiceListData"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +export class ServiceList { + "data"?: ServiceListData; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + data: { + baseName: "data", + type: "ServiceListData", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ServiceList.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/ServiceListData.ts b/packages/datadog-api-client-v2/models/ServiceListData.ts new file mode 100644 index 000000000000..c063e22d59f4 --- /dev/null +++ b/packages/datadog-api-client-v2/models/ServiceListData.ts @@ -0,0 +1,62 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { ServiceListDataAttributes } from "./ServiceListDataAttributes"; +import { ServiceListDataType } from "./ServiceListDataType"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +export class ServiceListData { + "attributes"?: ServiceListDataAttributes; + "id"?: string; + /** + * Services list resource type. + */ + "type": ServiceListDataType; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + attributes: { + baseName: "attributes", + type: "ServiceListDataAttributes", + }, + id: { + baseName: "id", + type: "string", + }, + type: { + baseName: "type", + type: "ServiceListDataType", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ServiceListData.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/ServiceListDataAttributes.ts b/packages/datadog-api-client-v2/models/ServiceListDataAttributes.ts new file mode 100644 index 000000000000..238c1a336411 --- /dev/null +++ b/packages/datadog-api-client-v2/models/ServiceListDataAttributes.ts @@ -0,0 +1,52 @@ +/** + * 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 2020-Present Datadog, Inc. + */ +import { ServiceListDataAttributesMetadataItems } from "./ServiceListDataAttributesMetadataItems"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +export class ServiceListDataAttributes { + "metadata"?: Array; + "services"?: Array; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + metadata: { + baseName: "metadata", + type: "Array", + }, + services: { + baseName: "services", + type: "Array", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ServiceListDataAttributes.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/ServiceListDataAttributesMetadataItems.ts b/packages/datadog-api-client-v2/models/ServiceListDataAttributesMetadataItems.ts new file mode 100644 index 000000000000..a5561e35c038 --- /dev/null +++ b/packages/datadog-api-client-v2/models/ServiceListDataAttributesMetadataItems.ts @@ -0,0 +1,51 @@ +/** + * 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 2020-Present Datadog, Inc. + */ + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +export class ServiceListDataAttributesMetadataItems { + "isTraced"?: boolean; + "isUsm"?: boolean; + + /** + * A container for additional, undeclared properties. + * This is a holder for any undeclared properties as specified with + * the 'additionalProperties' keyword in the OAS document. + */ + "additionalProperties"?: { [key: string]: any }; + + /** + * @ignore + */ + "_unparsed"?: boolean; + + /** + * @ignore + */ + static readonly attributeTypeMap: AttributeTypeMap = { + isTraced: { + baseName: "isTraced", + type: "boolean", + }, + isUsm: { + baseName: "isUsm", + type: "boolean", + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return ServiceListDataAttributesMetadataItems.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/ServiceListDataType.ts b/packages/datadog-api-client-v2/models/ServiceListDataType.ts new file mode 100644 index 000000000000..3f997f464c5c --- /dev/null +++ b/packages/datadog-api-client-v2/models/ServiceListDataType.ts @@ -0,0 +1,14 @@ +/** + * 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 2020-Present Datadog, Inc. + */ + +import { UnparsedObject } from "../../datadog-api-client-common/util"; + +/** + * Services list resource type. + */ + +export type ServiceListDataType = typeof SERVICES_LIST | UnparsedObject; +export const SERVICES_LIST = "services_list";