{
  "manifest_version": "1.0.0",
  "template": {
    "id": "2aa3ff95-4f15-4be5-935e-98168c1b89bc",
    "slug": "cron-trigger-external-webhook-url",
    "name": "Cron Trigger External Webhook URL",
    "description": "Call external webhook URL with auth header tokens via Cron Schedule",
    "url": "https://railway.com/deploy/cron-trigger-external-webhook-url",
    "upstream": {
      "image": "ghcr.io/railwayapp/function-bun:1.3.0"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Bun Function",
      "source": {
        "image": "ghcr.io/railwayapp/function-bun:1.3.0"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "CRON_SECRET",
      "service": "Bun Function",
      "description": "A secure token used in the Authorization Bearer header",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "CRON_ENDPOINT_URL",
      "service": "Bun Function",
      "description": "The external URL to call when the cron job runs",
      "secret": false,
      "strategy": "ask_user"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "cron-trigger-external-webhook-url"
      }
    },
    "cli": "railway deploy --template cron-trigger-external-webhook-url",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "2aa3ff95-4f15-4be5-935e-98168c1b89bc",
            "serializedConfig": {
              "services": {
                "79526d14-60a3-4114-ab25-b499a681f64c": {
                  "name": "Bun Function",
                  "deploy": {
                    "startCommand": "./run.sh Y29uc3QgY3JvblNlY3JldCA9IHByb2Nlc3MuZW52LkNST05fU0VDUkVUOwpjb25zdCBlbmRwb2ludFVybCA9IHByb2Nlc3MuZW52LkNST05fRU5EUE9JTlRfVVJMOwoKaWYgKCFjcm9uU2VjcmV0IHx8ICFlbmRwb2ludFVybCkgewogIGNvbnNvbGUuZXJyb3IoCiAgICBKU09OLnN0cmluZ2lmeSh7CiAgICAgIGxldmVsOiAiZXJyb3IiLAogICAgICBtZXNzYWdlOiAiQ1JPTl9TRUNSRVQgYW5kIEVORFBPSU5UX1VSTCBtdXN0IGJlIHNldCIsCiAgICB9KQogICk7CiAgcHJvY2Vzcy5leGl0KDEpOwp9Cgp0cnkgewogIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goZW5kcG9pbnRVcmwsIHsKICAgIG1ldGhvZDogIlBPU1QiLAogICAgaGVhZGVyczogewogICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7Y3JvblNlY3JldH1gLAogICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgfSwKICB9KTsKCiAgbGV0IGRhdGEgPSBudWxsOwogIGNvbnN0IGNvbnRlbnRUeXBlID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpOwogIGlmIChjb250ZW50VHlwZSAmJiBjb250ZW50VHlwZS5pbmNsdWRlcygiYXBwbGljYXRpb24vanNvbiIpKSB7CiAgICB0cnkgewogICAgICBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOwogICAgfSBjYXRjaCB7CiAgICAgIGRhdGEgPSB7IHJhdzogYXdhaXQgcmVzcG9uc2UudGV4dCgpIH07CiAgICB9CiAgfSBlbHNlIHsKICAgIGRhdGEgPSB7IHJhdzogYXdhaXQgcmVzcG9uc2UudGV4dCgpIH07CiAgfQoKICBjb25zb2xlLmxvZygKICAgIEpTT04uc3RyaW5naWZ5KHsKICAgICAgbGV2ZWw6IHJlc3BvbnNlLm9rID8gImluZm8iIDogImVycm9yIiwKICAgICAgbWVzc2FnZTogcmVzcG9uc2Uub2sgPyAiQ3JvbiBqb2IgY29tcGxldGVkIiA6ICJDcm9uIGpvYiBmYWlsZWQiLAogICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cywKICAgICAgZGF0YSwKICAgIH0pCiAgKTsKCiAgaWYgKCFyZXNwb25zZS5vaykgewogICAgcHJvY2Vzcy5leGl0KDEpOwogIH0KfSBjYXRjaCAoZXJyb3IpIHsKICBjb25zb2xlLmxvZygKICAgIEpTT04uc3RyaW5naWZ5KHsKICAgICAgbGV2ZWw6ICJlcnJvciIsCiAgICAgIG1lc3NhZ2U6ICJDcm9uIGpvYiBmYWlsZWQiLAogICAgICBlcnJvcjogZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAiVW5rbm93biBlcnJvciIsCiAgICB9KQogICk7CiAgcHJvY2Vzcy5leGl0KDEpOwp9Cg=="
                  },
                  "source": {
                    "image": "ghcr.io/railwayapp/function-bun:1.3.0"
                  },
                  "variables": {
                    "CRON_SECRET": {
                      "isOptional": false,
                      "description": "A secure token used in the Authorization Bearer header",
                      "defaultValue": "{{CRON_SECRET}}"
                    },
                    "CRON_ENDPOINT_URL": {
                      "isOptional": false,
                      "description": "The external URL to call when the cron job runs",
                      "defaultValue": "{{CRON_ENDPOINT_URL}}"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": false
  },
  "generated_at": "2026-09-13T04:14:39.446Z",
  "generator_version": "0.1.0"
}
