{
  "generated": "2026-06-19T11:57:22.871Z",
  "product": {
    "id": "foundation",
    "label": "Foundation",
    "repo": "GravityKit/Foundation",
    "version": "1.24.1",
    "actions": [
      "gk/foundation/abilities/register/before",
      "gk/foundation/abilities/registered",
      "gk/foundation/ajax/after",
      "gk/foundation/ajax/before",
      "gk/foundation/initialized",
      "gk/foundation/licenses/initialized",
      "gk/foundation/notices/added",
      "gk/foundation/notices/ajax/dismissed-global",
      "gk/foundation/notices/ajax/dismissed",
      "gk/foundation/notices/ajax/snoozed",
      "gk/foundation/notices/removed",
      "gk/foundation/notices/render/before",
      "gk/foundation/notices/saved",
      "gk/foundation/rest/route/after",
      "gk/foundation/rest/route/before",
      "gk/foundation/scheduler/callbacks/registered",
      "gk/foundation/scheduler/job/ . $job_name . /delete",
      "gk/foundation/scheduler/job/ . $job_name . /unschedule/latest",
      "gk/foundation/scheduler/job/ . $job_name . /unschedule",
      "gk/foundation/scheduler/job/ . $name . /paused",
      "gk/foundation/scheduler/job/ . $name . /unpaused",
      "gk/foundation/scheduler/job/canceled",
      "gk/foundation/scheduler/job/completed",
      "gk/foundation/scheduler/job/failed",
      "gk/foundation/scheduler/job/paused",
      "gk/foundation/scheduler/job/resumed",
      "gk/foundation/scheduler/job/retried",
      "gk/foundation/scheduler/job/schedule/after",
      "gk/foundation/scheduler/job/schedule/before",
      "gk/foundation/scheduler/job/schedule/failed",
      "gk/foundation/scheduler/task/execute/after",
      "gk/foundation/scheduler/task/execute/before",
      "gk/foundation/scheduler/task/execute/failed",
      "gk/foundation/secure-download/after-download",
      "gk/foundation/secure-download/before-download",
      "gk/foundation/secure-download/error",
      "gk/foundation/settings/initialized",
      "gk/foundation/settings/\\{$plugin\\}/validation/\\{$setting[id]\\}",
      "gk/foundation/translations/initialized"
    ],
    "filters": [
      "gk/foundation/abilities/products",
      "gk/foundation/abilities/rate-limit",
      "gk/foundation/abilities/register",
      "gk/foundation/abilities/render-ui",
      "gk/foundation/abilities/rest/catalog/permission",
      "gk/foundation/admin-menu-badge-sync/data",
      "gk/foundation/admin-menu/counter",
      "gk/foundation/admin-menu/initialize",
      "gk/foundation/admin-menu/position",
      "gk/foundation/admin-menu/submenu/\\{$submenu_item[id]\\}/counter",
      "gk/foundation/admin-menu/submenus",
      "gk/foundation/ajax/result",
      "gk/foundation/ajax/\\{$router\\}/routes",
      "gk/foundation/cli/commands",
      "gk/foundation/force-standalone-foundation-instance",
      "gk/foundation/inline-scripts",
      "gk/foundation/inline-styles",
      "gk/foundation/integrations/gravityforms/add-to-system-report",
      "gk/foundation/integrations/helpscout/configuration",
      "gk/foundation/integrations/helpscout/display",
      "gk/foundation/integrity/revocation-url",
      "gk/foundation/is-production-environment",
      "gk/foundation/licenses/api-request-timeout",
      "gk/foundation/licenses/hide-personal-information",
      "gk/foundation/licenses/permissions",
      "gk/foundation/logger/allow-heartbeat-requests",
      "gk/foundation/logger/log-path",
      "gk/foundation/notices/active",
      "gk/foundation/notices/add",
      "gk/foundation/notices/ajax/live-response",
      "gk/foundation/notices/ajax/live-update",
      "gk/foundation/notices/content/allowed-tags",
      "gk/foundation/notices/evaluation/after",
      "gk/foundation/notices/evaluation/before",
      "gk/foundation/notices/evaluation/notice",
      "gk/foundation/notices/render/container",
      "gk/foundation/notices/render/payload",
      "gk/foundation/notices/update",
      "gk/foundation/notices/user-state",
      "gk/foundation/products/data",
      "gk/foundation/products/disable-history",
      "gk/foundation/products/\\{$product[slug]\\}/action-links",
      "gk/foundation/rest/route/response",
      "gk/foundation/rest/routes",
      "gk/foundation/scheduler/enabled",
      "gk/foundation/scheduler/health-check/loopback-timeout",
      "gk/foundation/scheduler/job/ . $name . / . $schedule_type . /enable",
      "gk/foundation/scheduler/job/ . $this->name() . /data",
      "gk/foundation/scheduler/job/ . $this->name() . /priority",
      "gk/foundation/scheduler/job/ . $this->name() . /progress",
      "gk/foundation/scheduler/job/ . $this->name() . /unique",
      "gk/foundation/scheduler/job/instances/query/default",
      "gk/foundation/scheduler/job/max-tasks",
      "gk/foundation/scheduler/job/stuck-threshold",
      "gk/foundation/scheduler/jobs/scheduled",
      "gk/foundation/scheduler/loopback-base-url",
      "gk/foundation/scheduler/overdue-threshold",
      "gk/foundation/scheduler/recurring/skip-overlap",
      "gk/foundation/scheduler/request/trigger/timeout",
      "gk/foundation/scheduler/task/ . $this->name . /args",
      "gk/foundation/scheduler/task/ . $this->name . /callback",
      "gk/foundation/scheduler/task/ . $this->name . /enabled",
      "gk/foundation/scheduler/task/get/can-fail",
      "gk/foundation/scheduler/task/max-no-progress-reruns",
      "gk/foundation/scheduler/task/max-retries",
      "gk/foundation/scheduler/task/set/args",
      "gk/foundation/scheduler/task/set/dependencies",
      "gk/foundation/scheduler/task/set/job-data",
      "gk/foundation/scheduler/task/time-budget",
      "gk/foundation/scheduler/ui/poll-interval",
      "gk/foundation/scheduler/ui/show-in-network-admin",
      "gk/foundation/secure-download/endpoint",
      "gk/foundation/secure-download/error-response",
      "gk/foundation/secure-download/headers",
      "gk/foundation/secure-download/history-length",
      "gk/foundation/secure-download/history-record",
      "gk/foundation/secure-download/max-remote-size",
      "gk/foundation/secure-download/remote-redirection",
      "gk/foundation/secure-download/remote-request-args",
      "gk/foundation/secure-download/remote-source",
      "gk/foundation/secure-download/save-history",
      "gk/foundation/secure-download/token-data",
      "gk/foundation/secure-download/validate-token",
      "gk/foundation/secure-download/visitor-ip",
      "gk/foundation/settings/capability",
      "gk/foundation/settings/data/extra",
      "gk/foundation/settings/data/plugins",
      "gk/foundation/settings/\\{$plugin\\}/save/before",
      "gk/foundation/settings/\\{$plugin_id\\}/validation/after",
      "gk/foundation/settings/\\{$plugin_id\\}/validation/before",
      "gk/foundation/settings/\\{$product[slug]\\}/settings-url",
      "gk/foundation/settings",
      "gk/foundation/show-loaded-by-message",
      "gk/foundation/skip-site-health-check",
      "gk/foundation/translations/api-url",
      "gk/foundation/translations/disable-download",
      "gk/foundation/translations/permissions/can-install-languages",
      "gk/foundation/translations/\\{$plugin_data[TextDomain]\\}/mo-file"
    ]
  },
  "hooks": [
    {
      "id": "gk-foundation-abilities-register-before",
      "name": "gk/foundation/abilities/register/before",
      "type": "action",
      "product": "foundation",
      "description": "Fires before the `gk/foundation/abilities/register` filter runs so products can register via the Foundation facade.",
      "parameters": [
        {
          "name": "manager",
          "type": "\\Manager",
          "description": "Manager instance."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_action( 'gk/foundation/abilities/register/before', function($manager) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.23.0",
      "source": {
        "file": "Abilities/Framework.php",
        "line": 234
      },
      "url": "/docs/foundation/actions/gk-foundation-abilities-register-before/",
      "related": [
        "gk/foundation/abilities/register"
      ]
    },
    {
      "id": "gk-foundation-abilities-registered",
      "name": "gk/foundation/abilities/registered",
      "type": "action",
      "product": "foundation",
      "description": "Fires after all GravityKit abilities are registered.",
      "parameters": [
        {
          "name": "manager",
          "type": "\\Manager",
          "description": "Manager instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/abilities/registered', function($manager) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.23.0",
      "source": {
        "file": "Abilities/Framework.php",
        "line": 291
      },
      "url": "/docs/foundation/actions/gk-foundation-abilities-registered/",
      "related": [
        "gk/foundation/abilities/products",
        "gk/foundation/abilities/rate-limit",
        "gk/foundation/abilities/register",
        "gk/foundation/abilities/render-ui"
      ]
    },
    {
      "id": "gk-foundation-ajax-after",
      "name": "gk/foundation/ajax/after",
      "type": "action",
      "product": "foundation",
      "description": "Fires after the Ajax call is processed successfully. Does not fire when the route throws or the /result filter transforms the response into an Exception or WP_Error.",
      "parameters": [],
      "categories": [
        "after"
      ],
      "example": "add_action( 'gk/foundation/ajax/after', function() {\n    // Your code here\n} );",
      "since": "1.0.11",
      "source": {
        "file": "WP/AjaxRouter.php",
        "line": 184
      },
      "url": "/docs/foundation/actions/gk-foundation-ajax-after/",
      "related": [
        "gk/foundation/ajax/before",
        "gk/foundation/ajax/result"
      ]
    },
    {
      "id": "gk-foundation-ajax-before",
      "name": "gk/foundation/ajax/before",
      "type": "action",
      "product": "foundation",
      "description": "Fires before the Ajax call is processed.",
      "parameters": [],
      "categories": [
        "before"
      ],
      "example": "add_action( 'gk/foundation/ajax/before', function() {\n    // Your code here\n} );",
      "since": "1.0.11",
      "source": {
        "file": "WP/AjaxRouter.php",
        "line": 139
      },
      "url": "/docs/foundation/actions/gk-foundation-ajax-before/",
      "related": [
        "gk/foundation/ajax/after",
        "gk/foundation/ajax/result"
      ]
    },
    {
      "id": "gk-foundation-initialized",
      "name": "gk/foundation/initialized",
      "type": "action",
      "product": "foundation",
      "description": "Fires when the class has finished initializing.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/initialized', function() {\n    // Your code here\n} );",
      "since": "1.0.0",
      "source": {
        "file": "Core.php",
        "line": 472
      },
      "url": "/docs/foundation/actions/gk-foundation-initialized/",
      "related": [
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-scripts",
        "gk/foundation/inline-styles",
        "gk/foundation/is-production-environment",
        "gk/foundation/settings"
      ]
    },
    {
      "id": "gk-foundation-licenses-initialized",
      "name": "gk/foundation/licenses/initialized",
      "type": "action",
      "product": "foundation",
      "description": "Fires when the class has finished initializing.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/licenses/initialized', function() {\n    // Your code here\n} );",
      "since": "1.0.0",
      "source": {
        "file": "Licenses/Framework.php",
        "line": 184
      },
      "url": "/docs/foundation/actions/gk-foundation-licenses-initialized/",
      "related": [
        "gk/foundation/licenses/api-request-timeout",
        "gk/foundation/licenses/hide-personal-information",
        "gk/foundation/licenses/permissions"
      ]
    },
    {
      "id": "gk-foundation-notices-added",
      "name": "gk/foundation/notices/added",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a stored notice has been successfully added.",
      "parameters": [
        {
          "name": "notice",
          "type": "\\NoticeInterface",
          "description": "The notice that was added."
        },
        {
          "name": "type",
          "type": "string",
          "description": "Notice type: 'runtime' or 'stored'."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/notices/added', function($notice, $type) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeManager.php",
        "line": 198
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-added/",
      "related": [
        "gk/foundation/notices/removed",
        "gk/foundation/notices/saved",
        "gk/foundation/notices/active",
        "gk/foundation/notices/add",
        "gk/foundation/notices/update"
      ]
    },
    {
      "id": "gk-foundation-notices-ajax-dismissed-global",
      "name": "gk/foundation/notices/ajax/dismissed-global",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a notice has been globally dismissed via Ajax.",
      "parameters": [
        {
          "name": "notice_id",
          "type": "string",
          "description": "ID of the globally dismissed notice."
        },
        {
          "name": "user_id",
          "type": "int",
          "description": "ID of the user who globally dismissed the notice."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/notices/ajax/dismissed-global', function($notice_id, $user_id) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.4.0",
      "source": {
        "file": "Notices/NoticeAjaxController.php",
        "line": 224
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-ajax-dismissed-global/",
      "related": [
        "gk/foundation/notices/ajax/dismissed",
        "gk/foundation/notices/ajax/snoozed",
        "gk/foundation/notices/ajax/live-response",
        "gk/foundation/notices/ajax/live-update"
      ]
    },
    {
      "id": "gk-foundation-notices-ajax-dismissed",
      "name": "gk/foundation/notices/ajax/dismissed",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a notice has been dismissed via Ajax.",
      "parameters": [
        {
          "name": "notice_id",
          "type": "string",
          "description": "ID of the dismissed notice."
        },
        {
          "name": "user_id",
          "type": "int",
          "description": "ID of the user who dismissed the notice."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/notices/ajax/dismissed', function($notice_id, $user_id) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeAjaxController.php",
        "line": 124
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-ajax-dismissed/",
      "related": [
        "gk/foundation/notices/ajax/dismissed-global",
        "gk/foundation/notices/ajax/snoozed",
        "gk/foundation/notices/ajax/live-response",
        "gk/foundation/notices/ajax/live-update"
      ]
    },
    {
      "id": "gk-foundation-notices-ajax-snoozed",
      "name": "gk/foundation/notices/ajax/snoozed",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a notice has been snoozed via Ajax.",
      "parameters": [
        {
          "name": "notice_id",
          "type": "string",
          "description": "ID of the snoozed notice."
        },
        {
          "name": "user_id",
          "type": "int",
          "description": "ID of the user who snoozed the notice."
        },
        {
          "name": "snooze_until",
          "type": "int",
          "description": "Timestamp when the snooze expires."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/notices/ajax/snoozed', function($notice_id, $user_id, $snooze_until) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeAjaxController.php",
        "line": 316
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-ajax-snoozed/",
      "related": [
        "gk/foundation/notices/ajax/dismissed-global",
        "gk/foundation/notices/ajax/dismissed",
        "gk/foundation/notices/ajax/live-response",
        "gk/foundation/notices/ajax/live-update"
      ]
    },
    {
      "id": "gk-foundation-notices-removed",
      "name": "gk/foundation/notices/removed",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a notice has been removed from storage.",
      "parameters": [
        {
          "name": "notice_id",
          "type": "string",
          "description": "The ID of the notice that was removed."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/notices/removed', function($notice_id) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeRepository.php",
        "line": 333
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-removed/",
      "related": [
        "gk/foundation/notices/added",
        "gk/foundation/notices/saved",
        "gk/foundation/notices/active",
        "gk/foundation/notices/add",
        "gk/foundation/notices/update"
      ]
    },
    {
      "id": "gk-foundation-notices-render-before",
      "name": "gk/foundation/notices/render/before",
      "type": "action",
      "product": "foundation",
      "description": "Fires before notices are rendered.",
      "parameters": [
        {
          "name": "notices",
          "type": "\\NoticeInterface[]",
          "description": "Active notices to be rendered (passed by reference)."
        },
        {
          "name": "context",
          "type": "string",
          "description": "Current admin context."
        }
      ],
      "categories": [
        "rendering",
        "before"
      ],
      "example": "add_action( 'gk/foundation/notices/render/before', function($notices, $context) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeManager.php",
        "line": 577
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-render-before/",
      "related": [
        "gk/foundation/notices/render/container",
        "gk/foundation/notices/render/payload"
      ]
    },
    {
      "id": "gk-foundation-notices-saved",
      "name": "gk/foundation/notices/saved",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a notice has been persisted to storage.",
      "parameters": [
        {
          "name": "notice",
          "type": "\\StoredNoticeInterface",
          "description": "The notice that was persisted."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/notices/saved', function($notice) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeRepository.php",
        "line": 128
      },
      "url": "/docs/foundation/actions/gk-foundation-notices-saved/",
      "related": [
        "gk/foundation/notices/added",
        "gk/foundation/notices/removed",
        "gk/foundation/notices/active",
        "gk/foundation/notices/add",
        "gk/foundation/notices/update"
      ]
    },
    {
      "id": "gk-foundation-rest-route-after",
      "name": "gk/foundation/rest/route/after",
      "type": "action",
      "product": "foundation",
      "description": "Fires after the REST API route is processed.",
      "parameters": [],
      "categories": [
        "api",
        "after"
      ],
      "example": "add_action( 'gk/foundation/rest/route/after', function() {\n    // Your code here\n} );",
      "since": "1.0.11",
      "source": {
        "file": "WP/RESTController.php",
        "line": 194
      },
      "url": "/docs/foundation/actions/gk-foundation-rest-route-after/",
      "related": [
        "gk/foundation/rest/route/before",
        "gk/foundation/rest/route/response"
      ]
    },
    {
      "id": "gk-foundation-rest-route-before",
      "name": "gk/foundation/rest/route/before",
      "type": "action",
      "product": "foundation",
      "description": "Fires before the REST API route is processed.",
      "parameters": [],
      "categories": [
        "api",
        "before"
      ],
      "example": "add_action( 'gk/foundation/rest/route/before', function() {\n    // Your code here\n} );",
      "since": "1.0.11",
      "source": {
        "file": "WP/RESTController.php",
        "line": 165
      },
      "url": "/docs/foundation/actions/gk-foundation-rest-route-before/",
      "related": [
        "gk/foundation/rest/route/after",
        "gk/foundation/rest/route/response"
      ]
    },
    {
      "id": "gk-foundation-scheduler-callbacks-registered",
      "name": "gk/foundation/scheduler/callbacks/registered",
      "type": "action",
      "product": "foundation",
      "description": "Fires when all callbacks are registered in WordPress.",
      "parameters": [
        {
          "name": "schedule_handler",
          "type": "\\ScheduleHandler",
          "description": "Schedule handler object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/callbacks/registered', function($schedule_handler) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 206
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-callbacks-registered/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-job-.job_name.-delete",
      "name": "gk/foundation/scheduler/job/ . $job_name . /delete",
      "type": "action",
      "product": "foundation",
      "description": "Fires before deleting all pending and paused job instances.",
      "parameters": [
        {
          "name": "job_name",
          "type": "string",
          "description": "The job name."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/ . $job_name . /delete', function($job_name) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 444
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-.job_name.-delete/",
      "related": [
        "gk/foundation/scheduler/job/ . $job_name . /unschedule"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-.job_name.-unschedule-latest",
      "name": "gk/foundation/scheduler/job/ . $job_name . /unschedule/latest",
      "type": "action",
      "product": "foundation",
      "description": "Fires before unscheduling the latest job run.",
      "parameters": [
        {
          "name": "job_name",
          "type": "string",
          "description": "The job name."
        },
        {
          "name": "args",
          "type": "array\\",
          "description": "null`"
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/ . $job_name . /unschedule/latest', function($job_name, $args) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 392
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-.job_name.-unschedule-latest/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-job-.job_name.-unschedule",
      "name": "gk/foundation/scheduler/job/ . $job_name . /unschedule",
      "type": "action",
      "product": "foundation",
      "description": "Fires before unscheduling all job instances.",
      "parameters": [
        {
          "name": "job_name",
          "type": "string",
          "description": "The job name."
        },
        {
          "name": "args",
          "type": "array\\",
          "description": "null`"
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/ . $job_name . /unschedule', function($job_name, $args) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 418
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-.job_name.-unschedule/",
      "related": [
        "gk/foundation/scheduler/job/ . $job_name . /delete"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-.name.-paused",
      "name": "gk/foundation/scheduler/job/ . $name . /paused",
      "type": "action",
      "product": "foundation",
      "description": "Fires when the job is paused.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/ . $name . /paused', function() {\n    // Your code here\n} );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 491
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-.name.-paused/",
      "related": [
        "gk/foundation/scheduler/job/ . $name . /unpaused"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-.name.-unpaused",
      "name": "gk/foundation/scheduler/job/ . $name . /unpaused",
      "type": "action",
      "product": "foundation",
      "description": "Fires when the job is unpaused.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/ . $name . /unpaused', function() {\n    // Your code here\n} );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 527
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-.name.-unpaused/",
      "related": [
        "gk/foundation/scheduler/job/ . $name . /paused"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-canceled",
      "name": "gk/foundation/scheduler/job/canceled",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a job is canceled from the UI or programmatically.",
      "parameters": [
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The canceled job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/canceled', function($job) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1321
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-canceled/",
      "related": [
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/resumed",
        "gk/foundation/scheduler/job/retried"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-completed",
      "name": "gk/foundation/scheduler/job/completed",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a job is marked as completed.",
      "parameters": [
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The completed job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/completed', function($job) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 798
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-completed/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/resumed",
        "gk/foundation/scheduler/job/retried"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-failed",
      "name": "gk/foundation/scheduler/job/failed",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a job is marked as failed.",
      "parameters": [
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The failed job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/failed', function($job) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/TaskExecutor.php",
        "line": 941
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-failed/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/resumed",
        "gk/foundation/scheduler/job/retried"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-paused",
      "name": "gk/foundation/scheduler/job/paused",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a job is paused.",
      "parameters": [
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The paused job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/paused', function($job) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1246
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-paused/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/resumed",
        "gk/foundation/scheduler/job/retried"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-resumed",
      "name": "gk/foundation/scheduler/job/resumed",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a paused job is resumed.",
      "parameters": [
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The resumed job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/resumed', function($job) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1279
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-resumed/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/retried"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-retried",
      "name": "gk/foundation/scheduler/job/retried",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a failed job is retried.",
      "parameters": [
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The retried job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/retried', function($job) {\n    // Your code here\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1476
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-retried/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/resumed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-schedule-after",
      "name": "gk/foundation/scheduler/job/schedule/after",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a job is successfully scheduled.",
      "parameters": [
        {
          "name": "job_id",
          "type": "int",
          "description": "The job ID."
        },
        {
          "name": "name",
          "type": "string",
          "description": "The job name."
        },
        {
          "name": "schedule_type",
          "type": "string",
          "description": "The schedule type. Accepts 'async', 'single', 'recurring', or 'cron'."
        }
      ],
      "categories": [
        "after"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/schedule/after', function($job_id, $name, $schedule_type) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 262
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-schedule-after/",
      "related": [
        "gk/foundation/scheduler/job/schedule/before",
        "gk/foundation/scheduler/job/schedule/failed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-schedule-before",
      "name": "gk/foundation/scheduler/job/schedule/before",
      "type": "action",
      "product": "foundation",
      "description": "Fires before a job is scheduled.",
      "parameters": [
        {
          "name": "name",
          "type": "string",
          "description": "The job name."
        },
        {
          "name": "args",
          "type": "array",
          "description": "The job args."
        },
        {
          "name": "schedule_type",
          "type": "string",
          "description": "The schedule type. Accepts 'async', 'single', 'recurring', or 'cron'."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/schedule/before', function($name, $args, $schedule_type) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 248
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-schedule-before/",
      "related": [
        "gk/foundation/scheduler/job/schedule/after",
        "gk/foundation/scheduler/job/schedule/failed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-schedule-failed",
      "name": "gk/foundation/scheduler/job/schedule/failed",
      "type": "action",
      "product": "foundation",
      "description": "Fires when a job fails to schedule.",
      "parameters": [
        {
          "name": "name",
          "type": "string",
          "description": "The job name."
        },
        {
          "name": "args",
          "type": "array",
          "description": "The job args."
        },
        {
          "name": "schedule_type",
          "type": "string",
          "description": "The schedule type. Accepts 'async', 'single', 'recurring', or 'cron'."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/job/schedule/failed', function($name, $args, $schedule_type) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 273
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-job-schedule-failed/",
      "related": [
        "gk/foundation/scheduler/job/schedule/after",
        "gk/foundation/scheduler/job/schedule/before"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-execute-after",
      "name": "gk/foundation/scheduler/task/execute/after",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a task is executed.",
      "parameters": [
        {
          "name": "task",
          "type": "\\Task",
          "description": "The task that was executed."
        },
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The job instance."
        },
        {
          "name": "next_rules",
          "type": "\\NextRunRules\\",
          "description": "null`"
        }
      ],
      "categories": [
        "after"
      ],
      "example": "add_action( 'gk/foundation/scheduler/task/execute/after', function($task, $job, $next_rules) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 606
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-task-execute-after/",
      "related": [
        "gk/foundation/scheduler/task/execute/before",
        "gk/foundation/scheduler/task/execute/failed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-execute-before",
      "name": "gk/foundation/scheduler/task/execute/before",
      "type": "action",
      "product": "foundation",
      "description": "Fires before a task is executed.",
      "parameters": [
        {
          "name": "task",
          "type": "\\Task",
          "description": "The task being executed."
        },
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The job instance."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_action( 'gk/foundation/scheduler/task/execute/before', function($task, $job) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 575
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-task-execute-before/",
      "related": [
        "gk/foundation/scheduler/task/execute/after",
        "gk/foundation/scheduler/task/execute/failed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-execute-failed",
      "name": "gk/foundation/scheduler/task/execute/failed",
      "type": "action",
      "product": "foundation",
      "description": "Fires when a task fails after exhausting retries.",
      "parameters": [
        {
          "name": "task",
          "type": "\\Task",
          "description": "The failed task."
        },
        {
          "name": "job",
          "type": "\\JobInstance",
          "description": "The job instance."
        },
        {
          "name": "exception",
          "type": "\\Throwable",
          "description": "The exception that caused the failure."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/scheduler/task/execute/failed', function($task, $job, $exception) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 502
      },
      "url": "/docs/foundation/actions/gk-foundation-scheduler-task-execute-failed/",
      "related": [
        "gk/foundation/scheduler/task/execute/after",
        "gk/foundation/scheduler/task/execute/before"
      ]
    },
    {
      "id": "gk-foundation-secure-download-after-download",
      "name": "gk/foundation/secure-download/after-download",
      "type": "action",
      "product": "foundation",
      "description": "Fires after a file download completes.",
      "parameters": [
        {
          "name": "file_path",
          "type": "string",
          "description": "The absolute path to the file."
        },
        {
          "name": "user_id",
          "type": "int",
          "description": "The user ID that downloaded the file."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The decrypted token data."
        }
      ],
      "categories": [
        "after"
      ],
      "example": "add_action( 'gk/foundation/secure-download/after-download', function($file_path, $user_id, $token_data) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 602
      },
      "url": "/docs/foundation/actions/gk-foundation-secure-download-after-download/",
      "related": [
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response",
        "gk/foundation/secure-download/headers"
      ]
    },
    {
      "id": "gk-foundation-secure-download-before-download",
      "name": "gk/foundation/secure-download/before-download",
      "type": "action",
      "product": "foundation",
      "description": "Fires before a file download starts.",
      "parameters": [
        {
          "name": "file_path",
          "type": "string",
          "description": "The absolute path to the file."
        },
        {
          "name": "user_id",
          "type": "int",
          "description": "The user ID downloading the file."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The decrypted token data."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_action( 'gk/foundation/secure-download/before-download', function($file_path, $user_id, $token_data) {\n    // Your code here\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 585
      },
      "url": "/docs/foundation/actions/gk-foundation-secure-download-before-download/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response",
        "gk/foundation/secure-download/headers"
      ]
    },
    {
      "id": "gk-foundation-secure-download-error",
      "name": "gk/foundation/secure-download/error",
      "type": "action",
      "product": "foundation",
      "description": "Fires when a download error occurs.",
      "parameters": [
        {
          "name": "exception",
          "type": "\\Exception",
          "description": "The exception that was thrown."
        },
        {
          "name": "token",
          "type": "string",
          "description": "The download token that was provided."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/secure-download/error', function($exception, $token) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 651
      },
      "url": "/docs/foundation/actions/gk-foundation-secure-download-error/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response",
        "gk/foundation/secure-download/headers"
      ]
    },
    {
      "id": "gk-foundation-settings-initialized",
      "name": "gk/foundation/settings/initialized",
      "type": "action",
      "product": "foundation",
      "description": "Fires when the class has finished initializing.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/settings/initialized', function() {\n    // Your code here\n} );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 125
      },
      "url": "/docs/foundation/actions/gk-foundation-settings-initialized/",
      "related": [
        "gk/foundation/settings/capability"
      ]
    },
    {
      "id": "gk-foundation-settings-plugin-validation-settingid",
      "name": "gk/foundation/settings/\\{$plugin\\}/validation/\\{$setting[id]\\}",
      "type": "action",
      "product": "foundation",
      "description": "Runs when validation rules are not specified and before the setting is marked as validated.",
      "parameters": [
        {
          "name": "setting",
          "type": "array",
          "description": "Original setting."
        },
        {
          "name": "value_to_validate",
          "type": "string",
          "description": "Value to validate."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/settings/\\{$plugin\\}/validation/\\{$setting[id]\\}', function($setting, $value_to_validate) {\n    // Your code here\n}, 10, 2 );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/SettingsValidator.php",
        "line": 199
      },
      "url": "/docs/foundation/actions/gk-foundation-settings-plugin-validation-settingid/",
      "related": []
    },
    {
      "id": "gk-foundation-translations-initialized",
      "name": "gk/foundation/translations/initialized",
      "type": "action",
      "product": "foundation",
      "description": "Fires when the class has finished initializing.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_action( 'gk/foundation/translations/initialized', function() {\n    // Your code here\n} );",
      "since": "1.0.0",
      "source": {
        "file": "Translations/Framework.php",
        "line": 173
      },
      "url": "/docs/foundation/actions/gk-foundation-translations-initialized/",
      "related": [
        "gk/foundation/translations/api-url",
        "gk/foundation/translations/disable-download"
      ]
    },
    {
      "id": "gk-foundation-abilities-products",
      "name": "gk/foundation/abilities/products",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the GravityKit product declarations.",
      "parameters": [
        {
          "name": "products",
          "type": "array",
          "description": "Product declarations keyed by product slug (e.g. <code>gravityview</code>). Each declaration is an array:"
        },
        {
          "name": "mcp_prefix",
          "type": "string",
          "description": "Short MCP tool-name prefix (e.g. <code>gv</code>). Required — a missing prefix triggers _doing_it_wrong() and the full product slug is used as a fallback."
        },
        {
          "name": "categories",
          "type": "array",
          "description": "Optional. Ability categories to register, keyed by slug; each entry has <code>label</code> and <code>description</code>."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/abilities/products', function($products, $mcp_prefix, $categories) {\n    // Modify $products as needed\n    return $products;\n}, 10, 3 );",
      "since": "1.23.0",
      "source": {
        "file": "Abilities/Manager.php",
        "line": 117
      },
      "url": "/docs/foundation/filters/gk-foundation-abilities-products/",
      "related": [
        "gk/foundation/abilities/registered",
        "gk/foundation/abilities/rate-limit",
        "gk/foundation/abilities/register",
        "gk/foundation/abilities/render-ui"
      ]
    },
    {
      "id": "gk-foundation-abilities-rate-limit",
      "name": "gk/foundation/abilities/rate-limit",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether an ability invocation should be rate-limited.",
      "parameters": [
        {
          "name": "rate_limit_decision",
          "type": "null\\",
          "description": "\\WP_Error`"
        },
        {
          "name": "name",
          "type": "string",
          "description": "Ability name."
        },
        {
          "name": "input",
          "type": "array",
          "description": "Validated input, or an empty array for input-less abilities."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/abilities/rate-limit', function($rate_limit_decision, $name, $input) {\n    // Modify $rate_limit_decision as needed\n    return $rate_limit_decision;\n}, 10, 3 );",
      "since": "1.23.0",
      "source": {
        "file": "Abilities/Manager.php",
        "line": 632
      },
      "url": "/docs/foundation/filters/gk-foundation-abilities-rate-limit/",
      "related": [
        "gk/foundation/abilities/registered",
        "gk/foundation/abilities/products",
        "gk/foundation/abilities/register",
        "gk/foundation/abilities/render-ui"
      ]
    },
    {
      "id": "gk-foundation-abilities-register",
      "name": "gk/foundation/abilities/register",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the abilities to register with WordPress.",
      "parameters": [
        {
          "name": "abilities",
          "type": "array[]",
          "description": "Array of ability configurations. Each configuration is an array:"
        },
        {
          "name": "name",
          "type": "string",
          "description": "Ability name as <code>namespace/ability-name</code>."
        },
        {
          "name": "label",
          "type": "string",
          "description": "Human-readable label."
        },
        {
          "name": "description",
          "type": "string",
          "description": "What the ability does."
        },
        {
          "name": "category",
          "type": "string",
          "description": "Primary category slug."
        },
        {
          "name": "execute_callback",
          "type": "callable",
          "description": "Executes the ability."
        },
        {
          "name": "permission_callback",
          "type": "callable",
          "description": "Authorizes execution."
        },
        {
          "name": "input_schema",
          "type": "array",
          "description": "Optional. JSON Schema describing input."
        },
        {
          "name": "output_schema",
          "type": "array",
          "description": "Optional. JSON Schema describing output."
        },
        {
          "name": "categories",
          "type": "string[]",
          "description": "Optional. Category slugs; the first is used as primary."
        },
        {
          "name": "meta",
          "type": "array",
          "description": "Optional. Ability meta. Set <code>command_palette</code> to true to surface the ability in the Command Palette."
        },
        {
          "name": "manager",
          "type": "\\Manager",
          "description": "Manager instance for fluent registration."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/abilities/register', function($abilities, $name, $label, $description, $category, $execute_callback, $permission_callback, $input_schema, $output_schema, $categories, $meta, $manager) {\n    // Modify $abilities as needed\n    return $abilities;\n}, 10, 12 );",
      "since": "1.23.0",
      "source": {
        "file": "Abilities/Framework.php",
        "line": 258
      },
      "url": "/docs/foundation/filters/gk-foundation-abilities-register/",
      "related": [
        "gk/foundation/abilities/register/before",
        "gk/foundation/abilities/registered",
        "gk/foundation/abilities/products",
        "gk/foundation/abilities/rate-limit",
        "gk/foundation/abilities/render-ui"
      ]
    },
    {
      "id": "gk-foundation-abilities-render-ui",
      "name": "gk/foundation/abilities/render-ui",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether the Abilities settings tab (Settings → GravityKit → Abilities) is rendered.",
      "parameters": [
        {
          "name": "render",
          "type": "bool",
          "description": "Whether to render the Abilities settings tab. Default false."
        }
      ],
      "categories": [
        "rendering"
      ],
      "example": "add_filter( 'gk/foundation/abilities/render-ui', function($render) {\n    // Modify $render as needed\n    return $render;\n}, 10, 1 );",
      "since": "1.24.0",
      "source": {
        "file": "Abilities/Framework.php",
        "line": 119
      },
      "url": "/docs/foundation/filters/gk-foundation-abilities-render-ui/",
      "related": [
        "gk/foundation/abilities/registered",
        "gk/foundation/abilities/products",
        "gk/foundation/abilities/rate-limit",
        "gk/foundation/abilities/register"
      ]
    },
    {
      "id": "gk-foundation-abilities-rest-catalog-permission",
      "name": "gk/foundation/abilities/rest/catalog/permission",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether the current request can view the GravityKit abilities catalog.",
      "parameters": [
        {
          "name": "allowed",
          "type": "bool",
          "description": "Whether catalog access is allowed (always true at this point)."
        }
      ],
      "categories": [
        "permissions",
        "api"
      ],
      "example": "add_filter( 'gk/foundation/abilities/rest/catalog/permission', function($allowed) {\n    // Modify $allowed as needed\n    return $allowed;\n}, 10, 1 );",
      "since": "1.23.0",
      "source": {
        "file": "Abilities/REST.php",
        "line": 152
      },
      "url": "/docs/foundation/filters/gk-foundation-abilities-rest-catalog-permission/",
      "related": []
    },
    {
      "id": "gk-foundation-admin-menu-badge-sync-data",
      "name": "gk/foundation/admin-menu-badge-sync/data",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the admin menu badge sync script data.",
      "parameters": [
        {
          "name": "script_data",
          "type": "array",
          "description": "Script data."
        }
      ],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/admin-menu-badge-sync/data', function($script_data) {\n    // Modify $script_data as needed\n    return $script_data;\n}, 10, 1 );",
      "since": "1.21.0",
      "source": {
        "file": "Licenses/WP/PluginsPage.php",
        "line": 301
      },
      "url": "/docs/foundation/filters/gk-foundation-admin-menu-badge-sync-data/",
      "related": []
    },
    {
      "id": "gk-foundation-admin-menu-counter",
      "name": "gk/foundation/admin-menu/counter",
      "type": "filter",
      "product": "foundation",
      "description": "Displays counter next to the top-menu title.",
      "parameters": [],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/admin-menu/counter', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.0.0",
      "source": {
        "file": "WP/AdminMenu.php",
        "line": 251
      },
      "url": "/docs/foundation/filters/gk-foundation-admin-menu-counter/",
      "related": [
        "gk/foundation/admin-menu/initialize",
        "gk/foundation/admin-menu/position",
        "gk/foundation/admin-menu/submenus"
      ]
    },
    {
      "id": "gk-foundation-admin-menu-initialize",
      "name": "gk/foundation/admin-menu/initialize",
      "type": "filter",
      "product": "foundation",
      "description": "Controls whether the GravityKit top-level menu should be initialized.",
      "parameters": [],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/admin-menu/initialize', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.2.20",
      "source": {
        "file": "WP/AdminMenu.php",
        "line": 100
      },
      "url": "/docs/foundation/filters/gk-foundation-admin-menu-initialize/",
      "related": [
        "gk/foundation/admin-menu/counter",
        "gk/foundation/admin-menu/position",
        "gk/foundation/admin-menu/submenus"
      ]
    },
    {
      "id": "gk-foundation-admin-menu-position",
      "name": "gk/foundation/admin-menu/position",
      "type": "filter",
      "product": "foundation",
      "description": "Controls the position after which the top-level GravityKit admin menu will be added.",
      "parameters": [
        {
          "name": "menu_position",
          "type": "int\\",
          "description": "string\\"
        }
      ],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/admin-menu/position', function($menu_position) {\n    // Modify $menu_position as needed\n    return $menu_position;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "WP/AdminMenu.php",
        "line": 221
      },
      "url": "/docs/foundation/filters/gk-foundation-admin-menu-position/",
      "related": [
        "gk/foundation/admin-menu/counter",
        "gk/foundation/admin-menu/initialize",
        "gk/foundation/admin-menu/submenus"
      ]
    },
    {
      "id": "gk-foundation-admin-menu-submenu-submenu_itemid-counter",
      "name": "gk/foundation/admin-menu/submenu/\\{$submenu_item[id]\\}/counter",
      "type": "filter",
      "product": "foundation",
      "description": "Displays counter next to the submenu title.",
      "parameters": [],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/admin-menu/submenu/\\{$submenu_item[id]\\}/counter', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.0.0",
      "source": {
        "file": "WP/AdminMenu.php",
        "line": 157
      },
      "url": "/docs/foundation/filters/gk-foundation-admin-menu-submenu-submenu_itemid-counter/",
      "related": []
    },
    {
      "id": "gk-foundation-admin-menu-submenus",
      "name": "gk/foundation/admin-menu/submenus",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies the submenus object.",
      "parameters": [
        {
          "name": "submenus",
          "type": "array",
          "description": "Submenus."
        }
      ],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/admin-menu/submenus', function($submenus) {\n    // Modify $submenus as needed\n    return $submenus;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "WP/AdminMenu.php",
        "line": 460
      },
      "url": "/docs/foundation/filters/gk-foundation-admin-menu-submenus/",
      "related": [
        "gk/foundation/admin-menu/counter",
        "gk/foundation/admin-menu/initialize",
        "gk/foundation/admin-menu/position"
      ]
    },
    {
      "id": "gk-foundation-ajax-result",
      "name": "gk/foundation/ajax/result",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies Ajax call result. Listeners can transform the response, including converting a success to an error or vice versa. Receives the raw Exception or WP_Error when the route failed.",
      "parameters": [
        {
          "name": "result",
          "type": "mixed\\",
          "description": "\\Exception\\"
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/ajax/result', function($result) {\n    // Modify $result as needed\n    return $result;\n}, 10, 1 );",
      "since": "1.0.11",
      "source": {
        "file": "WP/AjaxRouter.php",
        "line": 163
      },
      "url": "/docs/foundation/filters/gk-foundation-ajax-result/",
      "related": [
        "gk/foundation/ajax/after",
        "gk/foundation/ajax/before"
      ]
    },
    {
      "id": "gk-foundation-ajax-router-routes",
      "name": "gk/foundation/ajax/\\{$router\\}/routes",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies a list of Ajax routes that map to backend functions/class methods. $router groups routes to avoid a name collision (e.g., 'settings', 'licenses').",
      "parameters": [
        {
          "name": "routes",
          "type": "array[]",
          "description": "Ajax route to function/class method map."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/ajax/\\{$router\\}/routes', function($routes) {\n    // Modify $routes as needed\n    return $routes;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "WP/AjaxRouter.php",
        "line": 119
      },
      "url": "/docs/foundation/filters/gk-foundation-ajax-router-routes/",
      "related": []
    },
    {
      "id": "gk-foundation-cli-commands",
      "name": "gk/foundation/cli/commands",
      "type": "filter",
      "product": "foundation",
      "description": "Registers custom GK commands. They will be prefixed with \"gk\" (e.g., \"gk [custom command]\").",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/cli/commands', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.2.0",
      "source": {
        "file": "CLI/CLI.php",
        "line": 86
      },
      "url": "/docs/foundation/filters/gk-foundation-cli-commands/",
      "related": []
    },
    {
      "id": "gk-foundation-force-standalone-foundation-instance",
      "name": "gk/foundation/force-standalone-foundation-instance",
      "type": "filter",
      "product": "foundation",
      "description": "Controls whether the Foundation standalone plugin instance should always be returned regardless of the version.",
      "parameters": [
        {
          "name": "force_standalone_instance",
          "type": "bool",
          "description": "Default: true."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/force-standalone-foundation-instance', function($force_standalone_instance) {\n    // Modify $force_standalone_instance as needed\n    return $force_standalone_instance;\n}, 10, 1 );",
      "since": "1.0.2",
      "source": {
        "file": "Core.php",
        "line": 150
      },
      "url": "/docs/foundation/filters/gk-foundation-force-standalone-foundation-instance/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/inline-scripts",
        "gk/foundation/inline-styles",
        "gk/foundation/is-production-environment",
        "gk/foundation/settings"
      ]
    },
    {
      "id": "gk-foundation-inline-scripts",
      "name": "gk/foundation/inline-scripts",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies scripts inlined by Foundation.",
      "parameters": [
        {
          "name": "inline_scripts",
          "type": "array",
          "description": "Scripts inlined by Foundation."
        }
      ],
      "categories": [
        "assets"
      ],
      "example": "add_filter( 'gk/foundation/inline-scripts', function($inline_scripts) {\n    // Modify $inline_scripts as needed\n    return $inline_scripts;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Core.php",
        "line": 792
      },
      "url": "/docs/foundation/filters/gk-foundation-inline-scripts/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-styles",
        "gk/foundation/is-production-environment",
        "gk/foundation/settings"
      ]
    },
    {
      "id": "gk-foundation-inline-styles",
      "name": "gk/foundation/inline-styles",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies styles inlined by Foundation.",
      "parameters": [
        {
          "name": "inline_styles",
          "type": "array",
          "description": "Styles inlined by Foundation."
        }
      ],
      "categories": [
        "assets"
      ],
      "example": "add_filter( 'gk/foundation/inline-styles', function($inline_styles) {\n    // Modify $inline_styles as needed\n    return $inline_styles;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Core.php",
        "line": 822
      },
      "url": "/docs/foundation/filters/gk-foundation-inline-styles/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-scripts",
        "gk/foundation/is-production-environment",
        "gk/foundation/settings"
      ]
    },
    {
      "id": "gk-foundation-integrations-gravityforms-add-to-system-report",
      "name": "gk/foundation/integrations/gravityforms/add-to-system-report",
      "type": "filter",
      "product": "foundation",
      "description": "Controls whether to include a GravityKit product in GF's system report.",
      "parameters": [
        {
          "name": "include_in_system_report",
          "type": "bool",
          "description": "Default: true."
        },
        {
          "name": "text_domain",
          "type": "string",
          "description": "Product text domain."
        }
      ],
      "categories": [
        "forms"
      ],
      "example": "add_filter( 'gk/foundation/integrations/gravityforms/add-to-system-report', function($include_in_system_report, $text_domain) {\n    // Modify $include_in_system_report as needed\n    return $include_in_system_report;\n}, 10, 2 );",
      "since": "1.0.3",
      "source": {
        "file": "Integrations/GravityForms.php",
        "line": 79
      },
      "url": "/docs/foundation/filters/gk-foundation-integrations-gravityforms-add-to-system-report/",
      "related": []
    },
    {
      "id": "gk-foundation-integrations-helpscout-configuration",
      "name": "gk/foundation/integrations/helpscout/configuration",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies HS beacon configuration.",
      "parameters": [
        {
          "name": "beacon_configuration",
          "type": "array",
          "description": "Beacon configuration."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/integrations/helpscout/configuration', function($beacon_configuration) {\n    // Modify $beacon_configuration as needed\n    return $beacon_configuration;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Integrations/HelpScout.php",
        "line": 190
      },
      "url": "/docs/foundation/filters/gk-foundation-integrations-helpscout-configuration/",
      "related": [
        "gk/foundation/integrations/helpscout/display"
      ]
    },
    {
      "id": "gk-foundation-integrations-helpscout-display",
      "name": "gk/foundation/integrations/helpscout/display",
      "type": "filter",
      "product": "foundation",
      "description": "Toggles whether HS beacon should be displayed. Return \"true\" to short-circuit all other checks.",
      "parameters": [
        {
          "name": "display_beacon",
          "type": "bool",
          "description": "Whether to display the beacon."
        },
        {
          "name": "page",
          "type": "string\\",
          "description": "null`"
        },
        {
          "name": "post_type",
          "type": "string\\",
          "description": "null`"
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/integrations/helpscout/display', function($display_beacon, $page, $post_type) {\n    // Modify $display_beacon as needed\n    return $display_beacon;\n}, 10, 3 );",
      "since": "1.0.0",
      "source": {
        "file": "Integrations/HelpScout.php",
        "line": 124
      },
      "url": "/docs/foundation/filters/gk-foundation-integrations-helpscout-display/",
      "related": [
        "gk/foundation/integrations/helpscout/configuration"
      ]
    },
    {
      "id": "gk-foundation-integrity-revocation-url",
      "name": "gk/foundation/integrity/revocation-url",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the revocation feed URL.",
      "parameters": [
        {
          "name": "url",
          "type": "string",
          "description": "Default revocation feed URL."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/integrity/revocation-url', function($url) {\n    // Modify $url as needed\n    return $url;\n}, 10, 1 );",
      "since": "1.17.0",
      "source": {
        "file": "Licenses/Integrity/PackageVerifier.php",
        "line": 821
      },
      "url": "/docs/foundation/filters/gk-foundation-integrity-revocation-url/",
      "related": []
    },
    {
      "id": "gk-foundation-is-production-environment",
      "name": "gk/foundation/is-production-environment",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether the site is considered a production environment for Foundation's security-sensitive defaults (e.g. outbound `sslverify`). Return true to enforce the strict production behavior, false to opt out (useful on production hosts with broken CA bundles, or when testing non-production hardening locally).",
      "parameters": [
        {
          "name": "is_production",
          "type": "bool",
          "description": "Whether the detected environment is production."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/is-production-environment', function($is_production) {\n    // Modify $is_production as needed\n    return $is_production;\n}, 10, 1 );",
      "since": "1.15.0",
      "source": {
        "file": "Helpers/Core.php",
        "line": 421
      },
      "url": "/docs/foundation/filters/gk-foundation-is-production-environment/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-scripts",
        "gk/foundation/inline-styles",
        "gk/foundation/settings"
      ]
    },
    {
      "id": "gk-foundation-licenses-api-request-timeout",
      "name": "gk/foundation/licenses/api-request-timeout",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the timeout (in seconds) for Store API metadata requests (product and license data).",
      "parameters": [
        {
          "name": "timeout",
          "type": "int",
          "description": "Request timeout in seconds."
        },
        {
          "name": "url",
          "type": "string",
          "description": "The Store API URL being requested."
        }
      ],
      "categories": [
        "api"
      ],
      "example": "add_filter( 'gk/foundation/licenses/api-request-timeout', function($timeout, $url) {\n    // Modify $timeout as needed\n    return $timeout;\n}, 10, 2 );",
      "since": "1.22.0",
      "source": {
        "file": "Licenses/Helpers.php",
        "line": 47
      },
      "url": "/docs/foundation/filters/gk-foundation-licenses-api-request-timeout/",
      "related": [
        "gk/foundation/licenses/initialized",
        "gk/foundation/licenses/hide-personal-information",
        "gk/foundation/licenses/permissions"
      ]
    },
    {
      "id": "gk-foundation-licenses-hide-personal-information",
      "name": "gk/foundation/licenses/hide-personal-information",
      "type": "filter",
      "product": "foundation",
      "description": "Hides the license holder's name/email.",
      "parameters": [
        {
          "name": "hide_personal_information",
          "type": "bool",
          "description": "Default: false."
        }
      ],
      "categories": [
        "forms"
      ],
      "example": "add_filter( 'gk/foundation/licenses/hide-personal-information', function($hide_personal_information) {\n    // Modify $hide_personal_information as needed\n    return $hide_personal_information;\n}, 10, 1 );",
      "since": "1.2.0",
      "source": {
        "file": "Licenses/LicenseManager.php",
        "line": 672
      },
      "url": "/docs/foundation/filters/gk-foundation-licenses-hide-personal-information/",
      "related": [
        "gk/foundation/licenses/initialized",
        "gk/foundation/licenses/api-request-timeout",
        "gk/foundation/licenses/permissions"
      ]
    },
    {
      "id": "gk-foundation-licenses-permissions",
      "name": "gk/foundation/licenses/permissions",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies permissions to access Licenses functionality.",
      "parameters": [
        {
          "name": "permissions",
          "type": "array",
          "description": "Permissions."
        }
      ],
      "categories": [
        "permissions"
      ],
      "example": "add_filter( 'gk/foundation/licenses/permissions', function($permissions) {\n    // Modify $permissions as needed\n    return $permissions;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Licenses/Framework.php",
        "line": 114
      },
      "url": "/docs/foundation/filters/gk-foundation-licenses-permissions/",
      "related": [
        "gk/foundation/licenses/initialized",
        "gk/foundation/licenses/api-request-timeout",
        "gk/foundation/licenses/hide-personal-information"
      ]
    },
    {
      "id": "gk-foundation-logger-allow-heartbeat-requests",
      "name": "gk/foundation/logger/allow-heartbeat-requests",
      "type": "filter",
      "product": "foundation",
      "description": "Allows logging of WP heartbeat requests.",
      "parameters": [
        {
          "name": "log_heartbeat",
          "type": "bool",
          "description": "Default: false."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/logger/allow-heartbeat-requests', function($log_heartbeat) {\n    // Modify $log_heartbeat as needed\n    return $log_heartbeat;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Logger/Framework.php",
        "line": 378
      },
      "url": "/docs/foundation/filters/gk-foundation-logger-allow-heartbeat-requests/",
      "related": [
        "gk/foundation/logger/log-path"
      ]
    },
    {
      "id": "gk-foundation-logger-log-path",
      "name": "gk/foundation/logger/log-path",
      "type": "filter",
      "product": "foundation",
      "description": "Changes path where logs are stored.",
      "parameters": [
        {
          "name": "log_path",
          "type": "string",
          "description": "Location where logs are stored relative to WP_CONTENT_DIR. Default: WP_CONTENT_DIR . '/logs'."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/logger/log-path', function($log_path) {\n    // Modify $log_path as needed\n    return $log_path;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Logger/Framework.php",
        "line": 127
      },
      "url": "/docs/foundation/filters/gk-foundation-logger-log-path/",
      "related": [
        "gk/foundation/logger/allow-heartbeat-requests"
      ]
    },
    {
      "id": "gk-foundation-notices-active",
      "name": "gk/foundation/notices/active",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the active notices after evaluation and sorting.",
      "parameters": [
        {
          "name": "notices",
          "type": "\\NoticeInterface[]",
          "description": "Array of active notices."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/active', function($notices) {\n    // Modify $notices as needed\n    return $notices;\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeManager.php",
        "line": 242
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-active/",
      "related": [
        "gk/foundation/notices/added",
        "gk/foundation/notices/removed",
        "gk/foundation/notices/saved",
        "gk/foundation/notices/add",
        "gk/foundation/notices/update"
      ]
    },
    {
      "id": "gk-foundation-notices-add",
      "name": "gk/foundation/notices/add",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the notice definition data before creating a runtime notice.",
      "parameters": [
        {
          "name": "data",
          "type": "array",
          "description": "Notice definition data."
        },
        {
          "name": "type",
          "type": "string",
          "description": "Notice type: 'runtime' or 'stored'."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/add', function($data, $type) {\n    // Modify $data as needed\n    return $data;\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeManager.php",
        "line": 135
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-add/",
      "related": [
        "gk/foundation/notices/added",
        "gk/foundation/notices/removed",
        "gk/foundation/notices/saved",
        "gk/foundation/notices/active",
        "gk/foundation/notices/update"
      ]
    },
    {
      "id": "gk-foundation-notices-ajax-live-response",
      "name": "gk/foundation/notices/ajax/live-response",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the live update response data.",
      "parameters": [
        {
          "name": "response",
          "type": "array",
          "description": "Response data."
        },
        {
          "name": "notice",
          "type": "\\StoredNoticeInterface",
          "description": "The notice being updated."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/ajax/live-response', function($response, $notice) {\n    // Modify $response as needed\n    return $response;\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeAjaxController.php",
        "line": 424
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-ajax-live-response/",
      "related": [
        "gk/foundation/notices/ajax/dismissed-global",
        "gk/foundation/notices/ajax/dismissed",
        "gk/foundation/notices/ajax/snoozed",
        "gk/foundation/notices/ajax/live-update"
      ]
    },
    {
      "id": "gk-foundation-notices-ajax-live-update",
      "name": "gk/foundation/notices/ajax/live-update",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the response from a live update callback.",
      "parameters": [
        {
          "name": "response",
          "type": "mixed",
          "description": "Response from the callback."
        },
        {
          "name": "context",
          "type": "array",
          "description": "Context passed to the callback."
        },
        {
          "name": "notice",
          "type": "\\StoredNoticeInterface",
          "description": "The notice being updated."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/ajax/live-update', function($response, $context, $notice) {\n    // Modify $response as needed\n    return $response;\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/StoredNotice.php",
        "line": 208
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-ajax-live-update/",
      "related": [
        "gk/foundation/notices/ajax/dismissed-global",
        "gk/foundation/notices/ajax/dismissed",
        "gk/foundation/notices/ajax/snoozed",
        "gk/foundation/notices/ajax/live-response"
      ]
    },
    {
      "id": "gk-foundation-notices-content-allowed-tags",
      "name": "gk/foundation/notices/content/allowed-tags",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the allowed HTML tags for notice messages.",
      "parameters": [
        {
          "name": "tags",
          "type": "array",
          "description": "Allowed HTML tags and attributes."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/content/allowed-tags', function($tags) {\n    // Modify $tags as needed\n    return $tags;\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/Notice.php",
        "line": 247
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-content-allowed-tags/",
      "related": []
    },
    {
      "id": "gk-foundation-notices-evaluation-after",
      "name": "gk/foundation/notices/evaluation/after",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the evaluated notices.",
      "parameters": [
        {
          "name": "evaluated_notices",
          "type": "\\NoticeInterface[]",
          "description": "Evaluated notices."
        },
        {
          "name": "original_notices",
          "type": "\\NoticeInterface[]",
          "description": "Original notices."
        },
        {
          "name": "context",
          "type": "string\\",
          "description": "null`"
        },
        {
          "name": "user_state",
          "type": "array",
          "description": "User state data."
        }
      ],
      "categories": [
        "after"
      ],
      "example": "add_filter( 'gk/foundation/notices/evaluation/after', function($evaluated_notices, $original_notices, $context, $user_state) {\n    // Modify $evaluated_notices as needed\n    return $evaluated_notices;\n}, 10, 4 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeEvaluator.php",
        "line": 158
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-evaluation-after/",
      "related": [
        "gk/foundation/notices/evaluation/before",
        "gk/foundation/notices/evaluation/notice"
      ]
    },
    {
      "id": "gk-foundation-notices-evaluation-before",
      "name": "gk/foundation/notices/evaluation/before",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the list of notices before evaluation.",
      "parameters": [
        {
          "name": "original_notices",
          "type": "\\NoticeInterface[]",
          "description": "Notices to evaluate."
        },
        {
          "name": "context",
          "type": "string\\",
          "description": "null`"
        },
        {
          "name": "user_state",
          "type": "array",
          "description": "User state data."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_filter( 'gk/foundation/notices/evaluation/before', function($original_notices, $context, $user_state) {\n    // Modify $original_notices as needed\n    return $original_notices;\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeEvaluator.php",
        "line": 77
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-evaluation-before/",
      "related": [
        "gk/foundation/notices/evaluation/after",
        "gk/foundation/notices/evaluation/notice"
      ]
    },
    {
      "id": "gk-foundation-notices-evaluation-notice",
      "name": "gk/foundation/notices/evaluation/notice",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether a notice should be displayed.",
      "parameters": [
        {
          "name": "should_display",
          "type": "bool\\",
          "description": "null`"
        },
        {
          "name": "notice",
          "type": "\\NoticeInterface",
          "description": "The notice being evaluated_notices."
        },
        {
          "name": "context",
          "type": "string\\",
          "description": "null`"
        },
        {
          "name": "user_state",
          "type": "array",
          "description": "User state data."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/evaluation/notice', function($should_display, $notice, $context, $user_state) {\n    // Modify $should_display as needed\n    return $should_display;\n}, 10, 4 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeEvaluator.php",
        "line": 95
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-evaluation-notice/",
      "related": [
        "gk/foundation/notices/evaluation/after",
        "gk/foundation/notices/evaluation/before"
      ]
    },
    {
      "id": "gk-foundation-notices-render-container",
      "name": "gk/foundation/notices/render/container",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the HTML container where notices are rendered.",
      "parameters": [
        {
          "name": "html",
          "type": "string",
          "description": "HTML container for notices."
        }
      ],
      "categories": [
        "rendering"
      ],
      "example": "add_filter( 'gk/foundation/notices/render/container', function($html) {\n    // Modify $html as needed\n    return $html;\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeRenderer.php",
        "line": 190
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-render-container/",
      "related": [
        "gk/foundation/notices/render/before",
        "gk/foundation/notices/render/payload"
      ]
    },
    {
      "id": "gk-foundation-notices-render-payload",
      "name": "gk/foundation/notices/render/payload",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the payload data used to render notices in the UI.",
      "parameters": [
        {
          "name": "data",
          "type": "array\\{params: array<string,mixed>, notices: array<string,mixed>[]\\}",
          "description": "Payload data containing notices and parameters."
        }
      ],
      "categories": [
        "rendering"
      ],
      "example": "add_filter( 'gk/foundation/notices/render/payload', function($data) {\n    // Modify $data as needed\n    return $data;\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeRenderer.php",
        "line": 150
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-render-payload/",
      "related": [
        "gk/foundation/notices/render/before",
        "gk/foundation/notices/render/container"
      ]
    },
    {
      "id": "gk-foundation-notices-update",
      "name": "gk/foundation/notices/update",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the updated notice definition before saving.",
      "parameters": [
        {
          "name": "updated_def",
          "type": "array",
          "description": "Updated notice definition."
        },
        {
          "name": "changes",
          "type": "array",
          "description": "Changes that were applied."
        },
        {
          "name": "notice_id",
          "type": "string",
          "description": "Notice ID being updated."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/update', function($updated_def, $changes, $notice_id) {\n    // Modify $updated_def as needed\n    return $updated_def;\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeManager.php",
        "line": 353
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-update/",
      "related": [
        "gk/foundation/notices/added",
        "gk/foundation/notices/removed",
        "gk/foundation/notices/saved",
        "gk/foundation/notices/active",
        "gk/foundation/notices/add"
      ]
    },
    {
      "id": "gk-foundation-notices-user-state",
      "name": "gk/foundation/notices/user-state",
      "type": "filter",
      "product": "foundation",
      "description": "Filters user state changes before they are saved.",
      "parameters": [
        {
          "name": "changes",
          "type": "array",
          "description": "State changes to apply."
        },
        {
          "name": "user_id",
          "type": "int",
          "description": "User ID."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/notices/user-state', function($changes, $user_id) {\n    // Modify $changes as needed\n    return $changes;\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Notices/NoticeRepository.php",
        "line": 521
      },
      "url": "/docs/foundation/filters/gk-foundation-notices-user-state/",
      "related": [
        "gk/foundation/notices/added",
        "gk/foundation/notices/removed",
        "gk/foundation/notices/saved",
        "gk/foundation/notices/active",
        "gk/foundation/notices/add"
      ]
    },
    {
      "id": "gk-foundation-products-data",
      "name": "gk/foundation/products/data",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies products data object.",
      "parameters": [
        {
          "name": "products",
          "type": "array",
          "description": "Products data."
        },
        {
          "name": "args",
          "type": "array",
          "description": "Additional arguments passed to the get_products_data() method."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/products/data', function($products, $args) {\n    // Modify $products as needed\n    return $products;\n}, 10, 2 );",
      "since": "1.0.3",
      "source": {
        "file": "Licenses/ProductManager.php",
        "line": 1854
      },
      "url": "/docs/foundation/filters/gk-foundation-products-data/",
      "related": [
        "gk/foundation/products/disable-history"
      ]
    },
    {
      "id": "gk-foundation-products-disable-history",
      "name": "gk/foundation/products/disable-history",
      "type": "filter",
      "product": "foundation",
      "description": "Controls whether to track product history, such as installation, activation, deactivation, update, and deletion events.",
      "parameters": [
        {
          "name": "disable_history",
          "type": "bool",
          "description": "Whether to disable product history. Defaults to false."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/products/disable-history', function($disable_history) {\n    // Modify $disable_history as needed\n    return $disable_history;\n}, 10, 1 );",
      "since": "1.2.2",
      "source": {
        "file": "Licenses/ProductHistoryManager.php",
        "line": 67
      },
      "url": "/docs/foundation/filters/gk-foundation-products-disable-history/",
      "related": [
        "gk/foundation/products/data"
      ]
    },
    {
      "id": "gk-foundation-products-productslug-action-links",
      "name": "gk/foundation/products/\\{$product[slug]\\}/action-links",
      "type": "filter",
      "product": "foundation",
      "description": "Sets product action links in the Plugins page.",
      "parameters": [
        {
          "name": "merged_links",
          "type": "array",
          "description": "Combined GravityKit and original action links."
        },
        {
          "name": "gk_links",
          "type": "array",
          "description": "GravityKit-added action links."
        },
        {
          "name": "link",
          "type": "array",
          "description": "Original action links."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/products/\\{$product[slug]\\}/action-links', function($merged_links, $gk_links, $link) {\n    // Modify $merged_links as needed\n    return $merged_links;\n}, 10, 3 );",
      "since": "1.0.3",
      "source": {
        "file": "Licenses/WP/PluginsPage.php",
        "line": 654
      },
      "url": "/docs/foundation/filters/gk-foundation-products-productslug-action-links/",
      "related": []
    },
    {
      "id": "gk-foundation-rest-route-response",
      "name": "gk/foundation/rest/route/response",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies the REST API route response.",
      "parameters": [],
      "categories": [
        "api"
      ],
      "example": "add_filter( 'gk/foundation/rest/route/response', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.0.11",
      "source": {
        "file": "WP/RESTController.php",
        "line": 181
      },
      "url": "/docs/foundation/filters/gk-foundation-rest-route-response/",
      "related": [
        "gk/foundation/rest/route/after",
        "gk/foundation/rest/route/before"
      ]
    },
    {
      "id": "gk-foundation-rest-routes",
      "name": "gk/foundation/rest/routes",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies REST routes object.",
      "parameters": [],
      "categories": [
        "api"
      ],
      "example": "add_filter( 'gk/foundation/rest/routes', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.0.11",
      "source": {
        "file": "WP/RESTController.php",
        "line": 86
      },
      "url": "/docs/foundation/filters/gk-foundation-rest-routes/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-enabled",
      "name": "gk/foundation/scheduler/enabled",
      "type": "filter",
      "product": "foundation",
      "description": "Overrides whether background processing is enabled.",
      "parameters": [
        {
          "name": "enabled",
          "type": "bool",
          "description": "Whether background processing is enabled. Default: value of the \"Background Processing\" setting."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/enabled', function($enabled) {\n    // Modify $enabled as needed\n    return $enabled;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/JobScheduler.php",
        "line": 188
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-enabled/",
      "related": [
        "gk/foundation/scheduler/loopback-base-url",
        "gk/foundation/scheduler/overdue-threshold"
      ]
    },
    {
      "id": "gk-foundation-scheduler-health-check-loopback-timeout",
      "name": "gk/foundation/scheduler/health-check/loopback-timeout",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the timeout for the loopback connectivity probe.",
      "parameters": [
        {
          "name": "timeout",
          "type": "int",
          "description": "Loopback probe timeout in seconds. Default 2."
        },
        {
          "name": "url",
          "type": "string",
          "description": "The loopback URL being probed."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/health-check/loopback-timeout', function($timeout, $url) {\n    // Modify $timeout as needed\n    return $timeout;\n}, 10, 2 );",
      "since": "1.22.0",
      "source": {
        "file": "Scheduler/Models/HealthCheck.php",
        "line": 226
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-health-check-loopback-timeout/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-job-.name.-.schedule_type.-enable",
      "name": "gk/foundation/scheduler/job/ . $name . / . $schedule_type . /enable",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies the GravityKit Scheduler job enabled status.",
      "parameters": [
        {
          "name": "enable",
          "type": "bool",
          "description": "Whether the job is enabled. Default: true."
        },
        {
          "name": "args",
          "type": "?array",
          "description": "The job args."
        },
        {
          "name": "unique",
          "type": "bool",
          "description": "Whether the job is unique."
        },
        {
          "name": "priority",
          "type": "int",
          "description": "The job priority."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/ . $name . / . $schedule_type . /enable', function($enable, $args, $unique, $priority) {\n    // Modify $enable as needed\n    return $enable;\n}, 10, 4 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1058
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-.name.-.schedule_type.-enable/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-job-.this-name.-data",
      "name": "gk/foundation/scheduler/job/ . $this->name() . /data",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the job data.",
      "parameters": [
        {
          "name": "data",
          "type": "array",
          "description": "The job data."
        },
        {
          "name": "instance",
          "type": "\\Job",
          "description": "The job object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/ . $this->name() . /data', function($data, $instance) {\n    // Modify $data as needed\n    return $data;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Job.php",
        "line": 236
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-.this-name.-data/",
      "related": [
        "gk/foundation/scheduler/job/ . $this->name() . /priority",
        "gk/foundation/scheduler/job/ . $this->name() . /progress",
        "gk/foundation/scheduler/job/ . $this->name() . /unique"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-.this-name.-priority",
      "name": "gk/foundation/scheduler/job/ . $this->name() . /priority",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the job priority.",
      "parameters": [
        {
          "name": "priority",
          "type": "int",
          "description": "The job priority."
        },
        {
          "name": "instance",
          "type": "\\Job",
          "description": "The job object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/ . $this->name() . /priority', function($priority, $instance) {\n    // Modify $priority as needed\n    return $priority;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Job.php",
        "line": 217
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-.this-name.-priority/",
      "related": [
        "gk/foundation/scheduler/job/ . $this->name() . /data",
        "gk/foundation/scheduler/job/ . $this->name() . /progress",
        "gk/foundation/scheduler/job/ . $this->name() . /unique"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-.this-name.-progress",
      "name": "gk/foundation/scheduler/job/ . $this->name() . /progress",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the job progress.",
      "parameters": [
        {
          "name": "progress",
          "type": "\\JobProgress",
          "description": "The job progress object."
        },
        {
          "name": "instance",
          "type": "\\Job",
          "description": "The job object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/ . $this->name() . /progress', function($progress, $instance) {\n    // Modify $progress as needed\n    return $progress;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Job.php",
        "line": 259
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-.this-name.-progress/",
      "related": [
        "gk/foundation/scheduler/job/ . $this->name() . /data",
        "gk/foundation/scheduler/job/ . $this->name() . /priority",
        "gk/foundation/scheduler/job/ . $this->name() . /unique"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-.this-name.-unique",
      "name": "gk/foundation/scheduler/job/ . $this->name() . /unique",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the job unique mode.",
      "parameters": [
        {
          "name": "is_unique",
          "type": "bool",
          "description": "Whether the job is unique."
        },
        {
          "name": "instance",
          "type": "\\Job",
          "description": "The job object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/ . $this->name() . /unique', function($is_unique, $instance) {\n    // Modify $is_unique as needed\n    return $is_unique;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Job.php",
        "line": 198
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-.this-name.-unique/",
      "related": [
        "gk/foundation/scheduler/job/ . $this->name() . /data",
        "gk/foundation/scheduler/job/ . $this->name() . /priority",
        "gk/foundation/scheduler/job/ . $this->name() . /progress"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-instances-query-default",
      "name": "gk/foundation/scheduler/job/instances/query/default",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies the job instances query defaults.",
      "parameters": [
        {
          "name": "defaults",
          "type": "array",
          "description": "Retrieval defaults."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/instances/query/default', function($defaults) {\n    // Modify $defaults as needed\n    return $defaults;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 1475
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-instances-query-default/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-job-max-tasks",
      "name": "gk/foundation/scheduler/job/max-tasks",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the maximum number of tasks allowed per job.",
      "parameters": [
        {
          "name": "max_tasks",
          "type": "int",
          "description": "Maximum task count. Default 1000."
        },
        {
          "name": "job",
          "type": "\\Job",
          "description": "The job instance."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/max-tasks', function($max_tasks, $job) {\n    // Modify $max_tasks as needed\n    return $max_tasks;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Job.php",
        "line": 77
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-max-tasks/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/resumed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-job-stuck-threshold",
      "name": "gk/foundation/scheduler/job/stuck-threshold",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the threshold (in seconds) after which a job is considered stuck.",
      "parameters": [
        {
          "name": "threshold",
          "type": "int",
          "description": "The stuck threshold in seconds. Default: 1200 (20 minutes)."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/job/stuck-threshold', function($threshold) {\n    // Modify $threshold as needed\n    return $threshold;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 123
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-job-stuck-threshold/",
      "related": [
        "gk/foundation/scheduler/job/canceled",
        "gk/foundation/scheduler/job/completed",
        "gk/foundation/scheduler/job/failed",
        "gk/foundation/scheduler/job/paused",
        "gk/foundation/scheduler/job/resumed"
      ]
    },
    {
      "id": "gk-foundation-scheduler-jobs-scheduled",
      "name": "gk/foundation/scheduler/jobs/scheduled",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the list of scheduled job instances before returning.",
      "parameters": [
        {
          "name": "jobs",
          "type": "\\JobInstance[]",
          "description": "Job objects."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/jobs/scheduled', function($jobs) {\n    // Modify $jobs as needed\n    return $jobs;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1031
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-jobs-scheduled/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-loopback-base-url",
      "name": "gk/foundation/scheduler/loopback-base-url",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the base URL used for all loopback requests.",
      "parameters": [
        {
          "name": "base_url",
          "type": "string",
          "description": "The base URL for loopback requests. Default: saved setting value."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/loopback-base-url', function($base_url) {\n    // Modify $base_url as needed\n    return $base_url;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/JobScheduler.php",
        "line": 498
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-loopback-base-url/",
      "related": [
        "gk/foundation/scheduler/enabled",
        "gk/foundation/scheduler/overdue-threshold"
      ]
    },
    {
      "id": "gk-foundation-scheduler-overdue-threshold",
      "name": "gk/foundation/scheduler/overdue-threshold",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the overdue threshold for pending jobs.",
      "parameters": [
        {
          "name": "threshold",
          "type": "int",
          "description": "Seconds after scheduled date before a pending job is considered overdue. Default 600."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/overdue-threshold', function($threshold) {\n    // Modify $threshold as needed\n    return $threshold;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Store/DbStore.php",
        "line": 1352
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-overdue-threshold/",
      "related": [
        "gk/foundation/scheduler/enabled",
        "gk/foundation/scheduler/loopback-base-url"
      ]
    },
    {
      "id": "gk-foundation-scheduler-recurring-skip-overlap",
      "name": "gk/foundation/scheduler/recurring/skip-overlap",
      "type": "filter",
      "product": "foundation",
      "description": "Whether to skip a recurring job instance that overlaps with a running sibling.",
      "parameters": [
        {
          "name": "should_skip",
          "type": "bool",
          "description": "Whether to skip. Default true."
        },
        {
          "name": "job_id",
          "type": "int",
          "description": "The current job instance ID."
        },
        {
          "name": "job_name",
          "type": "string",
          "description": "The job hook name."
        },
        {
          "name": "sibling_id",
          "type": "int",
          "description": "The running sibling's action ID."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/recurring/skip-overlap', function($should_skip, $job_id, $job_name, $sibling_id) {\n    // Modify $should_skip as needed\n    return $should_skip;\n}, 10, 4 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 382
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-recurring-skip-overlap/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-request-trigger-timeout",
      "name": "gk/foundation/scheduler/request/trigger/timeout",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the scheduler trigger request timeout.",
      "parameters": [
        {
          "name": "timeout",
          "type": "int",
          "description": "Scheduler trigger request timeout in milliseconds. Default 100."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/request/trigger/timeout', function($timeout) {\n    // Modify $timeout as needed\n    return $timeout;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/RequestHandler.php",
        "line": 162
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-request-trigger-timeout/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-task-.this-name.-args",
      "name": "gk/foundation/scheduler/task/ . $this->name . /args",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the task args.",
      "parameters": [
        {
          "name": "args",
          "type": "array",
          "description": "The task args."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/ . $this->name . /args', function($args, $instance) {\n    // Modify $args as needed\n    return $args;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 575
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-.this-name.-args/",
      "related": [
        "gk/foundation/scheduler/task/ . $this->name . /callback",
        "gk/foundation/scheduler/task/ . $this->name . /enabled"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-.this-name.-callback",
      "name": "gk/foundation/scheduler/task/ . $this->name . /callback",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the task callback.",
      "parameters": [
        {
          "name": "callback",
          "type": "callable",
          "description": "The task callback."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/ . $this->name . /callback', function($callback, $instance) {\n    // Modify $callback as needed\n    return $callback;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 166
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-.this-name.-callback/",
      "related": [
        "gk/foundation/scheduler/task/ . $this->name . /args",
        "gk/foundation/scheduler/task/ . $this->name . /enabled"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-.this-name.-enabled",
      "name": "gk/foundation/scheduler/task/ . $this->name . /enabled",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the task enabled status.",
      "parameters": [
        {
          "name": "enabled",
          "type": "bool",
          "description": "Whether the task is enabled."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/ . $this->name . /enabled', function($enabled, $instance) {\n    // Modify $enabled as needed\n    return $enabled;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 210
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-.this-name.-enabled/",
      "related": [
        "gk/foundation/scheduler/task/ . $this->name . /args",
        "gk/foundation/scheduler/task/ . $this->name . /callback"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-get-can-fail",
      "name": "gk/foundation/scheduler/task/get/can-fail",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether the task can fail without stopping the job.",
      "parameters": [
        {
          "name": "can_fail",
          "type": "bool",
          "description": "Whether the task can fail without affecting the job status."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/get/can-fail', function($can_fail, $instance) {\n    // Modify $can_fail as needed\n    return $can_fail;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 368
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-get-can-fail/",
      "related": []
    },
    {
      "id": "gk-foundation-scheduler-task-max-no-progress-reruns",
      "name": "gk/foundation/scheduler/task/max-no-progress-reruns",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the maximum consecutive no-progress reruns per task.",
      "parameters": [
        {
          "name": "max",
          "type": "int",
          "description": "The maximum reruns without progress. Default: 5."
        },
        {
          "name": "task",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/max-no-progress-reruns', function($max, $task) {\n    // Modify $max as needed\n    return $max;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1690
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-max-no-progress-reruns/",
      "related": [
        "gk/foundation/scheduler/task/max-retries",
        "gk/foundation/scheduler/task/time-budget"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-max-retries",
      "name": "gk/foundation/scheduler/task/max-retries",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the maximum number of retry attempts per task.",
      "parameters": [
        {
          "name": "max_retries",
          "type": "int",
          "description": "The maximum retries. Default: 10."
        },
        {
          "name": "task",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/max-retries', function($max_retries, $task) {\n    // Modify $max_retries as needed\n    return $max_retries;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/ScheduleHandler.php",
        "line": 1602
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-max-retries/",
      "related": [
        "gk/foundation/scheduler/task/max-no-progress-reruns",
        "gk/foundation/scheduler/task/time-budget"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-set-args",
      "name": "gk/foundation/scheduler/task/set/args",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the task args before setting them.",
      "parameters": [
        {
          "name": "args",
          "type": "array",
          "description": "The task args."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/set/args', function($args, $instance) {\n    // Modify $args as needed\n    return $args;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 268
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-set-args/",
      "related": [
        "gk/foundation/scheduler/task/set/dependencies",
        "gk/foundation/scheduler/task/set/job-data"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-set-dependencies",
      "name": "gk/foundation/scheduler/task/set/dependencies",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the task dependencies before setting them.",
      "parameters": [
        {
          "name": "dependencies",
          "type": "array",
          "description": "The task dependency names."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/set/dependencies', function($dependencies, $instance) {\n    // Modify $dependencies as needed\n    return $dependencies;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 537
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-set-dependencies/",
      "related": [
        "gk/foundation/scheduler/task/set/args",
        "gk/foundation/scheduler/task/set/job-data"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-set-job-data",
      "name": "gk/foundation/scheduler/task/set/job-data",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the job data before setting it.",
      "parameters": [
        {
          "name": "data",
          "type": "array",
          "description": "The job data."
        },
        {
          "name": "instance",
          "type": "\\Task",
          "description": "The task object."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/set/job-data', function($data, $instance) {\n    // Modify $data as needed\n    return $data;\n}, 10, 2 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Models/Task.php",
        "line": 306
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-set-job-data/",
      "related": [
        "gk/foundation/scheduler/task/set/args",
        "gk/foundation/scheduler/task/set/dependencies"
      ]
    },
    {
      "id": "gk-foundation-scheduler-task-time-budget",
      "name": "gk/foundation/scheduler/task/time-budget",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the cooperative time budget for individual tasks.",
      "parameters": [
        {
          "name": "budget",
          "type": "float",
          "description": "The time budget in seconds."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/task/time-budget', function($budget) {\n    // Modify $budget as needed\n    return $budget;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Handlers/TaskExecutor.php",
        "line": 612
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-task-time-budget/",
      "related": [
        "gk/foundation/scheduler/task/max-no-progress-reruns",
        "gk/foundation/scheduler/task/max-retries"
      ]
    },
    {
      "id": "gk-foundation-scheduler-ui-poll-interval",
      "name": "gk/foundation/scheduler/ui/poll-interval",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the polling interval for the Background Jobs UI, in seconds.",
      "parameters": [
        {
          "name": "interval",
          "type": "int",
          "description": "Polling interval in seconds. Default: 5."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/ui/poll-interval', function($interval) {\n    // Modify $interval as needed\n    return $interval;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Overview/JobOverview.php",
        "line": 267
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-ui-poll-interval/",
      "related": [
        "gk/foundation/scheduler/ui/show-in-network-admin"
      ]
    },
    {
      "id": "gk-foundation-scheduler-ui-show-in-network-admin",
      "name": "gk/foundation/scheduler/ui/show-in-network-admin",
      "type": "filter",
      "product": "foundation",
      "description": "Controls whether the Background Jobs page appears in the network admin menu.",
      "parameters": [
        {
          "name": "show",
          "type": "bool",
          "description": "Whether to show the menu item. Default: false."
        }
      ],
      "categories": [
        "admin"
      ],
      "example": "add_filter( 'gk/foundation/scheduler/ui/show-in-network-admin', function($show) {\n    // Modify $show as needed\n    return $show;\n}, 10, 1 );",
      "since": "1.12.0",
      "source": {
        "file": "Scheduler/Overview/JobOverview.php",
        "line": 140
      },
      "url": "/docs/foundation/filters/gk-foundation-scheduler-ui-show-in-network-admin/",
      "related": [
        "gk/foundation/scheduler/ui/poll-interval"
      ]
    },
    {
      "id": "gk-foundation-secure-download-endpoint",
      "name": "gk/foundation/secure-download/endpoint",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the secure download endpoint.",
      "parameters": [
        {
          "name": "endpoint",
          "type": "string",
          "description": "The download endpoint. Default 'gk-download'."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/endpoint', function($endpoint) {\n    // Modify $endpoint as needed\n    return $endpoint;\n}, 10, 1 );",
      "since": "TBD: TBD",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 207
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-endpoint/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/error-response",
        "gk/foundation/secure-download/headers"
      ]
    },
    {
      "id": "gk-foundation-secure-download-error-response",
      "name": "gk/foundation/secure-download/error-response",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the download error response.",
      "parameters": [
        {
          "name": "error_response",
          "type": "array\\",
          "description": "null`"
        },
        {
          "name": "code",
          "type": "int",
          "description": "HTTP status code."
        },
        {
          "name": "message",
          "type": "string",
          "description": "Error message."
        },
        {
          "name": "exception",
          "type": "\\Exception",
          "description": "The exception that was thrown."
        },
        {
          "name": "token",
          "type": "string",
          "description": "The download token that was provided."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/error-response', function($error_response, $code, $message, $exception, $token) {\n    // Modify $error_response as needed\n    return $error_response;\n}, 10, 5 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 626
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-error-response/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/headers"
      ]
    },
    {
      "id": "gk-foundation-secure-download-headers",
      "name": "gk/foundation/secure-download/headers",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the headers sent for a secure file download.",
      "parameters": [
        {
          "name": "headers",
          "type": "array",
          "description": "Array of headers to be sent."
        },
        {
          "name": "context",
          "type": "array",
          "description": "Context data for the download."
        },
        {
          "name": "file_path",
          "type": "string",
          "description": "The absolute path to the file."
        },
        {
          "name": "file_name",
          "type": "string",
          "description": "Filename to use in response."
        },
        {
          "name": "mime_type",
          "type": "string",
          "description": "MIME type of the file."
        },
        {
          "name": "file_size",
          "type": "int",
          "description": "Total file size in bytes."
        },
        {
          "name": "range_start",
          "type": "int",
          "description": "Byte offset to start from."
        },
        {
          "name": "range_end",
          "type": "int",
          "description": "Byte offset to end at."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "Token payload data."
        },
        {
          "name": "partial_content",
          "type": "bool",
          "description": "Whether this is a partial content response."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/headers', function($headers, $context, $file_path, $file_name, $mime_type, $file_size, $range_start, $range_end, $token_data, $partial_content) {\n    // Modify $headers as needed\n    return $headers;\n}, 10, 10 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 912
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-headers/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-history-length",
      "name": "gk/foundation/secure-download/history-length",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the maximum number of history entries to keep per token.",
      "parameters": [
        {
          "name": "max_history",
          "type": "int",
          "description": "Maximum number of history entries to keep. Default 100."
        },
        {
          "name": "token_id",
          "type": "string",
          "description": "The token ID for the download."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The full token data array."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/history-length', function($max_history, $token_id, $token_data) {\n    // Modify $max_history as needed\n    return $max_history;\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1414
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-history-length/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-history-record",
      "name": "gk/foundation/secure-download/history-record",
      "type": "filter",
      "product": "foundation",
      "description": "Filters download information to allow adding tracking data.",
      "parameters": [
        {
          "name": "history_record",
          "type": "array",
          "description": "Minimal download information."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The token data."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/history-record', function($history_record, $token_data) {\n    // Modify $history_record as needed\n    return $history_record;\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1354
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-history-record/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-max-remote-size",
      "name": "gk/foundation/secure-download/max-remote-size",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the maximum allowed remote file size.",
      "parameters": [
        {
          "name": "max_size",
          "type": "int",
          "description": "Maximum file size in bytes. Default 104857600 (100MB)."
        },
        {
          "name": "url",
          "type": "string",
          "description": "The remote URL."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The token data."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/max-remote-size', function($max_size, $url, $token_data) {\n    // Modify $max_size as needed\n    return $max_size;\n}, 10, 3 );",
      "since": "TBD: TBD",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1250
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-max-remote-size/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-remote-redirection",
      "name": "gk/foundation/secure-download/remote-redirection",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the number of redirects to follow for remote downloads.",
      "parameters": [
        {
          "name": "redirection",
          "type": "int",
          "description": "Number of redirects to follow. Default 0 (safest)."
        },
        {
          "name": "url",
          "type": "string",
          "description": "The remote URL."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The token data."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/remote-redirection', function($redirection, $url, $token_data) {\n    // Modify $redirection as needed\n    return $redirection;\n}, 10, 3 );",
      "since": "TBD: TBD",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1173
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-remote-redirection/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-remote-request-args",
      "name": "gk/foundation/secure-download/remote-request-args",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the remote request args.",
      "parameters": [
        {
          "name": "args",
          "type": "array",
          "description": "Request arguments for wp_safe_remote_get()."
        },
        {
          "name": "url",
          "type": "string",
          "description": "The remote URL."
        },
        {
          "name": "token_data",
          "type": "array",
          "description": "The token data."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/remote-request-args', function($args, $url, $token_data) {\n    // Modify $args as needed\n    return $args;\n}, 10, 3 );",
      "since": "TBD: TBD",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1189
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-remote-request-args/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-remote-source",
      "name": "gk/foundation/secure-download/remote-source",
      "type": "filter",
      "product": "foundation",
      "description": "Allows serving files from remote URLs when local file doesn't exist.",
      "parameters": [
        {
          "name": "remote_source",
          "type": "array\\",
          "description": "false`"
        },
        {
          "name": "file_path",
          "type": "string",
          "description": "The original file path that wasn't found."
        },
        {
          "name": "args",
          "type": "array",
          "description": "The arguments passed to generate_download_url."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/remote-source', function($remote_source, $file_path, $args) {\n    // Modify $remote_source as needed\n    return $remote_source;\n}, 10, 3 );",
      "since": "TBD: TBD",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 412
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-remote-source/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-save-history",
      "name": "gk/foundation/secure-download/save-history",
      "type": "filter",
      "product": "foundation",
      "description": "Filters whether to store download history.",
      "parameters": [
        {
          "name": "should_save",
          "type": "bool",
          "description": "Whether to record the download. Default false."
        },
        {
          "name": "history_record",
          "type": "array",
          "description": "The download record to save."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/save-history', function($should_save, $history_record) {\n    // Modify $should_save as needed\n    return $should_save;\n}, 10, 2 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1366
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-save-history/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-token-data",
      "name": "gk/foundation/secure-download/token-data",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the token data before encryption.",
      "parameters": [
        {
          "name": "token_data",
          "type": "array",
          "description": "The token data."
        },
        {
          "name": "file_path",
          "type": "string",
          "description": "The absolute path to the file."
        },
        {
          "name": "args",
          "type": "array",
          "description": "The arguments passed to generate_download_url."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/token-data', function($token_data, $file_path, $args) {\n    // Modify $token_data as needed\n    return $token_data;\n}, 10, 3 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 510
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-token-data/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-validate-token",
      "name": "gk/foundation/secure-download/validate-token",
      "type": "filter",
      "product": "foundation",
      "description": "Allows overriding the token validation result.",
      "parameters": [
        {
          "name": "validation_result",
          "type": "array\\",
          "description": "false`"
        },
        {
          "name": "token_data",
          "type": "array\\",
          "description": "null`"
        },
        {
          "name": "token",
          "type": "string",
          "description": "The original encrypted token."
        },
        {
          "name": "failure_code",
          "type": "string\\",
          "description": "null`"
        },
        {
          "name": "exception",
          "type": "\\Exception\\",
          "description": "null`"
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/validate-token', function($validation_result, $token_data, $token, $failure_code, $exception) {\n    // Modify $validation_result as needed\n    return $validation_result;\n}, 10, 5 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 767
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-validate-token/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-secure-download-visitor-ip",
      "name": "gk/foundation/secure-download/visitor-ip",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the visitor IP address.",
      "parameters": [
        {
          "name": "ip",
          "type": "string",
          "description": "The detected IP address."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/secure-download/visitor-ip', function($ip) {\n    // Modify $ip as needed\n    return $ip;\n}, 10, 1 );",
      "since": "1.3.0",
      "source": {
        "file": "Components/SecureDownload.php",
        "line": 1763
      },
      "url": "/docs/foundation/filters/gk-foundation-secure-download-visitor-ip/",
      "related": [
        "gk/foundation/secure-download/after-download",
        "gk/foundation/secure-download/before-download",
        "gk/foundation/secure-download/error",
        "gk/foundation/secure-download/endpoint",
        "gk/foundation/secure-download/error-response"
      ]
    },
    {
      "id": "gk-foundation-settings-capability",
      "name": "gk/foundation/settings/capability",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies capability to access GravityKit Settings.",
      "parameters": [
        {
          "name": "capability",
          "type": "string",
          "description": "Capability."
        }
      ],
      "categories": [
        "permissions"
      ],
      "example": "add_filter( 'gk/foundation/settings/capability', function($capability) {\n    // Modify $capability as needed\n    return $capability;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 78
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-capability/",
      "related": [
        "gk/foundation/settings/initialized"
      ]
    },
    {
      "id": "gk-foundation-settings-data-extra",
      "name": "gk/foundation/settings/data/extra",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies extra data passed from backend to UI and back (during save operations).",
      "parameters": [
        {
          "name": "extra",
          "type": "array",
          "description": "Extra data."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/settings/data/extra', function($extra) {\n    // Modify $extra as needed\n    return $extra;\n}, 10, 1 );",
      "since": "1.6.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 479
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-data-extra/",
      "related": [
        "gk/foundation/settings/data/plugins"
      ]
    },
    {
      "id": "gk-foundation-settings-data-plugins",
      "name": "gk/foundation/settings/data/plugins",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies plugins' settings.",
      "parameters": [
        {
          "name": "plugins_data",
          "type": "array",
          "description": "Plugins data."
        },
        {
          "name": "payload",
          "type": "array",
          "description": "Request payload, if this is an Ajax request."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/settings/data/plugins', function($plugins_data, $payload) {\n    // Modify $plugins_data as needed\n    return $plugins_data;\n}, 10, 2 );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 202
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-data-plugins/",
      "related": [
        "gk/foundation/settings/data/extra"
      ]
    },
    {
      "id": "gk-foundation-settings-plugin-save-before",
      "name": "gk/foundation/settings/\\{$plugin\\}/save/before",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies plugin settings object before saving.",
      "parameters": [
        {
          "name": "settings",
          "type": "array",
          "description": "Plugin settings."
        },
        {
          "name": "payload",
          "type": "array",
          "description": "Request payload, if this is an Ajax request."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_filter( 'gk/foundation/settings/\\{$plugin\\}/save/before', function($settings, $payload) {\n    // Modify $settings as needed\n    return $settings;\n}, 10, 2 );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 374
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-plugin-save-before/",
      "related": []
    },
    {
      "id": "gk-foundation-settings-plugin_id-validation-after",
      "name": "gk/foundation/settings/\\{$plugin_id\\}/validation/after",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies plugin settings object after validation.",
      "parameters": [
        {
          "name": "ui_settings",
          "type": "array",
          "description": "Settings."
        },
        {
          "name": "payload",
          "type": "array",
          "description": "Request payload, if this is an Ajax request."
        }
      ],
      "categories": [
        "after"
      ],
      "example": "add_filter( 'gk/foundation/settings/\\{$plugin_id\\}/validation/after', function($ui_settings, $payload) {\n    // Modify $ui_settings as needed\n    return $ui_settings;\n}, 10, 2 );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 686
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-plugin_id-validation-after/",
      "related": [
        "gk/foundation/settings/\\{$plugin_id\\}/validation/before"
      ]
    },
    {
      "id": "gk-foundation-settings-plugin_id-validation-before",
      "name": "gk/foundation/settings/\\{$plugin_id\\}/validation/before",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies plugin settings object before validation.",
      "parameters": [
        {
          "name": "ui_settings",
          "type": "array",
          "description": "Settings."
        },
        {
          "name": "payload",
          "type": "array",
          "description": "Request payload, if this is an Ajax request."
        }
      ],
      "categories": [
        "before"
      ],
      "example": "add_filter( 'gk/foundation/settings/\\{$plugin_id\\}/validation/before', function($ui_settings, $payload) {\n    // Modify $ui_settings as needed\n    return $ui_settings;\n}, 10, 2 );",
      "since": "1.0.0",
      "source": {
        "file": "Settings/Framework.php",
        "line": 671
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-plugin_id-validation-before/",
      "related": [
        "gk/foundation/settings/\\{$plugin_id\\}/validation/after"
      ]
    },
    {
      "id": "gk-foundation-settings-productslug-settings-url",
      "name": "gk/foundation/settings/\\{$product[slug]\\}/settings-url",
      "type": "filter",
      "product": "foundation",
      "description": "Sets link to the product settings page.",
      "parameters": [
        {
          "name": "settings_url",
          "type": "string",
          "description": "URL to the product settings page."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/settings/\\{$product[slug]\\}/settings-url', function($settings_url) {\n    // Modify $settings_url as needed\n    return $settings_url;\n}, 10, 1 );",
      "since": "1.0.3",
      "source": {
        "file": "Licenses/ProductManager.php",
        "line": 1694
      },
      "url": "/docs/foundation/filters/gk-foundation-settings-productslug-settings-url/",
      "related": []
    },
    {
      "id": "gk-foundation-settings",
      "name": "gk/foundation/settings",
      "type": "filter",
      "product": "foundation",
      "description": "Modifies the GravityKit general settings object.",
      "parameters": [
        {
          "name": "all_settings",
          "type": "array",
          "description": "GravityKit general settings."
        },
        {
          "name": "payload",
          "type": "array",
          "description": "Request payload, if this is an Ajax request."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/settings', function($all_settings, $payload) {\n    // Modify $all_settings as needed\n    return $all_settings;\n}, 10, 2 );",
      "since": "1.0.0",
      "source": {
        "file": "Core.php",
        "line": 766
      },
      "url": "/docs/foundation/filters/gk-foundation-settings/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-scripts",
        "gk/foundation/inline-styles",
        "gk/foundation/is-production-environment"
      ]
    },
    {
      "id": "gk-foundation-show-loaded-by-message",
      "name": "gk/foundation/show-loaded-by-message",
      "type": "filter",
      "product": "foundation",
      "description": "Controls whether to include \"GravityKit Foundation X (loaded by Y)\" HTML comment in admin pages.",
      "parameters": [
        {
          "name": "show_loaded_by_message",
          "type": "bool",
          "description": "Whether to display the information."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/show-loaded-by-message', function($show_loaded_by_message) {\n    // Modify $show_loaded_by_message as needed\n    return $show_loaded_by_message;\n}, 10, 1 );",
      "since": "1.2.0",
      "source": {
        "file": "Core.php",
        "line": 970
      },
      "url": "/docs/foundation/filters/gk-foundation-show-loaded-by-message/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-scripts",
        "gk/foundation/inline-styles",
        "gk/foundation/is-production-environment"
      ]
    },
    {
      "id": "gk-foundation-skip-site-health-check",
      "name": "gk/foundation/skip-site-health-check",
      "type": "filter",
      "product": "foundation",
      "description": "Filters if site health check should be skipped. This is useful if loopback is restricted.",
      "parameters": [
        {
          "name": "skip_site_health_check",
          "type": "bool",
          "description": "Whether to skip site health check."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/skip-site-health-check', function($skip_site_health_check) {\n    // Modify $skip_site_health_check as needed\n    return $skip_site_health_check;\n}, 10, 1 );",
      "since": "1.5.0",
      "source": {
        "file": "Helpers/Core.php",
        "line": 508
      },
      "url": "/docs/foundation/filters/gk-foundation-skip-site-health-check/",
      "related": [
        "gk/foundation/initialized",
        "gk/foundation/force-standalone-foundation-instance",
        "gk/foundation/inline-scripts",
        "gk/foundation/inline-styles",
        "gk/foundation/is-production-environment"
      ]
    },
    {
      "id": "gk-foundation-translations-api-url",
      "name": "gk/foundation/translations/api-url",
      "type": "filter",
      "product": "foundation",
      "description": "Filters the URL used to fetch translation packages.",
      "parameters": [
        {
          "name": "url",
          "type": "string",
          "description": "The translation packages API URL."
        }
      ],
      "categories": [
        "api"
      ],
      "example": "add_filter( 'gk/foundation/translations/api-url', function($url) {\n    // Modify $url as needed\n    return $url;\n}, 10, 1 );",
      "since": "1.15.0",
      "source": {
        "file": "Translations/TranslationUpdater.php",
        "line": 185
      },
      "url": "/docs/foundation/filters/gk-foundation-translations-api-url/",
      "related": [
        "gk/foundation/translations/initialized",
        "gk/foundation/translations/disable-download"
      ]
    },
    {
      "id": "gk-foundation-translations-disable-download",
      "name": "gk/foundation/translations/disable-download",
      "type": "filter",
      "product": "foundation",
      "description": "Disables downloading translations.",
      "parameters": [
        {
          "name": "disable_translations",
          "type": "bool",
          "description": "Whether to download translations. Default: false."
        }
      ],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/translations/disable-download', function($disable_translations) {\n    // Modify $disable_translations as needed\n    return $disable_translations;\n}, 10, 1 );",
      "since": "1.2.6",
      "source": {
        "file": "Translations/Framework.php",
        "line": 105
      },
      "url": "/docs/foundation/filters/gk-foundation-translations-disable-download/",
      "related": [
        "gk/foundation/translations/initialized",
        "gk/foundation/translations/api-url"
      ]
    },
    {
      "id": "gk-foundation-translations-permissions-can-install-languages",
      "name": "gk/foundation/translations/permissions/can-install-languages",
      "type": "filter",
      "product": "foundation",
      "description": "Sets permission to install languages.",
      "parameters": [
        {
          "name": "can_install_languages",
          "type": "bool",
          "description": "Default: <code>install_languages</code> capability."
        }
      ],
      "categories": [
        "permissions"
      ],
      "example": "add_filter( 'gk/foundation/translations/permissions/can-install-languages', function($can_install_languages) {\n    // Modify $can_install_languages as needed\n    return $can_install_languages;\n}, 10, 1 );",
      "since": "1.0.0",
      "source": {
        "file": "Translations/Framework.php",
        "line": 197
      },
      "url": "/docs/foundation/filters/gk-foundation-translations-permissions-can-install-languages/",
      "related": []
    },
    {
      "id": "gk-foundation-translations-plugin_dataTextDomain-mo-file",
      "name": "gk/foundation/translations/\\{$plugin_data[TextDomain]\\}/mo-file",
      "type": "filter",
      "product": "foundation",
      "description": "Specifies the location of the .mo file.",
      "parameters": [],
      "categories": [
        "general"
      ],
      "example": "add_filter( 'gk/foundation/translations/\\{$plugin_data[TextDomain]\\}/mo-file', function() {\n    // Modify $value as needed\n    return $value;\n} );",
      "since": "1.2.6",
      "source": {
        "file": "Translations/Framework.php",
        "line": 138
      },
      "url": "/docs/foundation/filters/gk-foundation-translations-plugin_dataTextDomain-mo-file/",
      "related": []
    }
  ],
  "stats": {
    "total": 137,
    "actions": 39,
    "filters": 98
  }
}