From 30b08647d2c62c58be1903c1b6f3a22cb8d771f2 Mon Sep 17 00:00:00 2001 From: Ameesha Isaac Date: Fri, 7 Aug 2026 14:07:00 -0400 Subject: [PATCH 1/2] docs(apps): require HTTP action for external requests --- package.json | 2 +- packages/plugins/apps/README.md | 23 +++++++++++++++++++ .../published/esbuild-plugin/package.json | 2 +- packages/published/rollup-plugin/package.json | 2 +- packages/published/rspack-plugin/package.json | 2 +- packages/published/vite-plugin/package.json | 2 +- .../published/webpack-plugin/package.json | 2 +- 7 files changed, 29 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index c39812e68..e1bb1be27 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@datadog/build-plugins", "private": true, - "version": "3.2.12", + "version": "3.2.13", "license": "MIT", "author": "Datadog", "description": "Root of Datadog's Build Plugins monorepo", diff --git a/packages/plugins/apps/README.md b/packages/plugins/apps/README.md index c9a6480bf..b04baba9f 100644 --- a/packages/plugins/apps/README.md +++ b/packages/plugins/apps/README.md @@ -15,6 +15,7 @@ A plugin to upload assets to Datadog's storage - [Configuration](#configuration) - [Assets Upload](#assets-upload) + - [External HTTP requests](#external-http-requests) - [apps.dryRun](#appsdryrun) - [apps.enable](#appsenable) - [apps.include](#appsinclude) @@ -58,6 +59,28 @@ Upload built assets to Datadog storage as a compressed archive. > You can override the domain used in the request with the `DATADOG_SITE` environment variable or the `auth.site` options (eg. `datadoghq.eu`). > You can override the full intake URL by setting the `DATADOG_APPS_INTAKE_URL` environment variable (eg. `https://apps-intake.datadoghq.com/api/v1/apps`). +### External HTTP requests + +External HTTP requests from an app must use the generic HTTP action from the Action Catalog in a backend function. Do not call `fetch` or use Node.js networking APIs to access an external service directly. + +```ts +import { request } from '@datadog/action-catalog/http/http'; + +export async function getExternalData() { + return request({ + connectionId: '', + inputs: { + verb: 'GET', + url: 'https://api.example.com/data', + responseParsing: 'json', + errorOnStatus: ['400-599'], + }, + }); +} +``` + +Use an HTTP connection configured in your Datadog organization so credentials and access to the external service are managed through the Action Catalog. Frontend code should call the backend function rather than contacting the external service directly. + ### apps.dryRun > default: `true` diff --git a/packages/published/esbuild-plugin/package.json b/packages/published/esbuild-plugin/package.json index 3047f1f7c..fe1328770 100644 --- a/packages/published/esbuild-plugin/package.json +++ b/packages/published/esbuild-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@datadog/esbuild-plugin", "packageManager": "yarn@4.0.2", - "version": "3.2.12", + "version": "3.2.13", "license": "MIT", "author": "Datadog", "description": "Datadog ESBuild Plugin", diff --git a/packages/published/rollup-plugin/package.json b/packages/published/rollup-plugin/package.json index d05a63ae0..4de7d973e 100644 --- a/packages/published/rollup-plugin/package.json +++ b/packages/published/rollup-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@datadog/rollup-plugin", "packageManager": "yarn@4.0.2", - "version": "3.2.12", + "version": "3.2.13", "license": "MIT", "author": "Datadog", "description": "Datadog Rollup Plugin", diff --git a/packages/published/rspack-plugin/package.json b/packages/published/rspack-plugin/package.json index 85a14619a..640641210 100644 --- a/packages/published/rspack-plugin/package.json +++ b/packages/published/rspack-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@datadog/rspack-plugin", "packageManager": "yarn@4.0.2", - "version": "3.2.12", + "version": "3.2.13", "license": "MIT", "author": "Datadog", "description": "Datadog Rspack Plugin", diff --git a/packages/published/vite-plugin/package.json b/packages/published/vite-plugin/package.json index 05c805e65..60634f354 100644 --- a/packages/published/vite-plugin/package.json +++ b/packages/published/vite-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@datadog/vite-plugin", "packageManager": "yarn@4.0.2", - "version": "3.2.12", + "version": "3.2.13", "license": "MIT", "author": "Datadog", "description": "Datadog Vite Plugin", diff --git a/packages/published/webpack-plugin/package.json b/packages/published/webpack-plugin/package.json index 148e40ffe..2bdbda43d 100644 --- a/packages/published/webpack-plugin/package.json +++ b/packages/published/webpack-plugin/package.json @@ -1,7 +1,7 @@ { "name": "@datadog/webpack-plugin", "packageManager": "yarn@4.0.2", - "version": "3.2.12", + "version": "3.2.13", "license": "MIT", "author": "Datadog", "description": "Datadog Webpack Plugin", From b7752422ead46642a8dba2444feeba9569c5bd9b Mon Sep 17 00:00:00 2001 From: Ameesha Isaac Date: Fri, 7 Aug 2026 14:12:46 -0400 Subject: [PATCH 2/2] docs(apps): clarify optional HTTP connections --- packages/plugins/apps/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/plugins/apps/README.md b/packages/plugins/apps/README.md index b04baba9f..9f00057fe 100644 --- a/packages/plugins/apps/README.md +++ b/packages/plugins/apps/README.md @@ -68,7 +68,6 @@ import { request } from '@datadog/action-catalog/http/http'; export async function getExternalData() { return request({ - connectionId: '', inputs: { verb: 'GET', url: 'https://api.example.com/data', @@ -79,7 +78,9 @@ export async function getExternalData() { } ``` -Use an HTTP connection configured in your Datadog organization so credentials and access to the external service are managed through the Action Catalog. Frontend code should call the backend function rather than contacting the external service directly. +An HTTP connection is not required. Omit `connectionId` unless an HTTP connection already exists in the user's Datadog organization and contains authentication information the request needs. Connections must be created manually in the Datadog UI and their IDs copied into the app, so most external requests will not use one. When a suitable connection does exist, pass its ID as `connectionId` alongside `inputs`. + +Frontend code should call the backend function rather than contacting the external service directly. ### apps.dryRun