cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

API execution through JS

Dyno193
Newcomer

Is it possible to execute API request right though Javascript within Workflows?

Example:

import fetch from 'node-fetch';

export default async function ({ executionId }) {
const apiToken = 'YOUR_API_TOKEN'; // Replace with your Dynatrace API token
const apiUrl = 'https://{environmentid}.live.dynatrace.com/api/config/v1/maintenanceWindows';

const maintenanceWindow = {
name: "Example Maintenance Window",
description: "Automatically created maintenance window",
type: "PLANNED",
suppression: "DETECT_PROBLEMS_DONT_ALERT",
schedule: {
scheduleType: "ONCE",
start: "2025-05-10T14:00:00Z",
end: "2025-05-10T16:00:00Z",
timeZone: "UTC"
},
scope: {
entities: ["HOST-1234567890ABCDEF"] // Replace with actual entity IDs
}
};

const response = await fetch(apiUrl, {
method: 'POST',
headers: {
'Authorization': `Api-Token ${apiToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(maintenanceWindow)
});

if (!response.ok) {
const error = await response.json();
console.error('Failed to create maintenance window:', error);
return {
status: "error",
message: "Failed to create maintenance window"
};
}

const data = await response.json();
console.log('Successfully created maintenance window:', data);
return {
status: "completed",
message: "Successfully created maintenance window",
data: data
};
}

1 REPLY 1

marco_irmer
Champion

Rather than interacting with the API via HTTP inside your workflow, you can actually make use of the Typescript SDKs to interact with things like settings more directly. In your case, I would think that the settingsObjectsClient should do the trick.

Here's a code sample from the documentation:

import { settingsObjectsClient } from "@dynatrace-sdk/client-classic-environment-v2";

const data =
  await settingsObjectsClient.postSettingsObjects({
    body: [
      {
        schemaId:
          "builtin:container.built-in-monitoring-rule",
        scope: "HOST-D3A3C5A146830A79",
        value: {},
      },
    ],
  });

 I hope this helps.

Featured Posts