Scheduling downtime via API getting overwritten

I’m trying to schedule downtime for a host (all services) via the icinga2 API. We’re using the icingadb module, which I understand is mutually exclusive with the older monitoring module, so its /icingaweb2/monitoring/host/schedule-downtime interface for scheduling downtime through icingaweb2 isn’t available to me.

When I schedule the downtime directly on one of our icinga2 nodes, it shows up briefly in /icingaweb2/icingadb/downtimes, and then goes away. Something seems to be overwriting it. My suspicion is that this is icingaweb2 (or the director module) doing this somehow because I didn’t schedule the downtime through it, I did it directly on the icinga node. But so far as I can see, there is no API way to schedule downtime through icingaweb2 or director when using the icingadb module, so the only way to do it via API is directly on the node with the icinga2 API. We have 2 nodes called icinga3 and icinga4. icinga3 is the “main” one where changes are made, and then sync’ed over to icinga4. Does anyone know if there’s a way to schedule downtime via API in this setup? Or if there’s a way to get icingaweb2 to pick up on downtime scheduled directly on a node this way? Thanks!

Icinga and OS Version info from “icinga2 --version”:
icinga2 - The Icinga 2 network monitoring daemon (version: r2.13.6-1)

Copyright (c) 2012-2024 Icinga GmbH (https://icinga.com/)
License GPLv2+: GNU GPL version 2 or later https://gnu.org/licenses/gpl2.html
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

System information:
Platform: Debian GNU/Linux
Platform version: 12 (bookworm)
Kernel: Linux
Kernel version: 6.1.0-10-amd64
Architecture: x86_64

Feature information from “icinga2 feature list”:
Disabled features: command compatlog debuglog elasticsearch gelf graphite influxdb influxdb2 livestatus opentsdb perfdata statusdata syslog
Enabled features: api checker icingadb mainlog notification

Icinga Web 2 version and modules (System - About)
Icinga Web 2 Version 2.11.4
PHP Version 8.2.18

Config validation from “icinga2 daemon -C”:
[2024-04-16 16:00:56 -0400] information/cli: Icinga application loader (version: r2.13.6-1)
[2024-04-16 16:00:56 -0400] information/cli: Loading configuration file(s).
[2024-04-16 16:00:56 -0400] information/ConfigItem: Committing config item(s).
[2024-04-16 16:00:56 -0400] information/ApiListener: My API identity: icinga3.our.domain
[2024-04-16 16:00:57 -0400] warning/ApplyRule: Apply rule ‘Disk space’ (in /var/lib/icinga2/api/packages/director/2340b00a-b2c6-499e-9c6d-0e8b076f7ea3/zones.d/director-global/servicesets.conf: 75:1-75:26) for type ‘Service’ does not match anywhere!
[2024-04-16 16:00:57 -0400] warning/ApplyRule: Apply rule ‘Load’ (in /var/lib/icinga2/api/packages/director/2340b00a-b2c6-499e-9c6d-0e8b076f7ea3/zones.d/director-global/servicesets.conf: 85:1-85:20) for type ‘Service’ does not match anywhere!
[2024-04-16 16:00:57 -0400] warning/ApplyRule: Apply rule ‘Memory’ (in /var/lib/icinga2/api/packages/director/2340b00a-b2c6-499e-9c6d-0e8b076f7ea3/zones.d/director-global/servicesets.conf: 95:1-95:22) for type ‘Service’ does not match anywhere!
[2024-04-16 16:00:57 -0400] warning/ApplyRule: Apply rule ‘APT’ (in /var/lib/icinga2/api/packages/director/2340b00a-b2c6-499e-9c6d-0e8b076f7ea3/zones.d/director-global/servicesets.conf: 105:1-105:19) for type ‘Service’ does not match anywhere!
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1 NotificationComponent.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1 CheckerComponent.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 3 Users.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1697 Services.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 3 Zones.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 3 NotificationCommands.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 583 Notifications.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 5529 Hosts.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1 IcingaApplication.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 7 HostGroups.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 2 Endpoints.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1 FileLogger.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 3 ApiUsers.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 233 CheckCommands.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1 ApiListener.
[2024-04-16 16:00:57 -0400] information/ConfigItem: Instantiated 1 IcingaDB.
[2024-04-16 16:00:57 -0400] information/ScriptGlobal: Dumping variables to file ‘/var/cache/icinga2/icinga2.vars’
[2024-04-16 16:00:57 -0400] information/cli: Finished validating the configuration file(s).

zones.conf file:
/*

  • Generated by Icinga 2 node setup commands
  • on 2023-08-08 16:07:29 -0400
    */

object Endpoint “icinga3.our.domain” {
}

object Endpoint “icinga4.our.domain” {
host = “icinga4 IP address here”
}

object Zone “master” {
endpoints = [ “icinga3.our.domain”, “icinga4.our.domain” ]
}

object Zone “global-templates” {
global = true
}

object Zone “director-global” {
global = true
}