Skip to content

v23.0.0

Latest

Choose a tag to compare

@LaunchDarklyReleaseBot LaunchDarklyReleaseBot released this 06 Jul 16:25
Immutable release. Only release title and notes can be modified.

Added - Added optional outputFormat field to AgentControl variation request and response schemas. When set, specifies a JSON Schema defining the structured output format sent to the model. Controlled by the enable-ai-config-output-format feature flag. Affected endpoints: - GET /api/v2/projects/{projectKey}/ai-configs - POST /api/v2/projects/{projectKey}/ai-configs - GET /api/v2/projects/{projectKey}/ai-configs/{configKey} - PATCH /api/v2/projects/{projectKey}/ai-configs/{configKey} - POST /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations - GET /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations/{variationKey} - PATCH /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations/{variationKey} - Added optional mfaEnforced (boolean) and mfaGracePeriodExpiresAt (Unix milliseconds timestamp) fields to the member representation. These fields indicate whether MFA enrollment is enforced for the member and when a grace period expires, if applicable. Both fields are omitted from responses when MFA enforcement is not active. - Added SDK Keys (beta) API tag with documentation for creating, retrieving, and managing additional server-side and mobile SDK keys for environments. - Added optional contextKind and contextKey query parameters to GET /api/v2/projects/{projectKey}/ai-configs/{configKey}/metrics and GET /api/v2/projects/{projectKey}/ai-configs/{configKey}/metrics-by-variation. These parameters allow filtering AI Config monitoring metrics to a specific context. - Added read-only valueHash to the Variation schema: a deterministic hash of the canonicalized variation value. Computed server-side; ignored if supplied in request bodies. Affected endpoints: - GET /api/v2/approval-requests - GET /api/v2/approval-requests/{id} - GET /api/v2/flags/{projectKey} - POST /api/v2/flags/{projectKey} - GET /api/v2/flags/{projectKey}/{featureFlagKey} - PATCH /api/v2/flags/{projectKey}/{featureFlagKey} - POST /api/v2/flags/{projectKey}/{featureFlagKey}/copy - Added GET /api/v2/usage/warehouse-export endpoint, which returns warehouse Data Export usage (rows transferred) over a time range. Supports the same from, to, aggregationType, groupBy, and filtering query parameters as the other usage endpoints. This is a beta endpoint and requires the LD-API-Version: beta header. - Added optional analysisType field (mean | percentile) to the MetricV2Rep and MetricInGroupRep schemas, indicating how metric events are analyzed. Affected endpoints include any response that returns a metric group or embeds a MetricV2Rep summary: - GET /api/v2/projects/{projectKey}/metric-groups - POST /api/v2/projects/{projectKey}/metric-groups - GET /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey} - PATCH /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey} - Added winsorIncludeImputed optional field to the metrics endpoints. When true, the winsorization percentile bound calculation includes imputed zeros (only meaningful when at least one bound is set). Defaults to false. Affected endpoints: - GET /api/v2/metrics/{projectKey} - POST /api/v2/metrics/{projectKey} - GET /api/v2/metrics/{projectKey}/{metricKey} - PATCH /api/v2/metrics/{projectKey}/{metricKey} - Added hasPassword boolean field to member representations. Indicates whether the member has a password set (basic auth). False for OAuth-only or SCIM-provisioned members. Affected endpoints: - GET /api/v2/members - GET /api/v2/members/{id} - PATCH /api/v2/members/{id} - Added optional tags field to AI tool request and response schemas. Tags can now be set on create and update, and are returned in all read responses. Affected endpoints: - POST /api/v2/projects/{projectKey}/ai-tools - PATCH /api/v2/projects/{projectKey}/ai-tools/{toolKey} - GET /api/v2/projects/{projectKey}/ai-tools - GET /api/v2/projects/{projectKey}/ai-tools/{toolKey} - Added DELETE /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/runs/{runId} endpoint to delete all results for a specific agent optimization run. This is a beta endpoint and requires the LD-API-Version: beta header. - Added an optional _maintainerId field (the ID of the member who maintains the integration configuration; defaults to the member who created it) to integration configuration responses. Affected endpoints: - GET /api/v2/integration-configurations/keys/{integrationKey} - POST /api/v2/integration-configurations/keys/{integrationKey} - GET /api/v2/integration-configurations/{integrationConfigurationId} - PATCH /api/v2/integration-configurations/{integrationConfigurationId} - Added optional clickHouseDatabaseName, clickHouseUserName, clickHouseS3BucketName, clickHouseIncludeHostRestriction, clickHouseServiceRoleArn, and clickHousePassword properties to the request body of POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup. The first three allow customers to customize names used in the generated setup script (defaults are used when omitted). When clickHouseIncludeHostRestriction is true, the generated CREATE USER statement includes a HOST IP clause restricting the export user to LaunchDarkly's region-specific egress IP for the customer's instance. When clickHouseServiceRoleArn is provided, it is baked into the generated IAM trust policy so the customer's ClickHouse Cloud service role can assume the S3 role. When clickHousePassword is provided, it is embedded directly in the CREATE USER statement so the generated script is ready to run without manual editing. - Exposed the existing s3BucketName property in the response of POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup (previously hidden from the public OpenAPI spec). The auto-generated S3 staging bucket name is returned for ClickHouse and Redshift setup calls so callers can render it back to the customer for the IAM trust policy step. The field continues to be omitted for kinds that do not stage data through S3. - Added optional endpoint property to the request body of POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup. When provided for a Redshift setup call alongside clusterIdentifier, clusterRegion, and clusterAwsAccountId, the cluster JDBC endpoint is persisted on the pending destination. This means POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/complete-setup can later reuse it without callers having to re-supply the value. The field is unused for other kinds. - Added optional databaseName, schemaName, and userName properties to the Redshift config object on the legacy POST /api/v2/destinations/{projectKey}/{environmentKey} endpoint. When provided, they override the default Redshift SQL object names the destination will write to; when omitted, the environment-scoped defaults (ld_export for the database, export_<projectKey>__<environmentKey> for the schema, ld_export_user_<projectKey>__<environmentKey> for the user) are now persisted on the resulting record. Customer-provided values are whitespace-trimmed before persistence. - Added optional filter query parameter to GET /api/v2/projects/{projectKey}/agent-optimizations for case-insensitive substring search across key, label, and ai_config_key fields. - Added denominator field to metric responses for ratio metrics. The denominator object describes the denominator event configuration (event name, aggregation type, data source, etc.) and is now included in the OpenAPI schema. Affected endpoints: - GET /api/v2/metrics/{projectKey} - GET /api/v2/metrics/{projectKey}/{metricKey} - POST /api/v2/metrics/{projectKey} - PATCH /api/v2/metrics/{projectKey}/{metricKey} - GET /api/v2/projects/{projectKey}/experiments (via MetricListingRep and MetricAnalysisRep) - GET /api/v2/projects/{projectKey}/experiments/{experimentKey} (via embedded metric fields) - Added optional filter query parameter to GET /api/v2/projects/{projectKey}/agent-graphs - Added an optional _access field (the current member's allowed and denied actions) to experiment responses, so clients can gate experiment actions per role. Affected endpoints: - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - GET /api/v2/projects/{projectKey}/experiments - The baseExperiment and relatedExperiments properties on the holdout endpoints (POST/GET/PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts...) - Added denominator, unitAggregationField optional fields to POST /api/v2/metrics/{projectKey} - Added dataSource field to the DenominatorPost schema (was missing from spec, causing all ratio metric creation requests to fail with 400) - Added new public endpoints for SDK key management: - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys for creating a new SDK key on an environment. - DELETE /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey} for deleting an SDK key by identifying key. - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey} for retrieving an SDK key by identifying key. - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-keys/{sdkKeyKey} for updating an SDK key by identifying key. - Added winsorLowerPercentile, winsorUpperPercentile, and winsorExcludeImputed optional fields to the metrics endpoints: - GET /api/v2/metrics/{projectKey} - POST /api/v2/metrics/{projectKey} - GET /api/v2/metrics/{projectKey}/{metricKey} - PATCH /api/v2/metrics/{projectKey}/{metricKey} - Added GET /api/v2/projects/{projectKey}/ai-tools/{toolKey}/references endpoint for listing all AgentControl config variations that currently reference a given tool. - Added GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/runs endpoint for listing all distinct runs across all versions of an agent optimization config, ordered by createdAt descending. - Added optional variationKey, label, latencyOptimization, tokenOptimization, and autoCommit fields to agent optimization endpoints. Affected endpoints: - GET /api/v2/projects/{projectKey}/agent-optimizations - POST /api/v2/projects/{projectKey}/agent-optimizations - GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} - PATCH /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} - Added POST /api/v2/list/data endpoint for listing row-level events from a data source (hidden/internal only). - Added GET /api/v2/usage/ai-runs endpoint for retrieving a time series of AI runs usage for an account. - Added optional _maintainerServiceTokenId field to the FeatureFlagScheduledChange response schema. When a scheduled change is created by a service token, this field contains the ID of that service token. Affected endpoints: - GET /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes - POST /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes - GET /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes/{id} - PATCH /api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/scheduled-changes/{id} - Added GET /api/v2/account/ip-allowlist endpoint for retrieving an account's IP allowlist. - Added PATCH /api/v2/account/ip-allowlist endpoint for enabling or disabling use of an account's IP allowlist. - Added POST /api/v2/account/ip-allowlist endpoint for creating a new entry in the IP allowlist. - Added PATCH /api/v2/account/ip-allowlist/{id} endpoint for updating the description of an entry in the IP allowlist. - Added DELETE /api/v2/account/ip-allowlist/{id} endpoint for removing entry from the IP allowlist. - Added POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/complete-setup endpoint to complete the setup of a warehouse destination by providing the Snowflake public key - Added GET /api/v2/projects/{projectKey}/sdk-keys endpoint for retrieving all SDK keys across all environments in a project. Supports filter (kind, active), pagination (limit, offset) and expand=environmentSummary. - Added analysisUnits to replace randomizationUnits, which is now deprecated. Provides an array of strings value on the MetricListingRep struct. This affects the following endpoints: - POST /api/v2/flags/{projectKey} - GET /api/v2/flags/{projectKey}/{featureFlagKey} - PATCH /api/v2/flags/{projectKey}/{featureFlagKey} - POST /api/v2/flags/{projectKey}/{featureFlagKey}/copy - GET /api/v2/metrics/{projectKey} - POST /api/v2/metrics/{projectKey} - GET /api/v2/metrics/{projectKey}/{metricKey} - PATCH /api/v2/metrics/{projectKey}/{metricKey} - GET /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting - PATCH /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}/iterations - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/id/{holdoutId} - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - GET /api/v2/projects/{projectKey}/experiments - GET /api/v2/projects/{projectKey}/metric-groups - POST /api/v2/projects/{projectKey}/metric-groups - GET /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey} - PATCH /api/v2/projects/{projectKey}/metric-groups/{metricGroupKey} - Added trace to the kind enum field of POST /api/v2/metrics/{projectKey} endpoint request body - Added Access to ExpandedExperimentRep field for broader experiment resource access control - Added name to ExpandedExperimentRep field for broader experiment resource field extraction - Added windowStartOffset, windowEndOffset properties to metrics model and related endpoints - Added traceQuery and traceValueLocation optional fields to the MetricListingRep struct. Affected response of endpoints: - GET /api/v2/metrics/{projectKey} - POST /api/v2/metrics/{projectKey} - GET /api/v2/metrics/{projectKey}/{metricKey} - PATCH /api/v2/metrics/{projectKey}/{metricKey} - Added trace as a new enum value to the kind field of the MetricListingRep struct. This reflects the new trace-based metric type and affects the kind field on metric objects in the following endpoints: - GET /api/v2/metrics/{projectKey} - POST /api/v2/metrics/{projectKey} - GET /api/v2/metrics/{projectKey}/{metricKey} - PATCH /api/v2/metrics/{projectKey}/{metricKey} - GET /api/v2/flags/{projectKey} (via experiments[].items[]._metric.kind) - POST /api/v2/flags/{projectKey} (via experiments[].items[]._metric.kind) - GET /api/v2/flags/{projectKey}/{featureFlagKey} (via experiments[].items[]._metric.kind) - PATCH /api/v2/flags/{projectKey}/{featureFlagKey} (via experiments[].items[]._metric.kind) - POST /api/v2/flags/{projectKey}/{featureFlagKey}/copy (via experiments[].items[]._metric.kind) - GET /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting (via experiments[].items[]._metric.kind) - PATCH /api/v2/projects/{projectKey}/ai-configs/{configKey}/targeting (via experiments[].items[]._metric.kind) - Added trace as a new enum value to the kind field of the MetricV2Rep struct. This affects the primarySingleMetric.kind and secondaryMetrics[].kind fields within iteration representations in the following endpoints: - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}/iterations - GET /api/v2/projects/{projectKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/id/{holdoutId} - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - Added trace as a new enum value to the kind field of the DependentMetricOrMetricGroupRep struct. This affects the metrics[].kind, primaryMetric.kind, and primaryFunnel.metrics[].kind fields within iteration representations in the following endpoints: - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}/iterations - GET /api/v2/projects/{projectKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/id/{holdoutId} - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - Added GET /api/v2/projects/{projectKey}/ai-configs/quick-stats endpoint for retrieving aggregate quick stats for AI Configs in a project. - Added POST /api/v2/projects/{projectKey}/agent-optimizations endpoint for creating agent optimizations. - Added GET /api/v2/projects/{projectKey}/agent-optimizations endpoint for listing agent optimizations. - Added GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} endpoint for retrieving an agent optimization. - Added PATCH /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} endpoint for updating an agent optimization. - Added DELETE /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} endpoint for deleting an agent optimization. - Added POST /api/v2/projects/{projectKey}/agent-optimizations/{agentOptimizationId}/results endpoint for creating agent optimization results. - Added GET /api/v2/projects/{projectKey}/agent-optimizations/{agentOptimizationId}/results endpoint for listing agent optimization runs. - Added PATCH /api/v2/projects/{projectKey}/agent-optimizations/{agentOptimizationId}/results/{resultId} endpoint for updating an agent optimization result. - Added GET /api/v2/projects/{projectKey}/agent-optimizations/{agentOptimizationId}/runs/{runId}/results endpoint for listing agent optimization results for a run. - Added GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/all-results endpoint for listing all agent optimization results across all versions of an optimization. - Added VALIDATING as a new enum value to the activity field of the AgentOptimizationResult schema. Affected endpoints: - POST /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/results - GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/results - PATCH /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/results/{resultId} - GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey}/runs/{runId}/results - Added experiment field to the ExpandedResourceRep schema in approval request responses. When an approval request is for an experiment resource, the expanded resource representation now includes the experiment key. Affected endpoints: - GET /api/v2/approval-requests - GET /api/v2/approval-requests/{id} - Added POST /api/v2/projects/{projectKey}/ai-configs/prompt-snippets endpoint for creating prompt snippets. - Added GET /api/v2/projects/{projectKey}/ai-configs/prompt-snippets endpoint for listing prompt snippets. - Added GET /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey} endpoint for retrieving a prompt snippet. - Added DELETE /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey} endpoint for deleting a prompt snippet. - Added PATCH /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey} endpoint for updating a prompt snippet. - Added GET /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}/references endpoint for listing all AI Config variations that currently reference a prompt snippet. - Added GET /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}/versions endpoint for listing all versions of a prompt snippet, ordered by version descending. - Added tags and maintainer support to prompt snippet endpoints. - Added variationKey field to the SnippetReference schema in GET /api/v2/projects/{projectKey}/ai-configs/prompt-snippets/{snippetKey}/references responses. - Added filter query parameter to GET /api/v2/projects/{projectKey}/ai-configs/prompt-snippets. - Added sdkAppId as a valid groupBy value and filter parameter on GET /api/v2/usage/service-connections. - Added GET /api/v2/projects/{projectKey}/experiments endpoint to retrieve experiments across all environments in a project. - Added methodology, dataSource, and type fields to experiment responses (GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments, GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}, and PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}). - Added analysisConfig as an expandable field on experiment responses. Use expand=analysisConfig to include Bayesian threshold, significance threshold, and multiple comparison correction settings. - Added methodology, dataSource, type, and analysisConfig fields to the POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments request body. - Added reallocationFrequencyMillis and covariateId fields to iteration inputs on experiment create and update endpoints. - Added updateExperimentFields and saveAndStartNewIteration instructions to PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}. - Added mutableFieldsByStatus as an expandable field on experiment responses. - Added GET /api/v2/usage/sdk-versions/details endpoint that returns detailed SDK version usage data for the account, including context, version information, EOL status, and relay proxy metadata for the latest version of each SDK connection observed in the last day. - Added GET /api/v2/projects/{projectKey}/environments/{environmentKey}/sdk-active (Account usage beta) endpoint. It returns whether LaunchDarkly has recorded an SDK diagnostic initialization event for the environment. Optional query parameters sdk_name and sdk_wrapper_name apply when time-bounded diagnostic queries are enabled for the account. - Added POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/generate-warehouse-destination-key-pair endpoint for generating a warehouse destination key pair for a project and environment. - Added POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup endpoint for generating SQL setup scripts for Data Export warehouse destinations (snowflake-v2, redshift). - Added redshiftSetupScript property to integration configuration responses. This optional string contains the SQL setup script for Redshift Warehouse Native Experimentation and is present only for redshift-experimentation integrations. Affected endpoints: - GET /api/v2/integration-configurations/keys/{integrationKey} - POST /api/v2/integration-configurations/keys/{integrationKey} - GET /api/v2/integration-configurations/{integrationConfigurationId} - PATCH /api/v2/integration-configurations/{integrationConfigurationId} - Added costPerCachedInputToken field to ModelConfig to specify and reference a model's cached input token cost in the model config endpoints. - Added tokenLimit field to agent optimization endpoints. This optional integer specifies the maximum number of tokens allowed for the optimization. Affected endpoints: - GET /api/v2/projects/{projectKey}/agent-optimizations - POST /api/v2/projects/{projectKey}/agent-optimizations - GET /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} - PATCH /api/v2/projects/{projectKey}/agent-optimizations/{optimizationKey} - Added viewKeys field to the scope property on release policy endpoints. This allows release policies to be scoped to specific views. Affected endpoints: - GET /api/v2/projects/{projectKey}/release-policies - POST /api/v2/projects/{projectKey}/release-policies - POST /api/v2/projects/{projectKey}/release-policies/order - GET /api/v2/projects/{projectKey}/release-policies/{policyKey} - PUT /api/v2/projects/{projectKey}/release-policies/{policyKey} - Added aiConfigCount and metricCount fields to the resourceSummary property, and aiConfigs and metrics fields to the resourcesExpanded.items property on Views endpoints. These fields restore AI Config and metric tracking on views. Affected endpoints: - GET /api/v2/projects/{projectKey}/views - POST /api/v2/projects/{projectKey}/views - GET /api/v2/projects/{projectKey}/views/{viewKey} - PATCH /api/v2/projects/{projectKey}/views/{viewKey} - GET /api/v2/projects/{projectKey}/view-associations/{resourceType}/{resourceKey} - POST /api/v2/projects/{projectKey}/views/{viewKey}/link/{resourceType} (via linkedResources.items[].resourceDetails.view) - GET /api/v2/projects/{projectKey}/views/{viewKey}/linked/{resourceType} (via items[].resourceDetails.view) - Added GET /api/v2/usage/sdk-versions/all endpoint for retrieving all sdk version usage. - Added viewKeys property to POST /api/v2/projects/{projectKey}/ai-configs to enable linking AI Configs to Views on creation - Added _affectsSdkPayload required boolean property to the View schema, indicating whether the view is used to filter SDK payloads. Affected endpoints: - GET /api/v2/projects/{projectKey}/views - POST /api/v2/projects/{projectKey}/views - GET /api/v2/projects/{projectKey}/views/{viewKey} - PATCH /api/v2/projects/{projectKey}/views/{viewKey} - POST /api/v2/projects/{projectKey}/views/{viewKey}/link/{resourceType} - GET /api/v2/projects/{projectKey}/views/{viewKey}/linked/{resourceType} - GET /api/v2/projects/{projectKey}/view-associations/{resourceType}/{resourceKey} ### Changed - Added count_distinct to the unitAggregationType enum on metric representations. This value is valid only for ratio metrics (metrics with a denominator). Affected endpoints include all that return metric representations (e.g. GET /api/v2/metrics/{projectKey}, POST /api/v2/metrics/{projectKey}, flag listing/creation endpoints that embed experiment metrics, etc.). - Removed offset, after, and sort query parameters from GET /api/v2/user-search/{projectKey}/{environmentKey}. These parameters were previously accepted but have had no active callers. If provided, they are now silently ignored. Use searchAfter for cursor-based pagination. - Renamed the AI Configs API tag to AgentControl to reflect the product rename. The API itself is unchanged: endpoints, paths, request/response bodies, and operation IDs are the same. Existing integrations do not need modification. Documentation and tag references now use "AgentControl config" or "config" in place of "AI Config." - DELETE /api/v2/projects/{projectKey}/environments/{environmentKey}/context-instances/{id} now returns 410 Gone, directing callers to use DELETE /api/v2/projects/{projectKey}/environments/{environmentKey}/contexts/{kind}/{key} instead. - Removed beta designation from the Holdouts API. The Holdouts (beta) tag is now Holdouts, and the LD-API-Version: beta header is no longer required. Affected endpoints: - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/id/{holdoutId} - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - Added relatedFlag to audit log entry responses when an audit log entry or subentry is associated with a flag. Affected endpoints: - GET /api/v2/auditlog - POST /api/v2/auditlog - GET /api/v2/auditlog/{id} - Added relatedExperiment to audit log entry responses when a flag audit log entry was created as a side effect of an experiment starting or stopping. Affected endpoints: - GET /api/v2/auditlog - POST /api/v2/auditlog - GET /api/v2/auditlog/{id} - Added relatedAIConfig to audit log entry responses when an experiment audit log entry updated an AgentControl config flag (a flag with Purpose == AIPurpose) as a side effect. Clients can use this to render AgentControl config-specific copy and link to the AgentControl config detail page instead of the regular flag detail page. When the related resource is an AgentControl config, relatedAIConfig is set and relatedFlag is omitted; the two fields are mutually exclusive. Both relatedFlag and relatedAIConfig now fire on experiment start AND stop transitions (previously only on start), matching the symmetric behavior of relatedExperiment on flag-side audit entries. Affected endpoints: - GET /api/v2/auditlog - POST /api/v2/auditlog - GET /api/v2/auditlog/{id} - Added optional createdAt field (Unix milliseconds) to the Data Export destination response. Affected endpoints: - GET /api/v2/destinations - GET /api/v2/destinations/{projectKey}/{environmentKey}/{id} - POST /api/v2/destinations/{projectKey}/{environmentKey} - PATCH /api/v2/destinations/{projectKey}/{environmentKey}/{id} - POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/complete-setup - Added immediate-release to the ReleaseMethod enum for release policy endpoints. This new value is accepted in the releaseMethod field for POST /api/v2/projects/{projectKey}/release-policies and PUT /api/v2/projects/{projectKey}/release-policies/{releasePolicyKey}. - Modified POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/clickhouse/setup to return additional setup artifacts: s3BucketName (auto-generated staging bucket name), iamPolicy (S3 permissions policy JSON), trustPolicy (IAM trust policy JSON from Prequel), and egressIp (IP to allowlist in ClickHouse). These fields are only present for ClickHouse destinations. - Modified POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/redshift/setup to optionally generate the IAM permissions policy and IAM trust policy for the Redshift Data Export role. When clusterIdentifier, clusterRegion, and clusterAwsAccountId are all provided in the request body, the response includes redshiftIAMPermissionsPolicy and redshiftIAMTrustPolicy (JSON policy documents). When any field is absent, only the SQL script is returned (backwards-compatible). The existing POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/generate-trust-policy endpoint is unchanged. - Added key and kind required properties to MaintainerRep schema, matching the actual API response for metric group maintainers. Renamed the deprecated application maintainer schema to ApplicationMaintainerRep. - Added timezone field to ChartMetadata schema. - Added array to the FieldDescription.type enum and added array-of-strings to the FieldValue union. - Added new schemas: ListDataSelect, ListDataSort, ListDataRequest. - Modified POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup to accept an optional request body with custom Snowflake resource names (snowflakeHostAddress, databaseName, warehouseName, roleName, schemaName, userName) - Added optional includeNetworkPolicy field to the request body of POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup. When true, the generated Snowflake setup script creates/updates a network rule with LaunchDarkly's Data Export egress IPs and assigns the resulting policy to the Data Export user. - Added optional name field to the request body of POST /api/v2/destinations/projects/{projKey}/environments/{envKey}/kinds/{kind}/setup. The provided name is stored on the destination record. If omitted, the destination is persisted with an empty name (consistent with the existing destination create endpoint). - Clarified in PATCH /api/v2/projects/{projectKey} description that tags are always deduplicated and returned in alphabetical order, regardless of the array index used in the JSON Patch path. - UPDATED POST /api/v2/metrics/{projectKey} endpoint request body to include traceQuery and traceValueLocation optional fields. - Updated to include 429 rate limited response on POST /api/v2/projects/{projectKey}/ai-configs and POST /api/v2/projects/{projectKey}/ai-configs/{configKey}/variations. - Updated ChartDataGroupBy schema in the chart data API: field is now optional (supports root-level rollup aggregation when omitted), and rollup now has a default value of false. - Added snowflakeSetupScript property to integration configuration responses. This optional string contains the consolidated SQL setup script for Snowflake Warehouse Native Experimentation and is present only for snowflake-experimentation integrations. Affected endpoints: - GET /api/v2/integration-configurations/keys/{integrationKey} - POST /api/v2/integration-configurations/keys/{integrationKey} - GET /api/v2/integration-configurations/{integrationConfigurationId} - PATCH /api/v2/integration-configurations/{integrationConfigurationId} ### Deprecated - Deprecated updateName and updateDescription instructions on PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}. Use updateExperimentFields instead. - Deprecated POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey}/iterations. Use updateExperimentFields and saveAndStartNewIteration instead. - Deprecated generateSdkKeys property on the View schema. The field is now read-only and mirrors _affectsSdkPayload during rollout. Affected response endpoints: - GET /api/v2/projects/{projectKey}/views - POST /api/v2/projects/{projectKey}/views - GET /api/v2/projects/{projectKey}/views/{viewKey} - PATCH /api/v2/projects/{projectKey}/views/{viewKey} - POST /api/v2/projects/{projectKey}/views/{viewKey}/link/{resourceType} - GET /api/v2/projects/{projectKey}/views/{viewKey}/linked/{resourceType} - GET /api/v2/projects/{projectKey}/view-associations/{resourceType}/{resourceKey} ### Removed - Removed databricks and redshift enum values from the dataSource field on experiment and holdout endpoints. These data sources are not yet publicly available. Affected endpoints: - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/experiments/{experimentKey} - POST /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/id/{holdoutId} - GET /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - PATCH /api/v2/projects/{projectKey}/environments/{environmentKey}/holdouts/{holdoutKey} - GET /api/v2/projects/{projectKey}/experiments - Removed generateSdkKeys property from ViewPost and ViewPatch request bodies. Use _affectsSdkPayload on the View response instead. Affected endpoints: - POST /api/v2/projects/{projectKey}/views - PATCH /api/v2/projects/{projectKey}/views/{viewKey} - Removed GET /api/v2/user-attributes/{projectKey}/{environmentKey}. This endpoint had no authenticated callers and is no longer supported. Use GET /api/v2/user-search/{projectKey}/{environmentKey} to search users and retrieve their attributes. - Removed GET /api/attributes/{name}. This v1 endpoint had no callers and is no longer supported. Use GET /api/v2/context-attributes/{attributeName} instead. ### Bug Fixes - Fixed POST /api/v2/projects/{projectKey}/ai-tools returning 500 instead of 404 when an invalid project key is provided.