diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index acd63e70a66..42d8846893f 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -31063,9 +31063,17 @@ components: type: string values: description: |- - Column values in row order. The element type matches the column's `type`; - for example a `VARCHAR` column carries strings, a `TIMESTAMP` column carries - Unix-millisecond integers. `null` is allowed for missing values. + Column values in row order, one entry per result row. The element type + follows the column's `type`. The following serialization rules should be + taken into account: + + - `BIGINT` values are encoded as JSON numbers in the signed 64-bit integer range. + - `DECIMAL` values are encoded as JSON numbers with 64-bit double precision. + - `TIMESTAMP` and `DATE` values are encoded as Unix-millisecond integers; a + `DATE` resolves to midnight UTC. + - `JSON` values are returned as a JSON-encoded string. + + `null` is allowed for any column type where a value is missing. example: - web-store - checkout @@ -55956,6 +55964,10 @@ components: example: "2024-01-15T10:30:00Z" format: date-time type: string + curation_enabled: + description: Whether automatic dataset curation is enabled for this configuration. + example: true + type: boolean evp_query: description: Query that selects the spans the patterns run analyzes. example: "@ml_app:support-bot" @@ -56028,6 +56040,10 @@ components: example: "2024-01-15T10:30:00Z" format: date-time type: string + curation_enabled: + description: Whether automatic dataset curation is enabled for this configuration. + example: true + type: boolean evp_query: description: Query that selects the spans the patterns run analyzes. example: "@ml_app:support-bot" @@ -56185,6 +56201,13 @@ components: description: The ID of an existing configuration to update. If omitted, a new configuration is created. example: "a7c8d9e0-1234-5678-9abc-def012345678" type: string + curation_enabled: + description: |- + When true, Datadog automatically provisions a managed project and dataset + (`{pattern-name}-pattern-curated`) to receive suggested interactions after + each run. Defaults to true for new patterns. + example: true + type: boolean evp_query: description: Query that selects the spans the patterns run analyzes. example: "@ml_app:support-bot" @@ -135602,9 +135625,6 @@ paths: summary: Execute a tabular DDSQL query tags: - DDSQL - x-unstable: |- - **Note**: This endpoint is in preview and is subject to change. - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/ddsql/query/tabular/fetch: post: description: |- @@ -135713,9 +135733,6 @@ paths: summary: Fetch the result of a DDSQL query tags: - DDSQL - x-unstable: |- - **Note**: This endpoint is in preview and is subject to change. - If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/deletion/data/{product}: post: description: Creates a data deletion request by providing a query and a timeframe targeting the proper data. @@ -154572,6 +154589,7 @@ paths: attributes: configs: - created_at: "2024-01-15T10:30:00Z" + curation_enabled: true evp_query: "@ml_app:support-bot" hierarchy_depth: 2 id: a7c8d9e0-1234-5678-9abc-def012345678 @@ -154651,6 +154669,7 @@ paths: data: attributes: created_at: "2024-01-15T10:30:00Z" + curation_enabled: true evp_query: "@ml_app:support-bot" hierarchy_depth: 2 name: Support chatbot topics @@ -154687,6 +154706,12 @@ paths: schema: $ref: "#/components/schemas/JSONAPIErrorResponse" description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict "429": $ref: "#/components/responses/TooManyRequestsResponse" "500": @@ -154718,6 +154743,7 @@ paths: data: attributes: created_at: "2024-01-15T10:30:00Z" + curation_enabled: true evp_query: "@ml_app:support-bot" hierarchy_depth: 2 name: Support chatbot topics diff --git a/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.java b/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.java index bba7e0b0c08..571eba33b74 100644 --- a/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.java +++ b/examples/v2/llm-observability/UpsertLLMObsPatternsConfig.java @@ -23,6 +23,7 @@ public static void main(String[] args) { new LLMObsPatternsConfigUpsertRequestAttributes() .accountId("1000000001") .configId("a7c8d9e0-1234-5678-9abc-def012345678") + .curationEnabled(true) .evpQuery("@ml_app:support-bot") .hierarchyDepth(2) .integrationProvider("openai") diff --git a/src/main/java/com/datadog/api/client/ApiClient.java b/src/main/java/com/datadog/api/client/ApiClient.java index 471a474d129..2c00c9b0dcb 100644 --- a/src/main/java/com/datadog/api/client/ApiClient.java +++ b/src/main/java/com/datadog/api/client/ApiClient.java @@ -1004,8 +1004,6 @@ public class ApiClient { put("v2.getAllDatasets", false); put("v2.getDataset", false); put("v2.updateDataset", false); - put("v2.executeDdsqlTabularQuery", false); - put("v2.fetchDdsqlTabularQuery", false); put("v2.cancelDataDeletionRequest", false); put("v2.createDataDeletionRequest", false); put("v2.getDataDeletionRequests", false); diff --git a/src/main/java/com/datadog/api/client/v2/api/DdsqlApi.java b/src/main/java/com/datadog/api/client/v2/api/DdsqlApi.java index 9c5cd2e2348..5576e4dbf42 100644 --- a/src/main/java/com/datadog/api/client/v2/api/DdsqlApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/DdsqlApi.java @@ -97,13 +97,6 @@ public CompletableFuture executeDdsqlTabularQueryAsyn */ public ApiResponse executeDdsqlTabularQueryWithHttpInfo( DdsqlTabularQueryRequest body) throws ApiException { - // Check if unstable operation is enabled - String operationId = "executeDdsqlTabularQuery"; - if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { - apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); - } else { - throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); - } Object localVarPostBody = body; // verify the required parameter 'body' is set @@ -146,16 +139,6 @@ public ApiResponse executeDdsqlTabularQueryWithHttpIn */ public CompletableFuture> executeDdsqlTabularQueryWithHttpInfoAsync(DdsqlTabularQueryRequest body) { - // Check if unstable operation is enabled - String operationId = "executeDdsqlTabularQuery"; - if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { - apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); - } else { - CompletableFuture> result = new CompletableFuture<>(); - result.completeExceptionally( - new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); - return result; - } Object localVarPostBody = body; // verify the required parameter 'body' is set @@ -252,13 +235,6 @@ public CompletableFuture fetchDdsqlTabularQueryAsync( */ public ApiResponse fetchDdsqlTabularQueryWithHttpInfo( DdsqlTabularQueryFetchRequest body) throws ApiException { - // Check if unstable operation is enabled - String operationId = "fetchDdsqlTabularQuery"; - if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { - apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); - } else { - throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); - } Object localVarPostBody = body; // verify the required parameter 'body' is set @@ -301,16 +277,6 @@ public ApiResponse fetchDdsqlTabularQueryWithHttpInfo */ public CompletableFuture> fetchDdsqlTabularQueryWithHttpInfoAsync(DdsqlTabularQueryFetchRequest body) { - // Check if unstable operation is enabled - String operationId = "fetchDdsqlTabularQuery"; - if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { - apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); - } else { - CompletableFuture> result = new CompletableFuture<>(); - result.completeExceptionally( - new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); - return result; - } Object localVarPostBody = body; // verify the required parameter 'body' is set diff --git a/src/main/java/com/datadog/api/client/v2/api/LlmObservabilityApi.java b/src/main/java/com/datadog/api/client/v2/api/LlmObservabilityApi.java index e30851d31ca..25d1252d052 100644 --- a/src/main/java/com/datadog/api/client/v2/api/LlmObservabilityApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/LlmObservabilityApi.java @@ -14054,6 +14054,7 @@ public CompletableFuture upsertLLMObsPatternsConfi * 401 Unauthorized - * 403 Forbidden - * 404 Not Found - + * 409 Conflict - * 429 Too many requests - * 500 Internal Server Error - * diff --git a/src/main/java/com/datadog/api/client/v2/model/DdsqlTabularQueryColumn.java b/src/main/java/com/datadog/api/client/v2/model/DdsqlTabularQueryColumn.java index 3c509ab5747..13e827f49f8 100644 --- a/src/main/java/com/datadog/api/client/v2/model/DdsqlTabularQueryColumn.java +++ b/src/main/java/com/datadog/api/client/v2/model/DdsqlTabularQueryColumn.java @@ -105,9 +105,19 @@ public DdsqlTabularQueryColumn addValuesItem(Object valuesItem) { } /** - * Column values in row order. The element type matches the column's type; for - * example a VARCHAR column carries strings, a TIMESTAMP column carries - * Unix-millisecond integers. null is allowed for missing values. + * Column values in row order, one entry per result row. The element type follows the column's + * type. The following serialization rules should be taken into account: + * + *
    + *
  • BIGINT values are encoded as JSON numbers in the signed 64-bit integer + * range. + *
  • DECIMAL values are encoded as JSON numbers with 64-bit double precision. + *
  • TIMESTAMP and DATE values are encoded as Unix-millisecond + * integers; a DATE resolves to midnight UTC. + *
  • JSON values are returned as a JSON-encoded string. + *
+ * + *

null is allowed for any column type where a value is missing. * * @return values */ diff --git a/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigAttributes.java b/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigAttributes.java index e56b765008c..91de8e5e26d 100644 --- a/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigAttributes.java +++ b/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigAttributes.java @@ -23,6 +23,7 @@ @JsonPropertyOrder({ LLMObsPatternsConfigAttributes.JSON_PROPERTY_ACCOUNT_ID, LLMObsPatternsConfigAttributes.JSON_PROPERTY_CREATED_AT, + LLMObsPatternsConfigAttributes.JSON_PROPERTY_CURATION_ENABLED, LLMObsPatternsConfigAttributes.JSON_PROPERTY_EVP_QUERY, LLMObsPatternsConfigAttributes.JSON_PROPERTY_HIERARCHY_DEPTH, LLMObsPatternsConfigAttributes.JSON_PROPERTY_INTEGRATION_PROVIDER, @@ -44,6 +45,9 @@ public class LLMObsPatternsConfigAttributes { public static final String JSON_PROPERTY_CREATED_AT = "created_at"; private OffsetDateTime createdAt; + public static final String JSON_PROPERTY_CURATION_ENABLED = "curation_enabled"; + private Boolean curationEnabled; + public static final String JSON_PROPERTY_EVP_QUERY = "evp_query"; private String evpQuery; @@ -147,6 +151,27 @@ public void setCreatedAt(OffsetDateTime createdAt) { this.createdAt = createdAt; } + public LLMObsPatternsConfigAttributes curationEnabled(Boolean curationEnabled) { + this.curationEnabled = curationEnabled; + return this; + } + + /** + * Whether automatic dataset curation is enabled for this configuration. + * + * @return curationEnabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CURATION_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getCurationEnabled() { + return curationEnabled; + } + + public void setCurationEnabled(Boolean curationEnabled) { + this.curationEnabled = curationEnabled; + } + public LLMObsPatternsConfigAttributes evpQuery(String evpQuery) { this.evpQuery = evpQuery; return this; @@ -439,6 +464,7 @@ public boolean equals(Object o) { (LLMObsPatternsConfigAttributes) o; return Objects.equals(this.accountId, llmObsPatternsConfigAttributes.accountId) && Objects.equals(this.createdAt, llmObsPatternsConfigAttributes.createdAt) + && Objects.equals(this.curationEnabled, llmObsPatternsConfigAttributes.curationEnabled) && Objects.equals(this.evpQuery, llmObsPatternsConfigAttributes.evpQuery) && Objects.equals(this.hierarchyDepth, llmObsPatternsConfigAttributes.hierarchyDepth) && Objects.equals( @@ -459,6 +485,7 @@ public int hashCode() { return Objects.hash( accountId, createdAt, + curationEnabled, evpQuery, hierarchyDepth, integrationProvider, @@ -478,6 +505,7 @@ public String toString() { sb.append("class LLMObsPatternsConfigAttributes {\n"); sb.append(" accountId: ").append(toIndentedString(accountId)).append("\n"); sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" curationEnabled: ").append(toIndentedString(curationEnabled)).append("\n"); sb.append(" evpQuery: ").append(toIndentedString(evpQuery)).append("\n"); sb.append(" hierarchyDepth: ").append(toIndentedString(hierarchyDepth)).append("\n"); sb.append(" integrationProvider: ") diff --git a/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigItem.java b/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigItem.java index fa353971976..d4d12c170a6 100644 --- a/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigItem.java +++ b/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigItem.java @@ -23,6 +23,7 @@ @JsonPropertyOrder({ LLMObsPatternsConfigItem.JSON_PROPERTY_ACCOUNT_ID, LLMObsPatternsConfigItem.JSON_PROPERTY_CREATED_AT, + LLMObsPatternsConfigItem.JSON_PROPERTY_CURATION_ENABLED, LLMObsPatternsConfigItem.JSON_PROPERTY_EVP_QUERY, LLMObsPatternsConfigItem.JSON_PROPERTY_HIERARCHY_DEPTH, LLMObsPatternsConfigItem.JSON_PROPERTY_ID, @@ -45,6 +46,9 @@ public class LLMObsPatternsConfigItem { public static final String JSON_PROPERTY_CREATED_AT = "created_at"; private OffsetDateTime createdAt; + public static final String JSON_PROPERTY_CURATION_ENABLED = "curation_enabled"; + private Boolean curationEnabled; + public static final String JSON_PROPERTY_EVP_QUERY = "evp_query"; private String evpQuery; @@ -153,6 +157,27 @@ public void setCreatedAt(OffsetDateTime createdAt) { this.createdAt = createdAt; } + public LLMObsPatternsConfigItem curationEnabled(Boolean curationEnabled) { + this.curationEnabled = curationEnabled; + return this; + } + + /** + * Whether automatic dataset curation is enabled for this configuration. + * + * @return curationEnabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CURATION_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getCurationEnabled() { + return curationEnabled; + } + + public void setCurationEnabled(Boolean curationEnabled) { + this.curationEnabled = curationEnabled; + } + public LLMObsPatternsConfigItem evpQuery(String evpQuery) { this.evpQuery = evpQuery; return this; @@ -464,6 +489,7 @@ public boolean equals(Object o) { LLMObsPatternsConfigItem llmObsPatternsConfigItem = (LLMObsPatternsConfigItem) o; return Objects.equals(this.accountId, llmObsPatternsConfigItem.accountId) && Objects.equals(this.createdAt, llmObsPatternsConfigItem.createdAt) + && Objects.equals(this.curationEnabled, llmObsPatternsConfigItem.curationEnabled) && Objects.equals(this.evpQuery, llmObsPatternsConfigItem.evpQuery) && Objects.equals(this.hierarchyDepth, llmObsPatternsConfigItem.hierarchyDepth) && Objects.equals(this.id, llmObsPatternsConfigItem.id) @@ -483,6 +509,7 @@ public int hashCode() { return Objects.hash( accountId, createdAt, + curationEnabled, evpQuery, hierarchyDepth, id, @@ -503,6 +530,7 @@ public String toString() { sb.append("class LLMObsPatternsConfigItem {\n"); sb.append(" accountId: ").append(toIndentedString(accountId)).append("\n"); sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" curationEnabled: ").append(toIndentedString(curationEnabled)).append("\n"); sb.append(" evpQuery: ").append(toIndentedString(evpQuery)).append("\n"); sb.append(" hierarchyDepth: ").append(toIndentedString(hierarchyDepth)).append("\n"); sb.append(" id: ").append(toIndentedString(id)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigUpsertRequestAttributes.java b/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigUpsertRequestAttributes.java index 31ad52a1e4c..fd258372c0d 100644 --- a/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigUpsertRequestAttributes.java +++ b/src/main/java/com/datadog/api/client/v2/model/LLMObsPatternsConfigUpsertRequestAttributes.java @@ -21,6 +21,7 @@ @JsonPropertyOrder({ LLMObsPatternsConfigUpsertRequestAttributes.JSON_PROPERTY_ACCOUNT_ID, LLMObsPatternsConfigUpsertRequestAttributes.JSON_PROPERTY_CONFIG_ID, + LLMObsPatternsConfigUpsertRequestAttributes.JSON_PROPERTY_CURATION_ENABLED, LLMObsPatternsConfigUpsertRequestAttributes.JSON_PROPERTY_EVP_QUERY, LLMObsPatternsConfigUpsertRequestAttributes.JSON_PROPERTY_HIERARCHY_DEPTH, LLMObsPatternsConfigUpsertRequestAttributes.JSON_PROPERTY_INTEGRATION_PROVIDER, @@ -41,6 +42,9 @@ public class LLMObsPatternsConfigUpsertRequestAttributes { public static final String JSON_PROPERTY_CONFIG_ID = "config_id"; private String configId; + public static final String JSON_PROPERTY_CURATION_ENABLED = "curation_enabled"; + private Boolean curationEnabled; + public static final String JSON_PROPERTY_EVP_QUERY = "evp_query"; private String evpQuery; @@ -126,6 +130,29 @@ public void setConfigId(String configId) { this.configId = configId; } + public LLMObsPatternsConfigUpsertRequestAttributes curationEnabled(Boolean curationEnabled) { + this.curationEnabled = curationEnabled; + return this; + } + + /** + * When true, Datadog automatically provisions a managed project and dataset ( + * {pattern-name}-pattern-curated) to receive suggested interactions after each run. + * Defaults to true for new patterns. + * + * @return curationEnabled + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CURATION_ENABLED) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Boolean getCurationEnabled() { + return curationEnabled; + } + + public void setCurationEnabled(Boolean curationEnabled) { + this.curationEnabled = curationEnabled; + } + public LLMObsPatternsConfigUpsertRequestAttributes evpQuery(String evpQuery) { this.evpQuery = evpQuery; return this; @@ -371,6 +398,8 @@ public boolean equals(Object o) { (LLMObsPatternsConfigUpsertRequestAttributes) o; return Objects.equals(this.accountId, llmObsPatternsConfigUpsertRequestAttributes.accountId) && Objects.equals(this.configId, llmObsPatternsConfigUpsertRequestAttributes.configId) + && Objects.equals( + this.curationEnabled, llmObsPatternsConfigUpsertRequestAttributes.curationEnabled) && Objects.equals(this.evpQuery, llmObsPatternsConfigUpsertRequestAttributes.evpQuery) && Objects.equals( this.hierarchyDepth, llmObsPatternsConfigUpsertRequestAttributes.hierarchyDepth) @@ -394,6 +423,7 @@ public int hashCode() { return Objects.hash( accountId, configId, + curationEnabled, evpQuery, hierarchyDepth, integrationProvider, @@ -412,6 +442,7 @@ public String toString() { sb.append("class LLMObsPatternsConfigUpsertRequestAttributes {\n"); sb.append(" accountId: ").append(toIndentedString(accountId)).append("\n"); sb.append(" configId: ").append(toIndentedString(configId)).append("\n"); + sb.append(" curationEnabled: ").append(toIndentedString(curationEnabled)).append("\n"); sb.append(" evpQuery: ").append(toIndentedString(evpQuery)).append("\n"); sb.append(" hierarchyDepth: ").append(toIndentedString(hierarchyDepth)).append("\n"); sb.append(" integrationProvider: ") diff --git a/src/test/resources/com/datadog/api/client/v2/api/llm_observability.feature b/src/test/resources/com/datadog/api/client/v2/api/llm_observability.feature index b1897f532b9..37ac6ede007 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/llm_observability.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/llm_observability.feature @@ -373,15 +373,23 @@ Feature: LLM Observability Scenario: Create or update a patterns configuration returns "Bad Request" response Given operation "UpsertLLMObsPatternsConfig" enabled And new "UpsertLLMObsPatternsConfig" request - And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} When the request is sent Then the response status is 400 Bad Request + @generated @skip @team:DataDog/ml-observability + Scenario: Create or update a patterns configuration returns "Conflict" response + Given operation "UpsertLLMObsPatternsConfig" enabled + And new "UpsertLLMObsPatternsConfig" request + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + When the request is sent + Then the response status is 409 Conflict + @generated @skip @team:DataDog/ml-observability Scenario: Create or update a patterns configuration returns "Not Found" response Given operation "UpsertLLMObsPatternsConfig" enabled And new "UpsertLLMObsPatternsConfig" request - And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} When the request is sent Then the response status is 404 Not Found @@ -389,7 +397,7 @@ Feature: LLM Observability Scenario: Create or update a patterns configuration returns "OK" response Given operation "UpsertLLMObsPatternsConfig" enabled And new "UpsertLLMObsPatternsConfig" request - And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} + And body with value {"data": {"attributes": {"account_id": "1000000001", "config_id": "a7c8d9e0-1234-5678-9abc-def012345678", "curation_enabled": true, "evp_query": "@ml_app:support-bot", "hierarchy_depth": 2, "integration_provider": "openai", "model_name": "gpt-4o", "name": "Support chatbot topics", "num_records": 1000, "sampling_ratio": 0.1, "scope": "", "template": ""}, "type": "topic_discovery_configs"}} When the request is sent Then the response status is 200 OK