diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 737ab6bffde6..ad2439bee537 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -4579,6 +4579,7 @@ components: - sca_fargate_usage - sds_scanned_bytes_usage - serverless_apps_usage + - serverless_apps_apm_usage - siem_analyzed_logs_add_on_usage - siem_ingested_bytes_usage - snmp_usage @@ -4666,6 +4667,7 @@ components: - SCA_FARGATE_USAGE - SDS_SCANNED_BYTES_USAGE - SERVERLESS_APPS_USAGE + - SERVERLESS_APPS_APM_USAGE - SIEM_ANALYZED_LOGS_ADD_ON_USAGE - SIEM_INGESTED_BYTES_USAGE - SNMP_USAGE @@ -9156,6 +9158,8 @@ components: - published_app_percentage - serverless_apps_usage - serverless_apps_percentage + - serverless_apps_apm_usage + - serverless_apps_apm_percentage - snmp_usage - snmp_percentage - universal_service_monitoring_usage @@ -9321,6 +9325,8 @@ components: - PUBLISHED_APP_PERCENTAGE - SERVERLESS_APPS_USAGE - SERVERLESS_APPS_PERCENTAGE + - SERVERLESS_APPS_APM_USAGE + - SERVERLESS_APPS_APM_PERCENTAGE - SNMP_USAGE - SNMP_PERCENTAGE - UNIVERSAL_SERVICE_MONITORING_USAGE @@ -9978,6 +9984,14 @@ components: description: The total Sensitive Data Scanner usage by tag(s). format: double type: number + serverless_apps_apm_percentage: + description: The percentage of Serverless Apps APM usage by tag(s). + format: double + type: number + serverless_apps_apm_usage: + description: The total Serverless Apps APM usage by tag(s). + format: double + type: number serverless_apps_percentage: description: The percentage of Serverless Apps usage by tag(s). format: double diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index f45d9a1cc953..d02bb7aa5a11 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -15324,6 +15324,41 @@ components: id: $ref: "#/components/schemas/ApiID" type: object + CreateOrUpdateWidgetRequest: + description: Request body for creating or updating a widget. + properties: + data: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequestData" + required: + - data + type: object + CreateOrUpdateWidgetRequestAttributes: + description: Attributes for creating or updating a widget. + properties: + definition: + $ref: "#/components/schemas/WidgetDefinition" + tags: + description: User-defined tags for organizing the widget. + items: + type: string + nullable: true + type: array + required: + - definition + type: object + CreateOrUpdateWidgetRequestData: + description: Data for creating or updating a widget. + properties: + attributes: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequestAttributes" + type: + description: Widgets resource type. + example: widgets + type: string + required: + - type + - attributes + type: object CreatePageRequest: description: Full request to trigger an On-Call Page. example: @@ -71675,6 +71710,136 @@ components: - FRIDAY - SATURDAY - SUNDAY + WidgetAttributes: + description: Attributes of a widget resource. + properties: + created_at: + description: ISO 8601 timestamp of when the widget was created. + example: "2024-01-15T00:00:00.000Z" + type: string + definition: + $ref: "#/components/schemas/WidgetDefinition" + is_favorited: + description: "Will be implemented soon. Currently always returns false." + example: false + type: boolean + modified_at: + description: ISO 8601 timestamp of when the widget was last modified. + example: "2024-01-15T00:00:00.000Z" + type: string + tags: + description: User-defined tags for organizing widgets. + example: + - "team:my-team" + items: + type: string + nullable: true + type: array + required: + - definition + - tags + - is_favorited + - created_at + - modified_at + type: object + WidgetData: + description: A widget resource object. + properties: + attributes: + $ref: "#/components/schemas/WidgetAttributes" + id: + description: The unique identifier of the widget. + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + type: string + relationships: + $ref: "#/components/schemas/WidgetRelationships" + type: + description: Widgets resource type. + example: widgets + type: string + required: + - id + - type + - attributes + type: object + WidgetDefinition: + additionalProperties: {} + description: The definition of a widget, including its type and configuration. + properties: + title: + description: The display title of the widget. + example: My Widget + maxLength: 100 + minLength: 1 + type: string + type: + $ref: "#/components/schemas/WidgetType" + required: + - type + - title + type: object + WidgetExperienceType: + description: Widget experience types that differentiate between the products using the specific widget. + enum: + - ccm_reports + - logs_reports + - csv_reports + - product_analytics + example: ccm_reports + type: string + x-enum-varnames: + - CCM_REPORTS + - LOGS_REPORTS + - CSV_REPORTS + - PRODUCT_ANALYTICS + WidgetIncludedUser: + description: A user resource included in the response. + properties: + attributes: + $ref: "#/components/schemas/WidgetIncludedUserAttributes" + id: + description: The unique identifier of the user. + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + type: string + type: + description: Users resource type. + example: users + type: string + required: + - id + - type + type: object + WidgetIncludedUserAttributes: + description: Attributes of an included user resource. + properties: + handle: + description: The email handle of the user. + example: "john.doe@example.com" + type: string + name: + description: The display name of the user. + example: "John Doe" + nullable: true + type: string + type: object + WidgetListResponse: + description: Response containing a list of widgets. + properties: + data: + description: List of widget resources. + items: + $ref: "#/components/schemas/WidgetData" + type: array + included: + description: Array of user resources related to the widgets. + items: + $ref: "#/components/schemas/WidgetIncludedUser" + type: array + meta: + $ref: "#/components/schemas/WidgetSearchMeta" + required: + - data + type: object WidgetLiveSpan: description: The available timeframes depend on the widget you are using. enum: @@ -71711,6 +71876,108 @@ components: - PAST_SIX_MONTHS - PAST_ONE_YEAR - ALERT + WidgetRelationshipData: + description: Relationship data referencing a user resource. + properties: + id: + description: The unique identifier of the user. + example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + type: string + type: + description: Users resource type. + example: users + type: string + required: + - id + - type + type: object + WidgetRelationshipItem: + description: A JSON:API relationship to a user. + properties: + data: + $ref: "#/components/schemas/WidgetRelationshipData" + type: object + WidgetRelationships: + description: Relationships of the widget resource. + properties: + created_by: + $ref: "#/components/schemas/WidgetRelationshipItem" + description: The user who created the widget. + modified_by: + $ref: "#/components/schemas/WidgetRelationshipItem" + description: The user who last modified the widget. + type: object + WidgetResponse: + description: Response containing a single widget. + properties: + data: + $ref: "#/components/schemas/WidgetData" + included: + description: Array of user resources related to the widget. + items: + $ref: "#/components/schemas/WidgetIncludedUser" + type: array + required: + - data + type: object + WidgetSearchMeta: + description: Metadata about the search results. + properties: + created_by_anyone_total: + description: Total number of widgets created by anyone. + format: int64 + type: integer + created_by_you_total: + description: Total number of widgets created by the current user. + format: int64 + type: integer + favorited_by_you_total: + description: Total number of widgets favorited by the current user. + format: int64 + type: integer + filtered_total: + description: Total number of widgets matching the current filter criteria. + format: int64 + type: integer + type: object + WidgetType: + description: |- + Widget types that are allowed to be stored as individual records. + This is not a complete list of dashboard and notebook widget types. + enum: + - bar_chart + - change + - cloud_cost_summary + - cohort + - funnel + - geomap + - list_stream + - query_table + - query_value + - retention_curve + - sankey + - sunburst + - timeseries + - toplist + - treemap + example: bar_chart + type: string + x-enum-varnames: + - BAR_CHART + - CHANGE + - CLOUD_COST_SUMMARY + - COHORT + - FUNNEL + - GEOMAP + - LIST_STREAM + - QUERY_TABLE + - QUERY_VALUE + - RETENTION_CURVE + - SANKEY + - SUNBURST + - TIMESERIES + - TOPLIST + - TREEMAP WorkflowData: description: Data related to the workflow. properties: @@ -109866,6 +110133,328 @@ paths: operator: OR permissions: - teams_read + /api/v2/widgets/{experience_type}: + get: + description: Search and list widgets for a given experience type. Supports filtering by widget type, creator, title, and tags, as well as sorting and pagination. + operationId: SearchWidgets + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: Filter widgets by widget type. + in: query + name: filter[widgetType] + schema: + $ref: "#/components/schemas/WidgetType" + - description: Filter widgets by the email handle of the creator. + in: query + name: filter[creatorHandle] + schema: + example: "john.doe@example.com" + type: string + - description: Filter to only widgets favorited by the current user. + in: query + name: filter[isFavorited] + schema: + type: boolean + - description: Filter widgets by title (substring match). + in: query + name: filter[title] + schema: + type: string + - description: Filter widgets by tags. Format as bracket-delimited CSV, e.g. `[tag1,tag2]`. + in: query + name: filter[tags] + schema: + type: string + - description: |- + Sort field for the results. Prefix with `-` for descending order. + Allowed values: `title`, `created_at`, `modified_at`. + in: query + name: sort + schema: + default: "-modified_at" + example: "-modified_at" + type: string + - description: Page number for pagination (0-indexed). + in: query + name: page[number] + schema: + default: 0 + minimum: 0 + type: integer + - description: Number of widgets per page. + in: query + name: page[size] + schema: + default: 50 + maximum: 100 + type: integer + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Search widgets + tags: + - Widgets + x-permission: + operator: OR + permissions: + - cloud_cost_management_read + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_read + post: + description: Create a new widget for a given experience type. + operationId: CreateWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequest" + description: Widget request body. + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Create a widget + tags: + - Widgets + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - cloud_cost_management_write + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_write + /api/v2/widgets/{experience_type}/{uuid}: + delete: + description: Soft-delete a widget by its UUID for a given experience type. + operationId: DeleteWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: The UUID of the widget. + in: path + name: uuid + required: true + schema: + format: uuid + type: string + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Delete a widget + tags: + - Widgets + x-permission: + operator: OR + permissions: + - cloud_cost_management_write + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_write + get: + description: Retrieve a widget by its UUID for a given experience type. + operationId: GetWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: The UUID of the widget. + in: path + name: uuid + required: true + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Get a widget + tags: + - Widgets + x-permission: + operator: OR + permissions: + - cloud_cost_management_read + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_read + put: + description: Update a widget by its UUID for a given experience type. This performs a full replacement of the widget definition. + operationId: UpdateWidget + parameters: + - description: The experience type for the widget. + in: path + name: experience_type + required: true + schema: + $ref: "#/components/schemas/WidgetExperienceType" + - description: The UUID of the widget. + in: path + name: uuid + required: true + schema: + format: uuid + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CreateOrUpdateWidgetRequest" + description: Widget request body. + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/WidgetResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/APIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + summary: Update a widget + tags: + - Widgets + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - cloud_cost_management_write + - generate_log_reports + - manage_log_reports + - product_analytics_saved_widgets_write /api/v2/workflows: post: description: Create a new workflow, returning the workflow ID. This API requires a [registered application key](https://docs.datadoghq.com/api/latest/action-connection/#register-a-new-app-key). Alternatively, you can configure these permissions [in the UI](https://docs.datadoghq.com/account_management/api-app-keys/#actions-api-access). @@ -110716,6 +111305,11 @@ tags: externalDocs: url: https://docs.datadoghq.com/account_management/users name: Users + - description: |- + Create, read, update, and delete saved widgets. Widgets are reusable + visualization components stored independently from any dashboard or notebook, + partitioned by experience type and identified by a UUID. + name: Widgets - description: |- Datadog Workflow Automation allows you to automate your end-to-end processes by connecting Datadog with the rest of your tech stack. Build workflows to auto-remediate your alerts, streamline your incident and security processes, and reduce manual toil. Workflow Automation supports over 1,000+ OOTB actions, including AWS, JIRA, ServiceNow, GitHub, and OpenAI. Learn more in our Workflow Automation docs [here](https://docs.datadoghq.com/service_management/workflows/). externalDocs: diff --git a/features/v2/undo.json b/features/v2/undo.json index 67596e3589cb..c19cdf5452a0 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -6356,6 +6356,47 @@ "type": "safe" } }, + "SearchWidgets": { + "tag": "Widgets", + "undo": { + "type": "safe" + } + }, + "CreateWidget": { + "tag": "Widgets", + "undo": { + "operationId": "DeleteWidget", + "parameters": [ + { + "name": "experience_type", + "source": "experience_type" + }, + { + "name": "uuid", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "DeleteWidget": { + "tag": "Widgets", + "undo": { + "type": "idempotent" + } + }, + "GetWidget": { + "tag": "Widgets", + "undo": { + "type": "safe" + } + }, + "UpdateWidget": { + "tag": "Widgets", + "undo": { + "type": "safe" + } + }, "CreateWorkflow": { "tag": "Workflow Automation", "undo": { diff --git a/features/v2/widgets.feature b/features/v2/widgets.feature new file mode 100644 index 000000000000..54b015711565 --- /dev/null +++ b/features/v2/widgets.feature @@ -0,0 +1,115 @@ +@endpoint(widgets) @endpoint(widgets-v2) +Feature: Widgets + Create, read, update, and delete saved widgets. Widgets are reusable + visualization components stored independently from any dashboard or + notebook, partitioned by experience type and identified by a UUID. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "Widgets" API + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a widget returns "Bad Request" response + Given new "CreateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Create a widget returns "OK" response + Given new "CreateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Delete a widget returns "Bad Request" response + Given new "DeleteWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Delete a widget returns "No Content" response + Given new "DeleteWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Delete a widget returns "Not Found" response + Given new "DeleteWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Get a widget returns "Bad Request" response + Given new "GetWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Get a widget returns "Not Found" response + Given new "GetWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Get a widget returns "OK" response + Given new "GetWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Search widgets returns "Bad Request" response + Given new "SearchWidgets" request + And request contains "experience_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Search widgets returns "OK" response + Given new "SearchWidgets" request + And request contains "experience_type" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a widget returns "Bad Request" response + Given new "UpdateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a widget returns "Not Found" response + Given new "UpdateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/reporting-and-sharing + Scenario: Update a widget returns "OK" response + Given new "UpdateWidget" request + And request contains "experience_type" parameter from "REPLACE.ME" + And request contains "uuid" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"definition": {"title": "My Widget", "type": "bar_chart"}, "tags": []}, "type": "widgets"}} + When the request is sent + Then the response status is 200 OK diff --git a/packages/datadog-api-client/README.md b/packages/datadog-api-client/README.md index a0e55657254b..b66c358ba359 100644 --- a/packages/datadog-api-client/README.md +++ b/packages/datadog-api-client/README.md @@ -464,4 +464,5 @@ apiInstance | Usage Metering | @datadog/datadog-api-client-usage-metering | [README.md](../../services/usage-metering/README.md) | | Users | @datadog/datadog-api-client-users | [README.md](../../services/users/README.md) | | Webhooks Integration | @datadog/datadog-api-client-webhooks-integration | [README.md](../../services/webhooks-integration/README.md) | +| Widgets | @datadog/datadog-api-client-widgets | [README.md](../../services/widgets/README.md) | | Workflow Automation | @datadog/datadog-api-client-workflow-automation | [README.md](../../services/workflow-automation/README.md) | \ No newline at end of file diff --git a/private/bdd_runner/src/support/scenarios_model_mapping.ts b/private/bdd_runner/src/support/scenarios_model_mapping.ts index 9d16596194e2..692344bed1a8 100644 --- a/private/bdd_runner/src/support/scenarios_model_mapping.ts +++ b/private/bdd_runner/src/support/scenarios_model_mapping.ts @@ -11761,6 +11761,93 @@ export const ScenariosModelMappings: { [key: string]: OperationMapping } = { }, operationResponseType: "PermissionsResponse", }, + "WidgetsApi.V2.SearchWidgets": { + experienceType: { + type: "WidgetExperienceType", + format: "", + }, + filterWidgetType: { + type: "WidgetType", + format: "", + }, + filterCreatorHandle: { + type: "string", + format: "", + }, + filterIsFavorited: { + type: "boolean", + format: "", + }, + filterTitle: { + type: "string", + format: "", + }, + filterTags: { + type: "string", + format: "", + }, + sort: { + type: "string", + format: "", + }, + pageNumber: { + type: "number", + format: "", + }, + pageSize: { + type: "number", + format: "", + }, + operationResponseType: "WidgetListResponse", + }, + "WidgetsApi.V2.CreateWidget": { + experienceType: { + type: "WidgetExperienceType", + format: "", + }, + body: { + type: "CreateOrUpdateWidgetRequest", + format: "", + }, + operationResponseType: "WidgetResponse", + }, + "WidgetsApi.V2.GetWidget": { + experienceType: { + type: "WidgetExperienceType", + format: "", + }, + uuid: { + type: "string", + format: "uuid", + }, + operationResponseType: "WidgetResponse", + }, + "WidgetsApi.V2.UpdateWidget": { + experienceType: { + type: "WidgetExperienceType", + format: "", + }, + uuid: { + type: "string", + format: "uuid", + }, + body: { + type: "CreateOrUpdateWidgetRequest", + format: "", + }, + operationResponseType: "WidgetResponse", + }, + "WidgetsApi.V2.DeleteWidget": { + experienceType: { + type: "WidgetExperienceType", + format: "", + }, + uuid: { + type: "string", + format: "uuid", + }, + operationResponseType: "{}", + }, "WorkflowAutomationApi.V2.CreateWorkflow": { body: { type: "CreateWorkflowRequest", diff --git a/services/usage_metering/src/v1/models/HourlyUsageAttributionUsageType.ts b/services/usage_metering/src/v1/models/HourlyUsageAttributionUsageType.ts index 9827a59c2fec..e916428210b4 100644 --- a/services/usage_metering/src/v1/models/HourlyUsageAttributionUsageType.ts +++ b/services/usage_metering/src/v1/models/HourlyUsageAttributionUsageType.ts @@ -84,6 +84,7 @@ export type HourlyUsageAttributionUsageType = | typeof SCA_FARGATE_USAGE | typeof SDS_SCANNED_BYTES_USAGE | typeof SERVERLESS_APPS_USAGE + | typeof SERVERLESS_APPS_APM_USAGE | typeof SIEM_ANALYZED_LOGS_ADD_ON_USAGE | typeof SIEM_INGESTED_BYTES_USAGE | typeof SNMP_USAGE @@ -182,6 +183,7 @@ export const RUM_SESSION_REPLAY_ADD_ON_USAGE = export const SCA_FARGATE_USAGE = "sca_fargate_usage"; export const SDS_SCANNED_BYTES_USAGE = "sds_scanned_bytes_usage"; export const SERVERLESS_APPS_USAGE = "serverless_apps_usage"; +export const SERVERLESS_APPS_APM_USAGE = "serverless_apps_apm_usage"; export const SIEM_ANALYZED_LOGS_ADD_ON_USAGE = "siem_analyzed_logs_add_on_usage"; export const SIEM_INGESTED_BYTES_USAGE = "siem_ingested_bytes_usage"; diff --git a/services/usage_metering/src/v1/models/MonthlyUsageAttributionSupportedMetrics.ts b/services/usage_metering/src/v1/models/MonthlyUsageAttributionSupportedMetrics.ts index 285eaf0cc49c..1256136b4dd8 100644 --- a/services/usage_metering/src/v1/models/MonthlyUsageAttributionSupportedMetrics.ts +++ b/services/usage_metering/src/v1/models/MonthlyUsageAttributionSupportedMetrics.ts @@ -107,6 +107,8 @@ export type MonthlyUsageAttributionSupportedMetrics = | typeof PUBLISHED_APP_PERCENTAGE | typeof SERVERLESS_APPS_USAGE | typeof SERVERLESS_APPS_PERCENTAGE + | typeof SERVERLESS_APPS_APM_USAGE + | typeof SERVERLESS_APPS_APM_PERCENTAGE | typeof SNMP_USAGE | typeof SNMP_PERCENTAGE | typeof UNIVERSAL_SERVICE_MONITORING_USAGE @@ -288,6 +290,8 @@ export const PUBLISHED_APP_USAGE = "published_app_usage"; export const PUBLISHED_APP_PERCENTAGE = "published_app_percentage"; export const SERVERLESS_APPS_USAGE = "serverless_apps_usage"; export const SERVERLESS_APPS_PERCENTAGE = "serverless_apps_percentage"; +export const SERVERLESS_APPS_APM_USAGE = "serverless_apps_apm_usage"; +export const SERVERLESS_APPS_APM_PERCENTAGE = "serverless_apps_apm_percentage"; export const SNMP_USAGE = "snmp_usage"; export const SNMP_PERCENTAGE = "snmp_percentage"; export const UNIVERSAL_SERVICE_MONITORING_USAGE = diff --git a/services/usage_metering/src/v1/models/MonthlyUsageAttributionValues.ts b/services/usage_metering/src/v1/models/MonthlyUsageAttributionValues.ts index b949c3818372..be81d0ce0dd0 100644 --- a/services/usage_metering/src/v1/models/MonthlyUsageAttributionValues.ts +++ b/services/usage_metering/src/v1/models/MonthlyUsageAttributionValues.ts @@ -596,6 +596,14 @@ export class MonthlyUsageAttributionValues { * The total Sensitive Data Scanner usage by tag(s). */ "sdsScannedBytesUsage"?: number; + /** + * The percentage of Serverless Apps APM usage by tag(s). + */ + "serverlessAppsApmPercentage"?: number; + /** + * The total Serverless Apps APM usage by tag(s). + */ + "serverlessAppsApmUsage"?: number; /** * The percentage of Serverless Apps usage by tag(s). */ @@ -1407,6 +1415,16 @@ export class MonthlyUsageAttributionValues { type: "number", format: "double", }, + serverlessAppsApmPercentage: { + baseName: "serverless_apps_apm_percentage", + type: "number", + format: "double", + }, + serverlessAppsApmUsage: { + baseName: "serverless_apps_apm_usage", + type: "number", + format: "double", + }, serverlessAppsPercentage: { baseName: "serverless_apps_percentage", type: "number", diff --git a/services/usage_metering/src/v1/models/TypingInfo.ts b/services/usage_metering/src/v1/models/TypingInfo.ts index dc100820c2af..ba30484556d0 100644 --- a/services/usage_metering/src/v1/models/TypingInfo.ts +++ b/services/usage_metering/src/v1/models/TypingInfo.ts @@ -177,6 +177,7 @@ export const TypingInfo: ModelTypingInfo = { "sca_fargate_usage", "sds_scanned_bytes_usage", "serverless_apps_usage", + "serverless_apps_apm_usage", "siem_analyzed_logs_add_on_usage", "siem_ingested_bytes_usage", "snmp_usage", @@ -287,6 +288,8 @@ export const TypingInfo: ModelTypingInfo = { "published_app_percentage", "serverless_apps_usage", "serverless_apps_percentage", + "serverless_apps_apm_usage", + "serverless_apps_apm_percentage", "snmp_usage", "snmp_percentage", "universal_service_monitoring_usage",