Create a new schedule for automated package upgrades.
Schedules define when and how often to automatically deploy package upgrades to a fleet
of hosts. Each schedule includes:
A filter query to select target hosts
A recurrence rule defining maintenance windows
A version strategy (e.g., always latest, or N versions behind latest)
When the schedule triggers during a maintenance window, it automatically creates a
deployment that upgrades the Datadog Agent to the specified version on all matching hosts.
This endpoint requires the agent_upgrade_write permission.
Query used to filter and select target hosts for scheduled deployments. Uses the Datadog query syntax.
rule [required]
object
Defines the recurrence pattern for the schedule. Specifies when deployments should be
automatically triggered based on maintenance windows.
days_of_week [required]
[string]
List of days of the week when the schedule should trigger. Valid values are:
"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun".
maintenance_window_duration [required]
int64
Duration of the maintenance window in minutes.
start_maintenance_window [required]
string
Start time of the maintenance window in 24-hour clock format (HH:MM).
Deployments will be triggered at this time on the specified days.
timezone [required]
string
Timezone for the schedule in IANA Time Zone Database format (e.g., "America/New_York", "UTC").
status
enum
The status of the schedule.
active: The schedule is active and will create deployments according to its recurrence rule.
inactive: The schedule is inactive and will not create any deployments.
Allowed enum values: active,inactive
version_to_latest
int64
Number of major versions behind the latest to target for upgrades.
0: Always upgrade to the latest version (default)
1: Upgrade to latest minus 1 major version
2: Upgrade to latest minus 2 major versions
Maximum value is 2.
type [required]
enum
The type of schedule resource.
Allowed enum values: schedule
default: schedule
{"data":{"attributes":{"name":"Weekly Production Agent Updates","query":"env:prod AND service:web","rule":{"days_of_week":["Mon","Wed","Fri"],"maintenance_window_duration":1200,"start_maintenance_window":"02:00","timezone":"America/New_York"},"status":"active","version_to_latest":0},"type":"schedule"}}
A schedule that automatically creates deployments based on a recurrence rule.
attributes [required]
object
Attributes of a schedule in the response.
created_at_unix
int64
Unix timestamp (seconds since epoch) when the schedule was created.
created_by
string
User handle of the person who created the schedule.
name
string
Human-readable name for the schedule.
query
string
Query used to filter and select target hosts for scheduled deployments. Uses the Datadog query syntax.
rule
object
Defines the recurrence pattern for the schedule. Specifies when deployments should be
automatically triggered based on maintenance windows.
days_of_week [required]
[string]
List of days of the week when the schedule should trigger. Valid values are:
"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun".
maintenance_window_duration [required]
int64
Duration of the maintenance window in minutes.
start_maintenance_window [required]
string
Start time of the maintenance window in 24-hour clock format (HH:MM).
Deployments will be triggered at this time on the specified days.
timezone [required]
string
Timezone for the schedule in IANA Time Zone Database format (e.g., "America/New_York", "UTC").
status
enum
The status of the schedule.
active: The schedule is active and will create deployments according to its recurrence rule.
inactive: The schedule is inactive and will not create any deployments.
Allowed enum values: active,inactive
updated_at_unix
int64
Unix timestamp (seconds since epoch) when the schedule was last updated.
updated_by
string
User handle of the person who last updated the schedule.
version_to_latest
int64
Number of major versions behind the latest to target for upgrades.
0: Always upgrade to the latest version
1: Upgrade to latest minus 1 major version
2: Upgrade to latest minus 2 major versions
Maximum value is 2.
id [required]
string
Unique identifier for the schedule.
type [required]
enum
The type of schedule resource.
Allowed enum values: schedule
default: schedule
{"data":{"attributes":{"created_at_unix":1699999999,"created_by":"user@example.com","name":"Weekly Production Agent Updates","query":"env:prod AND service:web","rule":{"days_of_week":["Mon","Wed","Fri"],"maintenance_window_duration":1200,"start_maintenance_window":"02:00","timezone":"America/New_York"},"status":"active","updated_at_unix":1699999999,"updated_by":"user@example.com","version_to_latest":0},"id":"abc-def-ghi-123","type":"schedule"}}
"""
Create a schedule returns "CREATED" response
"""fromdatadog_api_clientimportApiClient,Configurationfromdatadog_api_client.v2.api.fleet_automation_apiimportFleetAutomationApifromdatadog_api_client.v2.model.fleet_schedule_createimportFleetScheduleCreatefromdatadog_api_client.v2.model.fleet_schedule_create_attributesimportFleetScheduleCreateAttributesfromdatadog_api_client.v2.model.fleet_schedule_create_requestimportFleetScheduleCreateRequestfromdatadog_api_client.v2.model.fleet_schedule_recurrence_ruleimportFleetScheduleRecurrenceRulefromdatadog_api_client.v2.model.fleet_schedule_resource_typeimportFleetScheduleResourceTypefromdatadog_api_client.v2.model.fleet_schedule_statusimportFleetScheduleStatusbody=FleetScheduleCreateRequest(data=FleetScheduleCreate(attributes=FleetScheduleCreateAttributes(name="Weekly Production Agent Updates",query="env:prod AND service:web",rule=FleetScheduleRecurrenceRule(days_of_week=["Mon","Wed","Fri",],maintenance_window_duration=1200,start_maintenance_window="02:00",timezone="America/New_York",),status=FleetScheduleStatus.ACTIVE,version_to_latest=0,),type=FleetScheduleResourceType.SCHEDULE,),)configuration=Configuration()configuration.unstable_operations["create_fleet_schedule"]=TruewithApiClient(configuration)asapi_client:api_instance=FleetAutomationApi(api_client)response=api_instance.create_fleet_schedule(body=body)print(response)
# Create a schedule returns "CREATED" responserequire"datadog_api_client"DatadogAPIClient.configuredo|config|config.unstable_operations["v2.create_fleet_schedule".to_sym]=trueendapi_instance=DatadogAPIClient::V2::FleetAutomationAPI.newbody=DatadogAPIClient::V2::FleetScheduleCreateRequest.new({data:DatadogAPIClient::V2::FleetScheduleCreate.new({attributes:DatadogAPIClient::V2::FleetScheduleCreateAttributes.new({name:"Weekly Production Agent Updates",query:"env:prod AND service:web",rule:DatadogAPIClient::V2::FleetScheduleRecurrenceRule.new({days_of_week:["Mon","Wed","Fri",],maintenance_window_duration:1200,start_maintenance_window:"02:00",timezone:"America/New_York",}),status:DatadogAPIClient::V2::FleetScheduleStatus::ACTIVE,version_to_latest:0,}),type:DatadogAPIClient::V2::FleetScheduleResourceType::SCHEDULE,}),})papi_instance.create_fleet_schedule(body)
// Create a schedule returns "CREATED" responsepackagemainimport("context""encoding/json""fmt""os""github.com/DataDog/datadog-api-client-go/v2/api/datadog""github.com/DataDog/datadog-api-client-go/v2/api/datadogV2")funcmain(){body:=datadogV2.FleetScheduleCreateRequest{Data:datadogV2.FleetScheduleCreate{Attributes:datadogV2.FleetScheduleCreateAttributes{Name:"Weekly Production Agent Updates",Query:"env:prod AND service:web",Rule:datadogV2.FleetScheduleRecurrenceRule{DaysOfWeek:[]string{"Mon","Wed","Fri",},MaintenanceWindowDuration:1200,StartMaintenanceWindow:"02:00",Timezone:"America/New_York",},Status:datadogV2.FLEETSCHEDULESTATUS_ACTIVE.Ptr(),VersionToLatest:datadog.PtrInt64(0),},Type:datadogV2.FLEETSCHEDULERESOURCETYPE_SCHEDULE,},}ctx:=datadog.NewDefaultContext(context.Background())configuration:=datadog.NewConfiguration()configuration.SetUnstableOperationEnabled("v2.CreateFleetSchedule",true)apiClient:=datadog.NewAPIClient(configuration)api:=datadogV2.NewFleetAutomationApi(apiClient)resp,r,err:=api.CreateFleetSchedule(ctx,body)iferr!=nil{fmt.Fprintf(os.Stderr,"Error when calling `FleetAutomationApi.CreateFleetSchedule`: %v\n",err)fmt.Fprintf(os.Stderr,"Full HTTP response: %v\n",r)}responseContent,_:=json.MarshalIndent(resp,""," ")fmt.Fprintf(os.Stdout,"Response from `FleetAutomationApi.CreateFleetSchedule`:\n%s\n",responseContent)}
// Create a schedule returns "CREATED" responseimportcom.datadog.api.client.ApiClient;importcom.datadog.api.client.ApiException;importcom.datadog.api.client.v2.api.FleetAutomationApi;importcom.datadog.api.client.v2.model.FleetScheduleCreate;importcom.datadog.api.client.v2.model.FleetScheduleCreateAttributes;importcom.datadog.api.client.v2.model.FleetScheduleCreateRequest;importcom.datadog.api.client.v2.model.FleetScheduleRecurrenceRule;importcom.datadog.api.client.v2.model.FleetScheduleResourceType;importcom.datadog.api.client.v2.model.FleetScheduleResponse;importcom.datadog.api.client.v2.model.FleetScheduleStatus;importjava.util.Arrays;publicclassExample{publicstaticvoidmain(String[]args){ApiClientdefaultClient=ApiClient.getDefaultApiClient();defaultClient.setUnstableOperationEnabled("v2.createFleetSchedule",true);FleetAutomationApiapiInstance=newFleetAutomationApi(defaultClient);FleetScheduleCreateRequestbody=newFleetScheduleCreateRequest().data(newFleetScheduleCreate().attributes(newFleetScheduleCreateAttributes().name("Weekly Production Agent Updates").query("env:prod AND service:web").rule(newFleetScheduleRecurrenceRule().daysOfWeek(Arrays.asList("Mon","Wed","Fri")).maintenanceWindowDuration(1200L).startMaintenanceWindow("02:00").timezone("America/New_York")).status(FleetScheduleStatus.ACTIVE).versionToLatest(0L)).type(FleetScheduleResourceType.SCHEDULE));try{FleetScheduleResponseresult=apiInstance.createFleetSchedule(body);System.out.println(result);}catch(ApiExceptione){System.err.println("Exception when calling FleetAutomationApi#createFleetSchedule");System.err.println("Status code: "+e.getCode());System.err.println("Reason: "+e.getResponseBody());System.err.println("Response headers: "+e.getResponseHeaders());e.printStackTrace();}}}
// Create a schedule returns "CREATED" response
usedatadog_api_client::datadog;usedatadog_api_client::datadogV2::api_fleet_automation::FleetAutomationAPI;usedatadog_api_client::datadogV2::model::FleetScheduleCreate;usedatadog_api_client::datadogV2::model::FleetScheduleCreateAttributes;usedatadog_api_client::datadogV2::model::FleetScheduleCreateRequest;usedatadog_api_client::datadogV2::model::FleetScheduleRecurrenceRule;usedatadog_api_client::datadogV2::model::FleetScheduleResourceType;usedatadog_api_client::datadogV2::model::FleetScheduleStatus;#[tokio::main]asyncfnmain(){letbody=FleetScheduleCreateRequest::new(FleetScheduleCreate::new(FleetScheduleCreateAttributes::new("Weekly Production Agent Updates".to_string(),"env:prod AND service:web".to_string(),FleetScheduleRecurrenceRule::new(vec!["Mon".to_string(),"Wed".to_string(),"Fri".to_string()],1200,"02:00".to_string(),"America/New_York".to_string(),),).status(FleetScheduleStatus::ACTIVE).version_to_latest(0),FleetScheduleResourceType::SCHEDULE,));letmutconfiguration=datadog::Configuration::new();configuration.set_unstable_operation_enabled("v2.CreateFleetSchedule",true);letapi=FleetAutomationAPI::with_config(configuration);letresp=api.create_fleet_schedule(body).await;ifletOk(value)=resp{println!("{:#?}",value);}else{println!("{:#?}",resp.unwrap_err());}}
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com"DD_API_KEY="<DD_API_KEY>"DD_APP_KEY="<DD_APP_KEY>"cargo run
/**
* Create a schedule returns "CREATED" response
*/import{client,v2}from"@datadog/datadog-api-client";constconfiguration=client.createConfiguration();configuration.unstableOperations["v2.createFleetSchedule"]=true;constapiInstance=newv2.FleetAutomationApi(configuration);constparams: v2.FleetAutomationApiCreateFleetScheduleRequest={body:{data:{attributes:{name:"Weekly Production Agent Updates",query:"env:prod AND service:web",rule:{daysOfWeek:["Mon","Wed","Fri"],maintenanceWindowDuration: 1200,startMaintenanceWindow:"02:00",timezone:"America/New_York",},status:"active",versionToLatest: 0,},type:"schedule",},},};apiInstance.createFleetSchedule(params).then((data: v2.FleetScheduleResponse)=>{console.log("API called successfully. Returned data: "+JSON.stringify(data));}).catch((error: any)=>console.error(error));