[{"data":1,"prerenderedAt":615},["ShallowReactive",2],{"navigation_docs":3,"-guides-automated-backups-webhook":134,"-guides-automated-backups-webhook-surround":610},[4,36,61,87,113],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":35},"Getting Started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-sparkles",{"title":16,"path":17,"stem":18,"icon":19},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F2.quickstart","i-lucide-zap",{"title":21,"path":22,"stem":23,"icon":24},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F3.authentication","i-lucide-key",{"title":26,"path":27,"stem":28,"icon":29},"Rate Limits & Quotas","\u002Fgetting-started\u002Frate-limits-quotas","1.getting-started\u002F4.rate-limits-quotas","i-lucide-gauge",{"title":31,"path":32,"stem":33,"icon":34},"SDKs & Tools","\u002Fgetting-started\u002Fsdks-tools","1.getting-started\u002F5.sdks-tools","i-lucide-box",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"Cloud Infrastructure","i-lucide-server","\u002Finfrastructure","2.infrastructure",[42,46,51,56],{"title":43,"path":44,"stem":45,"icon":38},"Cloud VPS Compute","\u002Finfrastructure\u002Fvps-compute","2.infrastructure\u002F1.vps-compute",{"title":47,"path":48,"stem":49,"icon":50},"Managed Databases","\u002Finfrastructure\u002Fmanaged-databases","2.infrastructure\u002F2.managed-databases","i-lucide-database",{"title":52,"path":53,"stem":54,"icon":55},"Networking & Cloud Firewall","\u002Finfrastructure\u002Fnetworking-firewall","2.infrastructure\u002F3.networking-firewall","i-lucide-shield",{"title":57,"path":58,"stem":59,"icon":60},"Block Storage & Volumes","\u002Finfrastructure\u002Fblock-storage","2.infrastructure\u002F4.block-storage","i-lucide-hard-drive",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":35},"Services & APIs","i-lucide-cpu","\u002Fservices-api","3.services-api",[67,72,77,82],{"title":68,"path":69,"stem":70,"icon":71},"REST API Reference","\u002Fservices-api\u002Fapi-reference","3.services-api\u002F1.api-reference","i-lucide-terminal",{"title":73,"path":74,"stem":75,"icon":76},"URL Shortener API","\u002Fservices-api\u002Furl-shortener","3.services-api\u002F2.url-shortener","i-lucide-link",{"title":78,"path":79,"stem":80,"icon":81},"Temp Mail API","\u002Fservices-api\u002Ftemp-mail","3.services-api\u002F3.temp-mail","i-lucide-mail",{"title":83,"path":84,"stem":85,"icon":86},"Developer Utility APIs","\u002Fservices-api\u002Fdeveloper-utilities","3.services-api\u002F4.developer-utilities","i-lucide-wrench",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":35},"Guides & Tutorials","i-lucide-book-open","\u002Fguides","4.guides",[93,98,103,108],{"title":94,"path":95,"stem":96,"icon":97},"Deploy a Full-Stack App with VPS & PostgreSQL","\u002Fguides\u002Fdeploy-fullstack-app","4.guides\u002F1.deploy-fullstack-app","i-lucide-layers",{"title":99,"path":100,"stem":101,"icon":102},"Automated Backups & Webhook Alerts","\u002Fguides\u002Fautomated-backups-webhook","4.guides\u002F2.automated-backups-webhook","i-lucide-bell",{"title":104,"path":105,"stem":106,"icon":107},"E2E Auth Testing with Temp Mail in CI\u002FCD","\u002Fguides\u002Fci-cd-temp-mail-testing","4.guides\u002F3.ci-cd-temp-mail-testing","i-lucide-check-circle-2",{"title":109,"path":110,"stem":111,"icon":112},"Custom Domain & SSL Configuration","\u002Fguides\u002Fcustom-domain-setup","4.guides\u002F4.custom-domain-setup","i-lucide-globe",{"title":114,"icon":115,"path":116,"stem":117,"children":118,"page":35},"Account & Billing","i-lucide-credit-card","\u002Faccount-billing","5.account-billing",[119,124,129],{"title":120,"path":121,"stem":122,"icon":123},"Pricing & Hourly Billing","\u002Faccount-billing\u002Fpricing-billing","5.account-billing\u002F1.pricing-billing","i-lucide-receipt",{"title":125,"path":126,"stem":127,"icon":128},"Team Management & RBAC","\u002Faccount-billing\u002Fteam-rbac","5.account-billing\u002F2.team-rbac","i-lucide-users",{"title":130,"path":131,"stem":132,"icon":133},"Resource Quotas & Service Limits","\u002Faccount-billing\u002Fservice-limits","5.account-billing\u002F3.service-limits","i-lucide-sliders",{"id":135,"title":99,"body":136,"description":601,"extension":602,"links":603,"meta":604,"navigation":605,"path":100,"seo":606,"stem":101,"__hash__":609},"docs\u002F4.guides\u002F2.automated-backups-webhook.md",{"type":137,"value":138,"toc":596},"minimark",[139,143,155,158,163,166,280,282,286,289,387,389,393,400,592],[140,141,99],"h1",{"id":142},"automated-backups-webhook-alerts",[144,145,146,147,151,152,154],"p",{},"1st Services allows you to configure automated snapshot policies for both ",[148,149,150],"strong",{},"Cloud VPS"," and ",[148,153,47],{},", and trigger instant webhook notifications upon completion or failure.",[156,157],"hr",{},[159,160,162],"h2",{"id":161},"_1-configure-snapshot-schedules","1. Configure Snapshot Schedules",[144,164,165],{},"Use the API to set a daily retention policy:",[167,168,174],"pre",{"className":169,"code":170,"filename":171,"language":172,"meta":173,"style":173},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X PUT https:\u002F\u002Fapi.1st-services.com\u002Fv1\u002Fdatabases\u002Fdb_9918231\u002Fbackup-schedule \\\n  -H \"Authorization: Bearer $FIRST_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"frequency\": \"daily\",\n    \"hour_utc\": 3,\n    \"retention_days\": 14,\n    \"notify_on_complete\": true\n  }'\n","cURL","bash","",[175,176,177,200,221,235,247,253,259,265,271],"code",{"__ignoreMap":173},[178,179,182,186,190,193,196],"span",{"class":180,"line":181},"line",1,[178,183,185],{"class":184},"sBMFI","curl",[178,187,189],{"class":188},"sfazB"," -X",[178,191,192],{"class":188}," PUT",[178,194,195],{"class":188}," https:\u002F\u002Fapi.1st-services.com\u002Fv1\u002Fdatabases\u002Fdb_9918231\u002Fbackup-schedule",[178,197,199],{"class":198},"sTEyZ"," \\\n",[178,201,203,206,210,213,216,219],{"class":180,"line":202},2,[178,204,205],{"class":188},"  -H",[178,207,209],{"class":208},"sMK4o"," \"",[178,211,212],{"class":188},"Authorization: Bearer ",[178,214,215],{"class":198},"$FIRST_API_KEY",[178,217,218],{"class":208},"\"",[178,220,199],{"class":198},[178,222,224,226,228,231,233],{"class":180,"line":223},3,[178,225,205],{"class":188},[178,227,209],{"class":208},[178,229,230],{"class":188},"Content-Type: application\u002Fjson",[178,232,218],{"class":208},[178,234,199],{"class":198},[178,236,238,241,244],{"class":180,"line":237},4,[178,239,240],{"class":188},"  -d",[178,242,243],{"class":208}," '",[178,245,246],{"class":188},"{\n",[178,248,250],{"class":180,"line":249},5,[178,251,252],{"class":188},"    \"frequency\": \"daily\",\n",[178,254,256],{"class":180,"line":255},6,[178,257,258],{"class":188},"    \"hour_utc\": 3,\n",[178,260,262],{"class":180,"line":261},7,[178,263,264],{"class":188},"    \"retention_days\": 14,\n",[178,266,268],{"class":180,"line":267},8,[178,269,270],{"class":188},"    \"notify_on_complete\": true\n",[178,272,274,277],{"class":180,"line":273},9,[178,275,276],{"class":188},"  }",[178,278,279],{"class":208},"'\n",[156,281],{},[159,283,285],{"id":284},"_2-register-a-webhook-endpoint","2. Register a Webhook Endpoint",[144,287,288],{},"Register your backend or Discord\u002FSlack relay endpoint:",[167,290,293],{"className":169,"code":291,"filename":292,"language":172,"meta":173,"style":173},"curl -X POST https:\u002F\u002Fapi.1st-services.com\u002Fv1\u002Fwebhooks \\\n  -H \"Authorization: Bearer $FIRST_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fapi.myapp.com\u002Fwebhooks\u002F1st-services\",\n    \"events\": [\n      \"database.backup.completed\",\n      \"database.backup.failed\",\n      \"vps.snapshot.completed\"\n    ],\n    \"secret\": \"whsec_994812048129481209\"\n  }'\n","cURL Register Webhook",[175,294,295,309,323,335,343,348,353,358,363,368,374,380],{"__ignoreMap":173},[178,296,297,299,301,304,307],{"class":180,"line":181},[178,298,185],{"class":184},[178,300,189],{"class":188},[178,302,303],{"class":188}," POST",[178,305,306],{"class":188}," https:\u002F\u002Fapi.1st-services.com\u002Fv1\u002Fwebhooks",[178,308,199],{"class":198},[178,310,311,313,315,317,319,321],{"class":180,"line":202},[178,312,205],{"class":188},[178,314,209],{"class":208},[178,316,212],{"class":188},[178,318,215],{"class":198},[178,320,218],{"class":208},[178,322,199],{"class":198},[178,324,325,327,329,331,333],{"class":180,"line":223},[178,326,205],{"class":188},[178,328,209],{"class":208},[178,330,230],{"class":188},[178,332,218],{"class":208},[178,334,199],{"class":198},[178,336,337,339,341],{"class":180,"line":237},[178,338,240],{"class":188},[178,340,243],{"class":208},[178,342,246],{"class":188},[178,344,345],{"class":180,"line":249},[178,346,347],{"class":188},"    \"url\": \"https:\u002F\u002Fapi.myapp.com\u002Fwebhooks\u002F1st-services\",\n",[178,349,350],{"class":180,"line":255},[178,351,352],{"class":188},"    \"events\": [\n",[178,354,355],{"class":180,"line":261},[178,356,357],{"class":188},"      \"database.backup.completed\",\n",[178,359,360],{"class":180,"line":267},[178,361,362],{"class":188},"      \"database.backup.failed\",\n",[178,364,365],{"class":180,"line":273},[178,366,367],{"class":188},"      \"vps.snapshot.completed\"\n",[178,369,371],{"class":180,"line":370},10,[178,372,373],{"class":188},"    ],\n",[178,375,377],{"class":180,"line":376},11,[178,378,379],{"class":188},"    \"secret\": \"whsec_994812048129481209\"\n",[178,381,383,385],{"class":180,"line":382},12,[178,384,276],{"class":188},[178,386,279],{"class":208},[156,388],{},[159,390,392],{"id":391},"_3-webhook-payload-example","3. Webhook Payload Example",[144,394,395,396,399],{},"When a backup finishes, 1st Services sends an HTTP ",[175,397,398],{},"POST"," to your endpoint:",[167,401,405],{"className":402,"code":403,"language":404,"meta":173,"style":173},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"event\": \"database.backup.completed\",\n  \"data\": {\n    \"backup_id\": \"bk_881920\",\n    \"database_id\": \"db_9918231\",\n    \"database_name\": \"app-db\",\n    \"size_mb\": 4250,\n    \"duration_seconds\": 18,\n    \"completed_at\": \"2026-08-24T03:00:18Z\",\n    \"download_url_expires_at\": \"2026-08-24T05:00:00Z\"\n  }\n}\n","json",[175,406,407,411,435,449,470,490,510,527,543,563,582,587],{"__ignoreMap":173},[178,408,409],{"class":180,"line":181},[178,410,246],{"class":208},[178,412,413,416,420,422,425,427,430,432],{"class":180,"line":202},[178,414,415],{"class":208},"  \"",[178,417,419],{"class":418},"spNyl","event",[178,421,218],{"class":208},[178,423,424],{"class":208},":",[178,426,209],{"class":208},[178,428,429],{"class":188},"database.backup.completed",[178,431,218],{"class":208},[178,433,434],{"class":208},",\n",[178,436,437,439,442,444,446],{"class":180,"line":223},[178,438,415],{"class":208},[178,440,441],{"class":418},"data",[178,443,218],{"class":208},[178,445,424],{"class":208},[178,447,448],{"class":208}," {\n",[178,450,451,454,457,459,461,463,466,468],{"class":180,"line":237},[178,452,453],{"class":208},"    \"",[178,455,456],{"class":184},"backup_id",[178,458,218],{"class":208},[178,460,424],{"class":208},[178,462,209],{"class":208},[178,464,465],{"class":188},"bk_881920",[178,467,218],{"class":208},[178,469,434],{"class":208},[178,471,472,474,477,479,481,483,486,488],{"class":180,"line":249},[178,473,453],{"class":208},[178,475,476],{"class":184},"database_id",[178,478,218],{"class":208},[178,480,424],{"class":208},[178,482,209],{"class":208},[178,484,485],{"class":188},"db_9918231",[178,487,218],{"class":208},[178,489,434],{"class":208},[178,491,492,494,497,499,501,503,506,508],{"class":180,"line":255},[178,493,453],{"class":208},[178,495,496],{"class":184},"database_name",[178,498,218],{"class":208},[178,500,424],{"class":208},[178,502,209],{"class":208},[178,504,505],{"class":188},"app-db",[178,507,218],{"class":208},[178,509,434],{"class":208},[178,511,512,514,517,519,521,525],{"class":180,"line":261},[178,513,453],{"class":208},[178,515,516],{"class":184},"size_mb",[178,518,218],{"class":208},[178,520,424],{"class":208},[178,522,524],{"class":523},"sbssI"," 4250",[178,526,434],{"class":208},[178,528,529,531,534,536,538,541],{"class":180,"line":267},[178,530,453],{"class":208},[178,532,533],{"class":184},"duration_seconds",[178,535,218],{"class":208},[178,537,424],{"class":208},[178,539,540],{"class":523}," 18",[178,542,434],{"class":208},[178,544,545,547,550,552,554,556,559,561],{"class":180,"line":273},[178,546,453],{"class":208},[178,548,549],{"class":184},"completed_at",[178,551,218],{"class":208},[178,553,424],{"class":208},[178,555,209],{"class":208},[178,557,558],{"class":188},"2026-08-24T03:00:18Z",[178,560,218],{"class":208},[178,562,434],{"class":208},[178,564,565,567,570,572,574,576,579],{"class":180,"line":370},[178,566,453],{"class":208},[178,568,569],{"class":184},"download_url_expires_at",[178,571,218],{"class":208},[178,573,424],{"class":208},[178,575,209],{"class":208},[178,577,578],{"class":188},"2026-08-24T05:00:00Z",[178,580,581],{"class":208},"\"\n",[178,583,584],{"class":180,"line":376},[178,585,586],{"class":208},"  }\n",[178,588,589],{"class":180,"line":382},[178,590,591],{"class":208},"}\n",[593,594,595],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":173,"searchDepth":202,"depth":202,"links":597},[598,599,600],{"id":161,"depth":202,"text":162},{"id":284,"depth":202,"text":285},{"id":391,"depth":202,"text":392},"Set up scheduled database backups and receive instant status notifications in Slack or Discord.","md",null,{},{"icon":102},{"title":607,"description":608},"Automated Backups & Webhooks - 1st Services Guide","Configure database snapshot schedules and webhook notifications.","U25ulKridXTDTbCSKOSKyaPX62bpquAaR_bSbrZI6oM",[611,613],{"title":94,"path":95,"stem":96,"description":612,"icon":97,"children":-1},"End-to-end tutorial on launching a high-performance VPS, configuring Nginx, and connecting to 1st Managed PostgreSQL.",{"title":104,"path":105,"stem":106,"description":614,"icon":107,"children":-1},"How to automate email verification and magic link testing in GitHub Actions using the Temp Mail API.",1787579790889]