- Added documented validation constraints across the events-to-metrics REST API (
POST,GET, andPUTon/events2metrics/events2metrics/v2;GETandDELETEon/events2metrics/events2metrics/v2/{id};POST /events2metrics/events2metrics/v2/all/execute;GET /events2metrics/labels/v2/cardinalities; andGET /events2metrics/limits/v2). String fields now declareminLength,maxLength, andpattern; integer fields declareminimumandmaximum; and array fields declareminItemsandmaxItems. This covers request and response fields includingname,description,dataSource,permutationsLimit,metricLabels(items includetargetLabel,sourceField),metricFields(items includetargetBaseMetricName,sourceField,aggregations,targetMetricName), and the nested query fields: logs query (lucene,alias,applicationnameFilters,subsystemnameFilters,severityFilters) and spans query (lucene,applicationnameFilters,subsystemnameFilters,actionFilters,serviceFilters), pluscompanyId,labelsLimit, and theididentifiers. Non-breaking; constraints describe the values the service already accepts. - Added
PUT /dataplans/rum-policies/v1to manage RUM TCO policies as an atomic overwrite: it deletes all existing RUM policies and creates the provided list in order, mirroringPUT /dataplans/log-policies/v1andPUT /dataplans/span-policies/v1. The request body holds apoliciesarray (at most 10000 items); each item carries a requiredpolicyobject (requiredname,description, andpriority; optionalapplicationRule,subsystemRule,archiveRetention,priorityOverride,targets, anddisabled) and a requiredrumRulesobject with the same shape aslogRules(aseveritiesarray and an optionaldpxlExpressionstring). The response holds acreateResponsesarray; each item contains the createdpolicy. Non-breaking; additive. - Added a
SOURCE_TYPE_RUMvalue to the TCO policy source-type string enum, which now holdsSOURCE_TYPE_UNSPECIFIED,SOURCE_TYPE_LOGS,SOURCE_TYPE_SPANS, andSOURCE_TYPE_RUM— accepted by thesource_typequery parameter onGET /dataplans/policies/v1(list) and thesourceTypefield in thePOST /dataplans/policies/v1/all/reorderrequest body — and an optionalrumRulesobject to the policy source-type choice (alongsidelogRulesandspanRules) in the policy payload returned byGET /dataplans/policies/v1(list),GET /dataplans/policies/v1/{id}, thePOST/PUT /dataplans/policies/v1responses,PUT /dataplans/rum-policies/v1(replace RUM policies),PUT /dataplans/log-policies/v1(replace log policies),PUT /dataplans/span-policies/v1(replace span policies), andPOST /dataplans/policies/v1/all/test-policies(test policies).rumRuleshas the same shape aslogRules— aseveritiesarray and an optionaldpxlExpressionstring. Non-breaking; additive. - Added an optional
rumRulesobject to the policy source-type choice (alongsidelogRulesandspanRules) in the request bodies ofPOST /dataplans/policies/v1(create),PUT /dataplans/policies/v1(update), andPOST /dataplans/policies/v1/all/forecast-usage(forecast usage), so RUM policies can also be created, updated, and forecast individually. Non-breaking; additive. - Documented existing validation bounds on the alerts and alert-event REST APIs (
minLength/maxLength/patternon strings,minimum/maximumon integers,minItems/maxItemson arrays). The constraints describe validation the service already enforces; values outside them were already rejected, so this is non-breaking. By field:- Alert-definition properties — request bodies of
POST /alerts/alerts/v3andPUT /alerts/alerts/v3, and response bodies ofGET /alerts/alerts/v3andGET /alerts/alerts/v3/{id}:alertDefProperties.namestring 1–512;alertDefProperties.descriptionstring 0–3000;alertDefProperties.groupByKeysarray 0–100 items, each string 1–1024;alertDefProperties.dataSourcesarray 0–1 items, each withdataSpacestring 1–50 anddataSetstring 1–300;alertDefProperties.notificationGroupExcessarray ≤100 items. - Condition / type-definition fields (same request and response bodies):
evaluationDelayMsinteger 0–10800000; metricmetricFilter.promqland analyticsdataprimeQuery.querystring 1–65535; metricforOverPctandminNonNullValuesPctinteger 0–100; logs-rationumeratorAlias/denominatorAliasstring ≤200;noDataPolicy.autoRetireSecondsinteger ≥60. - Notification group & schedule (same bodies): incident-settings/webhook
retriggeringPeriod.minutesinteger 1–10080; scheduleactiveOn.startTime/endTimehours0–23 andminutes0–59;dayOfWeekarray 1–7 items. - Identifiers: the
idpath parameter onGET /alerts/alerts/v3/{id}andDELETE /alerts/alerts/v3/{id}is a UUID string (maxLength: 36, canonical UUID pattern); thealertVersionIdpath parameter onGET /alerts/alerts/v3/version-ids/{alert_version_id}and theAlertDef.alertVersionIdresponse field are 1–36 free-form strings; the responseAlertDef.idis a UUID string 1–36; responseAlertDef.createdTime/updatedTime/lastTriggeredTimestrings ≤64. - Bulk operations:
POST /alerts/alerts/v3/all/deleterequestidsarray 1–100 items, each a UUID string 1–36;PUT /alerts/alerts/v3/all/replacerequestalertDefsToReplace[].ida UUID string 1–36; bulk response id arrays (notFoundIds,deletedIds,skippedIds) ≤1000 UUID-string items. - Pagination (list endpoints): request
pageSizeinteger 0–1000 andpageTokenstring 1–4096; responsealertDefsarray ≤1000 items. - Filter option counts —
GET /alerts/alerts/v3/all/countsresponse: the per-bucketcountintegers (typeCounts[].count,priorityCounts[].count,statusCounts[].count,enabledCounts[].count,entityLabelCounts[].count) are 0–4294967295. - Alert events:
GET /v3/alert-event/{id}idpath parameter free-form string 1–36;GET /v3/alert-event-statsrequestidsarray ≤1000 free-form strings 1–36; responseAlertEvent.alertIda UUID string 1–36, andpermutationId/preGroupingEventId/incidentCorrelationKey/payloadTypestrings ≤256; event-statscount/resolvedCount/triggeredCount/isMutedCountintegers 0–4294967295.
- Alert-definition properties — request bodies of
- Added non-breaking OpenAPI validation metadata to existing views and folders REST payloads; no endpoints, JSON fields, or field requiredness changed. For view payloads in
POST /data-exploration/views/v1/views,PUT /data-exploration/views/v1/views/{id},GET /data-exploration/views/v1/views, andGET /data-exploration/views/v1/views/{id}, the spec now documents bounds foridinteger (1..2147483647, where present),namestring (1..250),searchQuery.querystring (1..65535),filters.filtersarray (1..1000),filters.filters[].namestring (1..65535),timeSelection.quickSelection.captionstring (1..100),timeSelection.quickSelection.secondsinteger (0..4294967295), andtimeSelection.customSelection.fromTime/timeSelection.customSelection.toTimedate-time strings (1..35). The sharedidpath parameter onGET,PUT, andDELETE /data-exploration/views/v1/views/{id}is also documented as integer1..2147483647; theviewsresponse array onGET /data-exploration/views/v1/viewsis documented as0..100000items. For folder payloads inPOST /data-exploration/views/v1/folders,PUT /data-exploration/views/v1/folders,GET /data-exploration/views/v1/folders, andGET /data-exploration/views/v1/folders/{id}, the spec now documentsnamestring bounds (1..100) and thefoldersresponse array bounds (0..100000items). - Added an optional
arcDisplayobject (withvalueArcandthresholdArcbooleans) and an optionalshowMinMaxboolean to the gauge widget and the dynamic-widget gauge visualization inside the dashboard payload. The fields appear in the request body ofPOST /dashboards/dashboards/v1andPUT /dashboards/dashboards/v1, and in the dashboard read responses ofGET /dashboards/dashboards/v1/{dashboard_id}andGET /dashboards/dashboards/v1/slugs/lookup/{slug}. The presence ofarcDisplayindicates the gauge arcs are shown; omitting it hides them. Deprecated theshowInnerArcandshowOuterArcbooleans on both gauges. Non-breaking; omitting the new fields preserves existing behavior. - Added optional
dpxlExpressionstring to the span-rules object (spanRules) in the quota policy payload, mirroring the existingdpxlExpressionon log rules. It appears in the request bodies ofPOST /dataplans/policies/v1(create),PUT /dataplans/policies/v1(update),PUT /dataplans/span-policies/v1(replace span policies), andPOST /dataplans/policies/v1/all/forecast-usage(forecast usage); and in the response payloads ofGET /dataplans/policies/v1/{id},GET /dataplans/policies/v1(list), thePOST/PUT /dataplans/policies/v1responses,PUT /dataplans/span-policies/v1(replace span policies),PUT /dataplans/log-policies/v1(replace log policies), andPOST /dataplans/policies/v1/all/test-policies(test policies). Optional and non-breaking. - Breaking OpenAPI schema change for
/logs/data-setup/v2: in thePOSTrequest body, thes3object is now documented as required alongsideisActive, matching existing server-side validation. In theGETandPOST200 response bodies,target.archiveSpecis now documented as required. This is an OpenAPI contract clarification only; the REST wire behavior is unchanged. - Added optional
histogramBucketUnitstring enum to the dynamic heatmap widget’sheatmapvisualization object. It is accepted in dashboard request widgets forPOST /dashboards/check/v1,POST /dashboards/dashboards/v1, andPUT /dashboards/dashboards/v1, and returned in dashboard response widgets fromGET /dashboards/dashboards/v1/{dashboard_id}andGET /dashboards/dashboards/v1/slugs/lookup/{slug}. Values areHEATMAP_HISTOGRAM_BUCKET_UNIT_UNSPECIFIED,HEATMAP_HISTOGRAM_BUCKET_UNIT_NANOSECONDS,HEATMAP_HISTOGRAM_BUCKET_UNIT_MICROSECONDS,HEATMAP_HISTOGRAM_BUCKET_UNIT_MILLISECONDS,HEATMAP_HISTOGRAM_BUCKET_UNIT_SECONDS,HEATMAP_HISTOGRAM_BUCKET_UNIT_BYTES_IEC,HEATMAP_HISTOGRAM_BUCKET_UNIT_KIBYTES,HEATMAP_HISTOGRAM_BUCKET_UNIT_MIBYTES,HEATMAP_HISTOGRAM_BUCKET_UNIT_GIBYTES,HEATMAP_HISTOGRAM_BUCKET_UNIT_BYTES,HEATMAP_HISTOGRAM_BUCKET_UNIT_KBYTES,HEATMAP_HISTOGRAM_BUCKET_UNIT_MBYTES, andHEATMAP_HISTOGRAM_BUCKET_UNIT_GBYTES. Non-breaking; omitting it preserves existing behavior. - Added documented validation constraints across the dashboards REST API:
POST /dashboards/check/v1;POSTandPUTon/dashboards/dashboards/v1;GETandDELETEon/dashboards/dashboards/v1/{dashboard_id};GET /dashboards/dashboards/v1/catalog/list;GET /dashboards/dashboards/v1/slugs/lookup/{slug};PUT /dashboards/dashboards/v1/{dashboard_id}/default;POST /dashboards/dashboards/v1/{dashboard_id}/folder;GET,POST, andPUTon/dashboards/folders/v1;GETandDELETEon/dashboards/folders/v1/{folder_id}; andPUTandDELETEon/dashboards/pinned/v1/{dashboard_id}. String, array, and integer fields throughout the dashboard, folder, and widget request and response payloads now declareminLength/maxLength/pattern,minItems/maxItems, andminimum/maximumlimits. Specifically:- Dashboard identifiers are 21-character strings: the
dashboard_idpath parameter onPUT /dashboards/dashboards/v1/{dashboard_id}/defaultandPOST /dashboards/dashboards/v1/{dashboard_id}/folder, thedashboardIdin thePOST /dashboards/dashboards/v1response, each catalog item’sidin theGET /dashboards/dashboards/v1/catalog/listresponse, and the dashboard body’sid(string) all require exactly 21 characters. - Folder and annotation identifiers are UUID strings (36 characters, canonical UUID pattern): a folder’s
idandparentIdand thePOST /dashboards/folders/v1response’sfolderId, and each dashboard annotation’sidtogether with its actionidandwidgetId. - Annotation, folder, and variable
nameand variabledisplayNamestrings are limited to 1–100 characters. - Annotation-source
messageTemplatestrings are limited to 0–1000 characters, and theirlabelFields/labelsarrays to at most 10 items. - A folder
path’ssegmentsarray holds 1–2 items, each a 1–100-character string. - The
accessPolicystring in theGET /dashboards/dashboards/v1/{dashboard_id}andGET /dashboards/dashboards/v1/slugs/lookup/{slug}responses accepts an empty string (minLength: 0). - The line chart’s
queryDefinitionsarray declaresminItems: 1. Widget, section, row, filter, and variableidfields are UUID strings (36 characters, canonical UUID pattern). - The
slugpath parameter onGET /dashboards/dashboards/v1/slugs/lookup/{slug}is limited to 1–255 characters; therequest_idquery parameter onDELETE /dashboards/dashboards/v1/{dashboard_id},GETandDELETEon/dashboards/folders/v1/{folder_id}, andPUTandDELETEon/dashboards/pinned/v1/{dashboard_id}is limited to 1–128 characters.
- Dashboard identifiers are 21-character strings: the
- The data-usage query API is now public: the following endpoints now appear in the public OpenAPI spec and customer-facing docs.
POST /dataplan/data-usage/v1/queryreturns billable usage aggregated into daily or hourly buckets and supports filtering and grouping by labels.GET /dataplan/data-usage/v1/capabilitiesreturns the supported labels, measurement kinds, units, and per-request limits. Both require thedata-usage:Readpermission. Additive; no request or response shapes changed. - Added documented validation constraints on the recording rules REST API (
POST,GET,PUT, andDELETEon/recording-rules/recording-rules/v1). Request and response fields now declare string length and pattern limits, integer ranges, and array size bounds; nestedgroups[].name,groups[].rules[].record, andgroups[].rules[].exprare required on create and update, andidis required on create responses and on items returned by list and get. Theidpath parameter on get, update, and delete is limited to 1–128 characters. Non-breaking. - Added
GET /notifications/notification-center/v1/entity-types/{entity_type}/attachment-types(List Entity Type Attachment Types). Returns all supported attachment types for the given entity type. The response body containssupportedAttachmentTypes(array, 0–100 items), where each item is{ "name": string, "defaultEnabled": boolean }—nameis the attachment type identifier (e.g."alert_graph") anddefaultEnabledindicates whether the type is included by default when the policy isAUTO. Non-breaking; new endpoint. - Added the time-to-update KPI to Cases. The
KPITypestring enum now containsKPI_TYPE_UNSPECIFIED,KPI_TYPE_TIME_TO_ACKNOWLEDGE,KPI_TYPE_TIME_TO_RESOLVE, andKPI_TYPE_TIME_TO_UPDATE.caseLifecycle.kpi.thresholds[].typein the request bodies forPOST /cases/cases/case-settings/v1/configsandPATCH /cases/cases/case-settings/v1/configs/{id}.caseSettings.caseLifecycle.kpi.thresholds[].typein the response bodies fromPOST /cases/cases/case-settings/v1/configs,GET /cases/cases/case-settings/v1/configs/{id},PATCH /cases/cases/case-settings/v1/configs/{id}, andGET /cases/cases/case-settings/v1/configs:getActive; andcaseLifecycle.kpi.thresholds[].typein the response body fromGET /cases/cases/case-settings/v1/configs:getSystemDefaults.case.kpiBreaches.breachedKpis[].kpiTypein the response bodies fromGET /cases/cases/v1/{id},PUT /cases/cases/v1/{id},PUT /cases/acknowledged/v1/{id},DELETE /cases/acknowledged/v1/{id},POST /cases/assigned/v1/{id},DELETE /cases/assigned/v1/{id},POST /cases/closed/v1/{id},POST /cases/indicators/v1/get,PUT /cases/priority-override/v1/{id},DELETE /cases/priority-override/v1/{id}, andPUT /cases/resolved/v1/{id}.cases[].kpiBreaches.breachedKpis[].kpiTypein the response bodies fromPOST /cases/cases/v1,POST /cases/acknowledged/v1,PUT /cases/assigned/v1,DELETE /cases/assigned/v1,POST /cases/closed/v1,POST /cases/priority-override/v1,DELETE /cases/priority-override/v1, andPOST /cases/resolved/v1.event.eventData.kpiBreached.kpiTypein the response bodies fromPOST /cases/cases/v1/{case_id}/comments,GET /cases/events/v1/{event_id}, andPUT /cases/events/v1/{event_id}/comments; andevents[].eventData.kpiBreached.kpiTypein the response body fromGET /cases/cases/v1/{case_id}/events.- The
KPIFilterstring enum used by optionalfilters.breached[]arrays in the request bodies forPOST /cases/cases/v1andPOST /cases/filter-values/v1now containsKPI_FILTER_UNSPECIFIED,KPI_FILTER_TIME_TO_ACKNOWLEDGE_BREACHED,KPI_FILTER_TIME_TO_RESOLVE_BREACHED,KPI_FILTER_NOT_BREACHED, andKPI_FILTER_TIME_TO_UPDATE_BREACHED. Non-breaking.
- Error responses (
400,401,403,404,409,500) across the Management API now document theirapplication/jsonbody with anErrorschema, where previously the body carried no schema.Erroris{ "code": integer, "message": string }—codeis the HTTP status code (100–599) andmessageis a human-readable description. Response-only; non-breaking. PUT /aaa/custom-roles/v1(create custom role) no longer documents a201response; a successful create returns200with{ "id": integer }— the new role’s identifier.DELETE /aaa/custom-roles/v1/{role_id}(delete custom role)204response no longer declares anapplication/jsonbody, matching its no-content semantics.- Added explicit validation bounds to request fields and response arrays across the notification-center REST APIs (
/notifications/notification-center/v1/connectors,/notifications/notification-center/v1/presets,/notifications/notification-center/v1/routers). Specifics:- The
idpath parameter onGET /notifications/notification-center/v1/connectors/{id},DELETE /notifications/notification-center/v1/connectors/{id},GET /notifications/notification-center/v1/presets/{id},DELETE /notifications/notification-center/v1/presets/custom/{id},POST /notifications/notification-center/v1/presets/custom/{id}/default,POST /notifications/notification-center/v1/presets/{id}/default/apply,GET /notifications/notification-center/v1/routers/{id}, andDELETE /notifications/notification-center/v1/routers/{id}now hasminLength: 1,maxLength: 128, and pattern^[a-zA-Z0-9][a-zA-Z0-9_-]*$. - String request fields including
name,id,connectorId,presetId,payloadType,fieldName,template, anddescriptionin the request bodies ofPOST /notifications/notification-center/v1/connectors,PUT /notifications/notification-center/v1/connectors,POST /notifications/notification-center/v1/presets:createCustom,PUT /notifications/notification-center/v1/presets:replaceCustom,POST /notifications/notification-center/v1/routers,PUT /notifications/notification-center/v1/routers, and related:test/:testConfigendpoints now haveminLength,maxLength, andpatternin the spec. - Response arrays on
GET /notifications/notification-center/v1/connectors/all/list,GET /notifications/notification-center/v1/connectors/all/summaries,GET /notifications/notification-center/v1/presets,GET /notifications/notification-center/v1/routers, andGET /notifications/notification-center/v1/routers/all/summariesnow havemaxItemsbounds.
- The
- Added a Microsoft Teams actor variant to case event actors. The
microsoftTeamsactor carriesteamsUserId(string),displayName(string), optionaluserEmail(string), and optionalcoralogixUserId(string, UUID). It appears in theactorfield of events returned byGET /cases/cases/v1/{case_id}/events, in theeventfield of responses fromPOST /cases/cases/v1/{case_id}/comments,GET /cases/events/v1/{event_id}, andPUT /cases/events/v1/{event_id}/comments. Response-only; non-breaking. - Added a
microsoftTeamsresolver variant toresolvedByin theResolutionDetailsobject in case responses. The variant is an empty marker object indicating the case was resolved through a Microsoft Teams connector. It appears wherever acaseobject is returned:GET /cases/cases/v1/{id},PUT /cases/cases/v1/{id},POST /cases/cases/v1(list);PUT /cases/acknowledged/v1/{id},DELETE /cases/acknowledged/v1/{id},POST /cases/acknowledged/v1(bulk);POST /cases/assigned/v1/{id},DELETE /cases/assigned/v1/{id},PUT /cases/assigned/v1(bulk assign),DELETE /cases/assigned/v1(bulk unassign);POST /cases/closed/v1/{id},POST /cases/closed/v1(bulk);POST /cases/indicators/v1/get;PUT /cases/priority-override/v1/{id},DELETE /cases/priority-override/v1/{id},POST /cases/priority-override/v1(bulk set),DELETE /cases/priority-override/v1(bulk clear);PUT /cases/resolved/v1/{id},POST /cases/resolved/v1(bulk). Response-only; non-breaking.
- Added optional
timeBucketMsstring to the request body ofPOST /dataplans/policies/v1/all/forecast-usage(forecast TCO policy usage). When set, the forecast is bucketed into intervals of the given millisecond width. Non-breaking; omitting it preserves existing behavior. - Added optional
usageBucketsarray to the response ofPOST /dataplans/policies/v1/all/forecast-usage(forecast TCO policy usage). Each item is{ "bucketStartMs": string, "bytes": string }, wherebucketStartMsis the bucket window start in epoch milliseconds andbytesis the matched bytes within that bucket. Populated only whentimeBucketMsis set on the request; otherwise empty. Non-breaking;estimatedBytesis unchanged.
- Added company model pricing REST API under
/ai/model-pricing/v3(company resolved from auth context; non-breaking, new endpoints).GET /ai/model-pricing/v3returns{ "pricing": { "id": string (UUID), "companyId": string, "prices": object } }wherepricesis keyed by model name and each value is{ "inputPricePerMillionTokens": number, "outputPricePerMillionTokens": number, "cacheReadPricePerMillionTokens": number, "cacheWritePricePerMillionTokens": number }(USD per one million tokens).PUT /ai/model-pricing/v3accepts request body{ "prices": object (required) }with the same per-model value shape as a full replacement map and returns{ "pricing": { "id": string (UUID), "companyId": string, "prices": object } }.DELETE /ai/model-pricing/v3returns{ "id": string (UUID) }. - Added
CONNECTOR_TYPE_MICROSOFT_TEAMSto theconnectorTypeenum in the cases connector type schema. The value appears inconnectorTypeFiltersin the request body ofPOST /cases/cases/v1(list cases) andPOST /cases/filter-values/v1, and in theconnectorobject within delivery attempts in the response ofPOST /cases/notifications/v1/deliveries. Non-breaking. - Added read-only
resolvedConnectorConfigfield to theConnectorandConnectorSummaryresponse schemas in the notification-center connectors API. The field exposes the full effective connector configuration including backend auto-resolved values (e.g. a Slack integration ID). It is response-only and ignored on create/replace request bodies. It appears inConnectorresponses fromPOST /notifications/notification-center/v1/connectors(Create),PUT /notifications/notification-center/v1/connectors(Replace),GET /notifications/notification-center/v1/connectors/{id}(Get),GET /notifications/notification-center/v1/connectors(List), andGET /notifications/notification-center/v1/connectors/all/list(BatchGet); and inConnectorSummaryresponses fromGET /notifications/notification-center/v1/connectors/all/summaries(BatchGetConnectorSummaries) andGET /notifications/notification-center/v1/connectors/list/summaries(ListConnectorSummaries). Non-breaking. - Added optional
layoutColumnsinteger to dashboard widgets in the request bodies forPOST /dashboards/check/v1,POST /dashboards/dashboards/v1, andPUT /dashboards/dashboards/v1, and in the response payloads fromGET /dashboards/dashboards/v1/{dashboard_id}andGET /dashboards/dashboards/v1/slugs/lookup/{slug}. Non-breaking; omitting it preserves existing layout behavior. - Added
POST /cases/indicators/v1/getto return acaseobject for a source indicator. The request body supports aprometheusAlertobject with requiredfingerprintstring andstartedAtdate-time string. Non-breaking. - Added
minimum: 0to the optionalthresholdnumber in AI evaluation payloads: request bodies forPOST /ai/evaluations/v3andPATCH /ai/evaluations/v3/{id}, and response payloads fromGET /ai/evaluations/v3,GET /ai/evaluations/v3/{id},POST /ai/evaluations/v3, andPATCH /ai/evaluations/v3/{id}. Non-breaking; it documents the existing inclusive lower bound. - Added optional
genericIndicatorsarray undercaseIndicatorsin the case response payloads returned byGET /cases/cases/v1/{id},PUT /cases/cases/v1/{id}, and the list response fromPOST /cases/cases/v1. - Added optional
indicatorTypesarray to thefiltersobject in the request body forPOST /cases/cases/v1, allowing callers to filter the case list by indicator type. - Added a
MICROSOFT_TEAMSvalue to the connector type enum in the connectors payload (POST/PUT/notifications/notification-center/v1/connectors), enabling notification routing to Microsoft Teams. - Added
POST /dashboards/check/v1for validating a dashboard definition or an existing dashboard by ID without persisting changes. The response contains anissuesarray; each issue carriesseverity(enum:SEVERITY_UNSPECIFIED,SEVERITY_ERROR,SEVERITY_WARNING),message(string), andlocation(string, RFC 6901 JSON Pointer). The request body accepts either adashboardobject ordashboardId(string), and an optionalrequestId(string). Non-breaking; the endpoint is additive. - Added the AI Center v3 REST API for managing AI applications and AI evaluations:
- AI applications —
GET /ai/applications/v3(list),GET /ai/applications/v3/{id}(get),DELETE /ai/applications/v3/{id}(delete). - AI evaluations —
POST /ai/evaluations/v3(create),GET /ai/evaluations/v3(list),GET /ai/evaluations/v3/{id}(get),PATCH /ai/evaluations/v3/{id}(update),DELETE /ai/evaluations/v3/{id}(delete), andGET /ai/evaluation-counts/v3/per-type(counts per evaluation type). - Custom evaluations —
POST /ai/custom-evaluations/v3(create),GET /ai/custom-evaluations/v3(list),PATCH /ai/custom-evaluations/v3/{id}(update),DELETE /ai/custom-evaluations/v3/{id}(delete),GET /ai/custom-evaluations/v3/by-application/{application_id}(list for an application), andPOST/DELETE /ai/custom-evaluations/v3/{id}/applications/{application_id}(link / unlink a custom evaluation to an application).
- AI applications —
- Added two analytics alert types to the alert payload, which appears in the request and/or response of the alert-definition endpoints:
POST /alerts/alerts/v3(request and response),PUT /alerts/alerts/v3(request and response),PUT /alerts/alerts/v3/all/replace(request and response),GET /alerts/alerts/v3(response),GET /alerts/alerts/v3/{id}(response), andGET /alerts/alerts/v3/version-ids/{alert_version_id}(response). The alert type-definition object gains ananalyticsImmediatevariant (fires when a DataPrime query returns a result) and ananalyticsThresholdvariant (fires when a numeric result column violates a threshold). Both carry adataprimeQueryobject,useRowsAsPermutations(boolean),evaluationDelayMs(integer),noDataPolicy(object), andtimeframeMinutes(integer);analyticsThresholdadditionally carries arulesarray (1–5 items), atargetColumn(string), and anoperatorenum (ANALYTICS_THRESHOLD_OPERATOR_MORE_THAN_OR_UNSPECIFIED,ANALYTICS_THRESHOLD_OPERATOR_LESS_THAN,ANALYTICS_THRESHOLD_OPERATOR_MORE_THAN_OR_EQUALS,ANALYTICS_THRESHOLD_OPERATOR_LESS_THAN_OR_EQUALS,ANALYTICS_THRESHOLD_OPERATOR_EQUALS). Thetypeenum on the same payload gainsALERT_DEF_TYPE_ANALYTICS_IMMEDIATEandALERT_DEF_TYPE_ANALYTICS_THRESHOLD. Optional and non-breaking. - Breaking: Removed the
Extension testing serviceREST API:POST /integrations/testing/v1/extensions/initialize,DELETE /integrations/testing/v1/extensions, andPOST /integrations/testing/v1/extensions. These operations are no longer available. - Added an optional
ollyAnalysisobject to theCaseschema in case responses under/cases/cases/v1. Reports the result of an automated Olly analysis attached to a case (status, optional payload, completion timestamp). Response-only, non-breaking.
- A path parameter shared by multiple operations on the same path is now declared once at the path level instead of being repeated on each operation. Purely structural and non-breaking — the same parameters apply to the same operations, so the request contract is unchanged.
- Added optional
useDataTimeRangeboolean to the line-chart and time-series-lines widgets in the dashboard payload under/dashboards/dashboards/v1. Whentrue, the widget derives its time window from the returned data instead of the dashboard time range — useful for time-shifted DataPrime queries (e.g.addTime($m.timestamp, 14days)) whose output timestamps fall outside the dashboard’s selected window. Optional and non-breaking; omitting it preserves existing behavior. - Breaking (spec contract): Integer fields that carry 64-bit values are now declared as
type: stringwith a digitpattern(^[0-9]+$unsigned,^-?[0-9]+$signed) andminLength: 1/maxLength: 20, instead of as numbers. This matches the actual JSON wire format — servers already emit and accept these values as quoted strings — so there is no runtime behavior change; only the declared type in the spec changes. - Array schemas now declare
minItems: 0(on every array, regardless of item type) and unsigned integer fields declareminimum: 0by default in the spec. Additive and non-breaking (least-restrictive constraints); no runtime behavior change. - Added optional
dataspacestring to the policy target in the log, span, and generic TCO policy payloads (/dataplans/log-policies/v1,/dataplans/span-policies/v1,/dataplans/policies/v1), request and response. A free-form identifier for the target’s dataspace, mirroringdataset. Non-breaking. - Added optional
priority(enum:PRIORITY_TYPE_UNSPECIFIED,PRIORITY_TYPE_BLOCK,PRIORITY_TYPE_LOW,PRIORITY_TYPE_MEDIUM,PRIORITY_TYPE_HIGH),priorityOverride(object), andarchiveRetention(object with anidstring) to the policy target in the same log/span/generic policy payloads, request and response. Optional in the spec; server validation determines required semantics. Non-breaking. - 46 PUT/POST request bodies across the aaa, alerts, cases, dashboards, data-exploration, dataengine, dataplan(s), enrichment-rules, events2metrics, incidents, logs, metrics, and slo APIs are now declared
requiredin the spec. Non-breaking — clients were already required to send these bodies; the spec now reflects it. - Added a PagerDuty actor variant to case event actors, returned at
GET /cases/cases/v1/{case_id}/events. ThepagerDutyactor carriespagerDutyUserId(string),displayName(string), optionaluserEmail(string), and optionalcoralogixUserId(string, UUID). Response-only; non-breaking. - Removed the optional
sourcestring from the APM-database impacted-entity in case responses under/cases/cases/v1. The field had no consumers. - Added optional
accessPolicystring to the dashboard create/replace request bodies (POST/PUT /dashboards/dashboards/v1) and the dashboard get responses (GET /dashboards/dashboards/v1/{dashboard_id},GET /dashboards/dashboards/v1/slugs/lookup/{slug}), letting callers read and write a per-dashboard PBAC access policy (opaque JSON string). On create/replace a non-empty value sets the policy; omitting it leaves the policy unchanged. Non-breaking. - Added a PromQL variant to the dashboard variable query source in the dashboard payload under
/dashboards/dashboards/v1. Variables can now be sourced from a PromQL query in addition to metric name, label name, and label value sources. ThepromqlQueryobject carries the query string and an optionalpromqlQueryTypeenum (PROM_QL_QUERY_TYPE_UNSPECIFIED,PROM_QL_QUERY_TYPE_RANGE,PROM_QL_QUERY_TYPE_INSTANT) to opt into range queries. Non-breaking. - Added
resolvedValues(array of strings) to the SLO ownership tag in the SLO payload under/slo/slos/v1, request and response. A flat, deduplicated union of the tag’s static values and the values resolved from its label keys (empties excluded), giving a single searchable list regardless of source. Non-breaking. - Added Prometheus Alert Manager support to the cases responses. The case payload returned by
GET /cases/cases/v1/{id}and the list atPOST /cases/cases/v1gains aprometheusAlertIndicatorsarray (an array of Prometheus alert indicator objects, undercaseIndicators) listing the Prometheus alerts contributing to the case, and the case events list atGET /cases/cases/v1/{case_id}/eventsgains aprometheusAlertManagerevent-actor variant. Response-only; non-breaking. - Breaking: moved two
/integrations/*endpoints to resolve OpenAPI path ambiguities. The legacy paths have been removed; clients must switch over.POST /integrations/contextual-data/v1/{integration_id}/test→POST /integrations/contextual-data/v1/test/{integration_id}.GET /integrations/extensions/v1/{id}→GET /integrations/extensions/v1/catalog/{id}.
- Added
allocationType(enum:QUOTA_ALLOCATION_TYPE_UNSPECIFIED,QUOTA_ALLOCATION_TYPE_PERCENTAGE,QUOTA_ALLOCATION_TYPE_LOCKED_UNITS) andcxManaged(boolean, response-only) to the quota allocation rule in the quota-rules payload under/dataplan/quota-rules/v1, letting quota rules distinguish percentage allocation from locked units and identify Coralogix-managed rules. Non-breaking. - Added
GET /cases/cases/v1/{case_id}/deep-linksfor retrieving deep-link URLs from a case to related product views. - Added a
PAGERDUTY_INCIDENTSvalue to the connector type enum in the connectors payload (POST/PUT /notifications/notification-center/v1/connectors), enabling notification routing to PagerDuty via the Incidents API. Non-breaking. - Breaking: removed the deprecated team-configs endpoints. The following paths have been deleted; clients must migrate to the equivalent case-settings paths under
/cases/cases/case-settings/v1/configs(see the 2026-05-19 entry).POST /cases/cases/team-configs/v1/configsGET /cases/cases/team-configs/v1/configs/{id}PATCH /cases/cases/team-configs/v1/configs/{id}DELETE /cases/cases/team-configs/v1/configs/{id}GET /cases/cases/team-configs/v1/configs:getActiveGET /cases/cases/team-configs/v1/configs:getSystemDefaults
- Cases API is now public: the following endpoints now appear in the public OpenAPI spec and customer-facing docs.
GET /cases/cases/v1/{id}POST /cases/cases/v1PUT /cases/cases/v1/{id}PUT /cases/priority-override/v1/{id}DELETE /cases/priority-override/v1/{id}POST /cases/assigned/v1/{id}DELETE /cases/assigned/v1/{id}PUT /cases/acknowledged/v1/{id}DELETE /cases/acknowledged/v1/{id}POST /cases/closed/v1/{id}PUT /cases/resolved/v1/{id}POST /cases/filter-values/v1PUT /cases/assigned/v1DELETE /cases/assigned/v1POST /cases/acknowledged/v1POST /cases/resolved/v1POST /cases/closed/v1POST /cases/priority-override/v1DELETE /cases/priority-override/v1GET /cases/grouping-keys/v1
- Added a new public case-settings API for managing team-level case settings. It supersedes the team-configs endpoints, which are now deprecated and will be removed in a future release — clients should migrate to the new paths below.
POST /cases/cases/case-settings/v1/configsGET /cases/cases/case-settings/v1/configs/{id}PATCH /cases/cases/case-settings/v1/configs/{id}DELETE /cases/cases/case-settings/v1/configs/{id}GET /cases/cases/case-settings/v1/configs:getActiveGET /cases/cases/case-settings/v1/configs:getSystemDefaults
- Breaking: moved five
/notifications/notification-center/v1/presets/*endpoints to resolve OpenAPI path ambiguities with/presets/{id}and/presets/{id}/default. The legacy paths have been removed; clients must switch over.POST /notifications/notification-center/v1/presets/custom→POST /notifications/notification-center/v1/presets:createCustom.PUT /notifications/notification-center/v1/presets/custom→PUT /notifications/notification-center/v1/presets:replaceCustom.POST /notifications/notification-center/v1/presets/{id}/default→POST /notifications/notification-center/v1/presets/{id}/default/apply. (This also resolves the/notifications/notification-center/v1/presets/custom/{id}collision, soDELETE /notifications/notification-center/v1/presets/custom/{id}keeps its existing path.)GET /notifications/notification-center/v1/presets/summaries→GET /notifications/notification-center/v1/presets:getDefaultSummary.POST /notifications/notification-center/v1/presets/tests→POST /notifications/notification-center/v1/presets:test.
- Breaking: moved two cases team-config read endpoints to resolve OpenAPI path ambiguities with
/cases/cases/team-configs/v1/configs/{id}. The legacy paths have been removed; clients must switch over.GET /cases/cases/team-configs/v1/configs/active→GET /cases/cases/team-configs/v1/configs:getActive.GET /cases/cases/team-configs/v1/configs/system-defaults→GET /cases/cases/team-configs/v1/configs:getSystemDefaults.
- Breaking: moved three
/aaa/*endpoints to resolve OpenAPI path ambiguities. The legacy paths have been removed; clients must switch over.GET /aaa/api-keys/v3/list→GET /aaa/api-keys/v3/list/all.GET /aaa/team-groups/v2/{group_id}/users→GET /aaa/team-groups/v2/{group_id}/users/list.PATCH /aaa/teams/v2/{team_id}/members/status→PATCH /aaa/teams/v2/{team_id}/members:updateStatuses.
- Added
POST /dataplans/policies/v1/all/forecast-usage, which forecasts the usage in bytes of a draft TCO policy based on the bytes matched by its filter rules over a given time window. - Breaking: moved two dashboards read endpoints to new REST paths to resolve OpenAPI path ambiguities with
/dashboards/dashboards/v1/{dashboard_id}. The legacy paths have been removed; clients must switch over.GET /dashboards/dashboards/v1/catalog→GET /dashboards/dashboards/v1/catalog/list.GET /dashboards/dashboards/v1/slugs/{slug}→GET /dashboards/dashboards/v1/slugs/lookup/{slug}.
- Added optional
targets(array, 1–10 items) to enrichments in the enrichment-rules payload under/enrichment-rules/enrichment-rules/v1, request and response. Each entry is an object with adatasetstring, scoping the enrichment to specific datasets. Non-breaking. - Added optional
roleArnandexternalIdstrings to the S3 target spec in the archive setup payload under/logs/data-setup/v2, request and response, supportingsts:AssumeRole+ external-ID cross-account S3 access. Non-breaking. - Added Cases KPI support across two cases payloads. Team-level KPI thresholds appear in the case-settings config under
caseLifecycle.kpi(an object whosethresholdsarray holds the per-KPI settings) — written onPOST /cases/cases/case-settings/v1/configsandPATCH /cases/cases/case-settings/v1/configs/{id}, and read onGET /cases/cases/case-settings/v1/configs/{id}(and the:getActive/:getSystemDefaultsreads). Case-level breach data appears in the case payload askpiBreaches(an object with abreachedKpisarray; each entry carrieskpiType,casePriority,breachedAt, andbreachStatus) in the case payload returned byGET /cases/cases/v1/{id}and the list atPOST /cases/cases/v1, response-only. Non-breaking. - Added optional
metadataobject (string-to-string map) to the success result of notification test endpoints (response), e.g.POST /notifications/notification-center/v1/connectors:test. Non-breaking. - Added optional
description(string),dpxlFilter(string), andurlFields(array) to the action payload under/actions/actions/v2, request and response. EachurlFieldsentry is an object withname(string) andrequired(boolean). Non-breaking.