<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>automation Archives - Backup Copilot</title>
	<atom:link href="https://backupcopilotplugin.com/blog/tag/automation/feed/" rel="self" type="application/rss+xml" />
	<link>https://backupcopilotplugin.com/blog/tag/automation/</link>
	<description>WordPress Backups Done Right</description>
	<lastBuildDate>Mon, 24 Nov 2025 11:17:04 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://storage.googleapis.com/backupcopilotplugin/2025/11/favicon-alt-150x150.png</url>
	<title>automation Archives - Backup Copilot</title>
	<link>https://backupcopilotplugin.com/blog/tag/automation/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Backup Copilot Pro REST API: Automate Backups with External Systems</title>
		<link>https://backupcopilotplugin.com/blog/backup-copilot-pro-rest-api-automate-backups-with-external-systems/</link>
		
		<dc:creator><![CDATA[Krasen Slavov]]></dc:creator>
		<pubDate>Sun, 25 Jan 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Developer Resources]]></category>
		<category><![CDATA[api integration]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[external integration]]></category>
		<category><![CDATA[headless wordpress]]></category>
		<category><![CDATA[rest api]]></category>
		<guid isPermaLink="false">https://backupcopilotplugin.com/?p=278</guid>

					<description><![CDATA[<p>Backup Copilot Pro’s REST API enables programmatic control of backups, restores, and schedules from external systems.</p>
<p>The post <a href="https://backupcopilotplugin.com/blog/backup-copilot-pro-rest-api-automate-backups-with-external-systems/">Backup Copilot Pro REST API: Automate Backups with External Systems</a> appeared first on <a href="https://backupcopilotplugin.com">Backup Copilot</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><!-- @format --></p>
<p>Backup Copilot Pro’s REST API enables programmatic control of backups, restores, and schedules from external systems. Automate backups from CI/CD pipelines, build custom monitoring dashboards, integrate with mobile apps, or create multi-site management tools. This complete API reference shows you how with authentication methods, endpoint documentation, and integration examples.</p>
<h2 id="api-capabilities-overview">API Capabilities Overview</h2>
<p>The Backup Copilot Pro REST API provides:</p>
<p><strong>Backup Operations</strong>: Create, list, download, delete, and restore backups programmatically.</p>
<p><strong>Schedule Management</strong>: Create, update, and delete backup schedules via API.</p>
<p><strong>Real-Time Status</strong>: Monitor backup progress and completion status.</p>
<p><strong>Multi-Site Support</strong>: Manage backups across multiple WordPress installations from central system.</p>
<p><strong>Webhooks</strong>: Receive notifications when backup events occur (completed, failed, restored).</p>
<p><strong>Audit Logging</strong>: Track all API operations for compliance and security.</p>
<h2 id="authentication-methods">Authentication Methods</h2>
<p>Backup Copilot Pro API supports two authentication methods:</p>
<h3 id="application-passwords-recommended">Application Passwords (Recommended)</h3>
<p>WordPress Application Passwords provide secure API access without exposing main account password:</p>
<p><strong>Generate Application Password</strong>: 1. Navigate to Users → Profile in WordPress admin 2. Scroll to “Application Passwords” section 3. Enter name: “Backup Automation System” 4. Click “Add New Application Password” 5. Copy generated password (only shown once)</p>
<p><strong>Using Application Password</strong>:</p>
<div class="sourceCode" id="cb1">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true"></a><span class="ex">curl</span> -u username:application_password <span class="kw">\</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true"></a>  <span class="ex">https</span>://yoursite.com/wp-json/bkpc/v1/backup/list</span></code></pre>
</div>
<h3 id="oauth-2.0-enterprise">OAuth 2.0 (Enterprise)</h3>
<p>For enterprise integrations requiring token-based auth:</p>
<div class="sourceCode" id="cb2">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true"></a><span class="co"># Step 1: Get authorization code</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true"></a><span class="ex">https</span>://yoursite.com/oauth/authorize?</span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true"></a>  <span class="va">client_id=</span>YOUR_CLIENT_ID<span class="kw">&amp;</span></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true"></a>  <span class="va">redirect_uri=</span>https://app.example.com/callback<span class="kw">&amp;</span></span>
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true"></a>  <span class="va">response_type=</span>code<span class="kw">&amp;</span></span>
<span id="cb2-6"><a href="#cb2-6" aria-hidden="true"></a>  <span class="va">scope=</span>backup:read <span class="ex">backup</span>:write</span>
<span id="cb2-7"><a href="#cb2-7" aria-hidden="true"></a></span>
<span id="cb2-8"><a href="#cb2-8" aria-hidden="true"></a><span class="co"># Step 2: Exchange code for access token</span></span>
<span id="cb2-9"><a href="#cb2-9" aria-hidden="true"></a><span class="ex">curl</span> -X POST https://yoursite.com/oauth/token <span class="kw">\</span></span>
<span id="cb2-10"><a href="#cb2-10" aria-hidden="true"></a>  <span class="ex">-d</span> <span class="st">&quot;grant_type=authorization_code&quot;</span> <span class="kw">\</span></span>
<span id="cb2-11"><a href="#cb2-11" aria-hidden="true"></a>  <span class="ex">-d</span> <span class="st">&quot;code=AUTHORIZATION_CODE&quot;</span> <span class="kw">\</span></span>
<span id="cb2-12"><a href="#cb2-12" aria-hidden="true"></a>  <span class="ex">-d</span> <span class="st">&quot;client_id=YOUR_CLIENT_ID&quot;</span> <span class="kw">\</span></span>
<span id="cb2-13"><a href="#cb2-13" aria-hidden="true"></a>  <span class="ex">-d</span> <span class="st">&quot;client_secret=YOUR_CLIENT_SECRET&quot;</span> <span class="kw">\</span></span>
<span id="cb2-14"><a href="#cb2-14" aria-hidden="true"></a>  <span class="ex">-d</span> <span class="st">&quot;redirect_uri=https://app.example.com/callback&quot;</span></span>
<span id="cb2-15"><a href="#cb2-15" aria-hidden="true"></a></span>
<span id="cb2-16"><a href="#cb2-16" aria-hidden="true"></a><span class="co"># Step 3: Use access token</span></span>
<span id="cb2-17"><a href="#cb2-17" aria-hidden="true"></a><span class="ex">curl</span> -H <span class="st">&quot;Authorization: Bearer ACCESS_TOKEN&quot;</span> <span class="kw">\</span></span>
<span id="cb2-18"><a href="#cb2-18" aria-hidden="true"></a>  <span class="ex">https</span>://yoursite.com/wp-json/bkpc/v1/backup/list</span></code></pre>
</div>
<h2 id="backup-endpoints">Backup Endpoints</h2>
<h3 id="create-new-backup">Create New Backup</h3>
<pre class="http"><code>POST /wp-json/bkpc/v1/backup/create</code></pre>
<p><strong>Request Body</strong>:</p>
<div class="sourceCode" id="cb4">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb4-2"><a href="#cb4-2" aria-hidden="true"></a>  <span class="dt">&quot;type&quot;</span><span class="fu">:</span> <span class="st">&quot;full&quot;</span><span class="fu">,</span></span>
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true"></a>  <span class="dt">&quot;cloud_upload&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true"></a>  <span class="dt">&quot;provider&quot;</span><span class="fu">:</span> <span class="st">&quot;dropbox&quot;</span><span class="fu">,</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true"></a>  <span class="dt">&quot;send_notification&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true"></a>  <span class="dt">&quot;metadata&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true"></a>    <span class="dt">&quot;triggered_by&quot;</span><span class="fu">:</span> <span class="st">&quot;CI/CD Pipeline&quot;</span><span class="fu">,</span></span>
<span id="cb4-8"><a href="#cb4-8" aria-hidden="true"></a>    <span class="dt">&quot;build_number&quot;</span><span class="fu">:</span> <span class="st">&quot;245&quot;</span></span>
<span id="cb4-9"><a href="#cb4-9" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb4-10"><a href="#cb4-10" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<p><strong>Parameters</strong>: &#8211; <code>type</code> (string): “full”, “database”, or “files”. Default: “full” &#8211; <code>cloud_upload</code> (boolean): Upload to cloud after creation. Default: false &#8211; <code>provider</code> (string): Cloud provider ID if uploading. Default: default provider &#8211; <code>send_notification</code> (boolean): Email notification on completion. Default: true &#8211; <code>metadata</code> (object): Custom metadata attached to backup</p>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb5">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true"></a>    <span class="dt">&quot;uuid&quot;</span><span class="fu">:</span> <span class="st">&quot;bkpc_20250124_093045_a8f3d2&quot;</span><span class="fu">,</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true"></a>    <span class="dt">&quot;status&quot;</span><span class="fu">:</span> <span class="st">&quot;in_progress&quot;</span><span class="fu">,</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true"></a>    <span class="dt">&quot;type&quot;</span><span class="fu">:</span> <span class="st">&quot;full&quot;</span><span class="fu">,</span></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true"></a>    <span class="dt">&quot;created_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T09:30:45Z&quot;</span><span class="fu">,</span></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true"></a>    <span class="dt">&quot;estimated_size&quot;</span><span class="fu">:</span> <span class="dv">1247652864</span><span class="fu">,</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true"></a>    <span class="dt">&quot;progress_url&quot;</span><span class="fu">:</span> <span class="st">&quot;/wp-json/bkpc/v1/backup/bkpc_20250124_093045_a8f3d2/status&quot;</span></span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<p><strong>cURL Example</strong>:</p>
<div class="sourceCode" id="cb6">
<pre class="sourceCode bash"><code class="sourceCode bash"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true"></a><span class="ex">curl</span> -X POST https://yoursite.com/wp-json/bkpc/v1/backup/create <span class="kw">\</span></span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true"></a>  <span class="ex">-u</span> username:app_password <span class="kw">\</span></span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true"></a>  <span class="ex">-H</span> <span class="st">&quot;Content-Type: application/json&quot;</span> <span class="kw">\</span></span>
<span id="cb6-4"><a href="#cb6-4" aria-hidden="true"></a>  <span class="ex">-d</span> <span class="st">&#39;{&quot;type&quot;:&quot;full&quot;,&quot;cloud_upload&quot;:true}&#39;</span></span></code></pre>
</div>
<h3 id="list-all-backups">List All Backups</h3>
<pre class="http"><code>GET /wp-json/bkpc/v1/backup/list</code></pre>
<p><strong>Query Parameters</strong>: &#8211; <code>page</code> (int): Page number for pagination. Default: 1 &#8211; <code>per_page</code> (int): Results per page (max 100). Default: 20 &#8211; <code>type</code> (string): Filter by backup type (“full”, “database”, “files”) &#8211; <code>status</code> (string): Filter by status (“completed”, “failed”, “in_progress”) &#8211; <code>order</code> (string): Sort order (“asc”, “desc”). Default: “desc” &#8211; <code>orderby</code> (string): Sort field (“created_at”, “size”). Default: “created_at”</p>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb8">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb8-4"><a href="#cb8-4" aria-hidden="true"></a>    <span class="dt">&quot;backups&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
<span id="cb8-5"><a href="#cb8-5" aria-hidden="true"></a>      <span class="fu">{</span></span>
<span id="cb8-6"><a href="#cb8-6" aria-hidden="true"></a>        <span class="dt">&quot;uuid&quot;</span><span class="fu">:</span> <span class="st">&quot;bkpc_20250124_093045_a8f3d2&quot;</span><span class="fu">,</span></span>
<span id="cb8-7"><a href="#cb8-7" aria-hidden="true"></a>        <span class="dt">&quot;type&quot;</span><span class="fu">:</span> <span class="st">&quot;full&quot;</span><span class="fu">,</span></span>
<span id="cb8-8"><a href="#cb8-8" aria-hidden="true"></a>        <span class="dt">&quot;status&quot;</span><span class="fu">:</span> <span class="st">&quot;completed&quot;</span><span class="fu">,</span></span>
<span id="cb8-9"><a href="#cb8-9" aria-hidden="true"></a>        <span class="dt">&quot;created_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T09:30:45Z&quot;</span><span class="fu">,</span></span>
<span id="cb8-10"><a href="#cb8-10" aria-hidden="true"></a>        <span class="dt">&quot;completed_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T09:35:12Z&quot;</span><span class="fu">,</span></span>
<span id="cb8-11"><a href="#cb8-11" aria-hidden="true"></a>        <span class="dt">&quot;size&quot;</span><span class="fu">:</span> <span class="dv">1247652864</span><span class="fu">,</span></span>
<span id="cb8-12"><a href="#cb8-12" aria-hidden="true"></a>        <span class="dt">&quot;cloud_provider&quot;</span><span class="fu">:</span> <span class="st">&quot;dropbox&quot;</span><span class="fu">,</span></span>
<span id="cb8-13"><a href="#cb8-13" aria-hidden="true"></a>        <span class="dt">&quot;cloud_uploaded&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true"></a>        <span class="dt">&quot;download_url&quot;</span><span class="fu">:</span> <span class="st">&quot;/wp-json/bkpc/v1/backup/bkpc_20250124_093045_a8f3d2/download&quot;</span></span>
<span id="cb8-15"><a href="#cb8-15" aria-hidden="true"></a>      <span class="fu">}</span></span>
<span id="cb8-16"><a href="#cb8-16" aria-hidden="true"></a>    <span class="ot">]</span><span class="fu">,</span></span>
<span id="cb8-17"><a href="#cb8-17" aria-hidden="true"></a>    <span class="dt">&quot;pagination&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb8-18"><a href="#cb8-18" aria-hidden="true"></a>      <span class="dt">&quot;current_page&quot;</span><span class="fu">:</span> <span class="dv">1</span><span class="fu">,</span></span>
<span id="cb8-19"><a href="#cb8-19" aria-hidden="true"></a>      <span class="dt">&quot;per_page&quot;</span><span class="fu">:</span> <span class="dv">20</span><span class="fu">,</span></span>
<span id="cb8-20"><a href="#cb8-20" aria-hidden="true"></a>      <span class="dt">&quot;total_items&quot;</span><span class="fu">:</span> <span class="dv">87</span><span class="fu">,</span></span>
<span id="cb8-21"><a href="#cb8-21" aria-hidden="true"></a>      <span class="dt">&quot;total_pages&quot;</span><span class="fu">:</span> <span class="dv">5</span></span>
<span id="cb8-22"><a href="#cb8-22" aria-hidden="true"></a>    <span class="fu">}</span></span>
<span id="cb8-23"><a href="#cb8-23" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb8-24"><a href="#cb8-24" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h3 id="get-backup-details">Get Backup Details</h3>
<pre class="http"><code>GET /wp-json/bkpc/v1/backup/{uuid}</code></pre>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb10">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb10-4"><a href="#cb10-4" aria-hidden="true"></a>    <span class="dt">&quot;uuid&quot;</span><span class="fu">:</span> <span class="st">&quot;bkpc_20250124_093045_a8f3d2&quot;</span><span class="fu">,</span></span>
<span id="cb10-5"><a href="#cb10-5" aria-hidden="true"></a>    <span class="dt">&quot;type&quot;</span><span class="fu">:</span> <span class="st">&quot;full&quot;</span><span class="fu">,</span></span>
<span id="cb10-6"><a href="#cb10-6" aria-hidden="true"></a>    <span class="dt">&quot;status&quot;</span><span class="fu">:</span> <span class="st">&quot;completed&quot;</span><span class="fu">,</span></span>
<span id="cb10-7"><a href="#cb10-7" aria-hidden="true"></a>    <span class="dt">&quot;created_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T09:30:45Z&quot;</span><span class="fu">,</span></span>
<span id="cb10-8"><a href="#cb10-8" aria-hidden="true"></a>    <span class="dt">&quot;completed_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T09:35:12Z&quot;</span><span class="fu">,</span></span>
<span id="cb10-9"><a href="#cb10-9" aria-hidden="true"></a>    <span class="dt">&quot;size&quot;</span><span class="fu">:</span> <span class="dv">1247652864</span><span class="fu">,</span></span>
<span id="cb10-10"><a href="#cb10-10" aria-hidden="true"></a>    <span class="dt">&quot;cloud_provider&quot;</span><span class="fu">:</span> <span class="st">&quot;dropbox&quot;</span><span class="fu">,</span></span>
<span id="cb10-11"><a href="#cb10-11" aria-hidden="true"></a>    <span class="dt">&quot;cloud_uploaded&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb10-12"><a href="#cb10-12" aria-hidden="true"></a>    <span class="dt">&quot;cloud_path&quot;</span><span class="fu">:</span> <span class="st">&quot;/backups/bkpc_20250124_093045_a8f3d2.zip&quot;</span><span class="fu">,</span></span>
<span id="cb10-13"><a href="#cb10-13" aria-hidden="true"></a>    <span class="dt">&quot;metadata&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb10-14"><a href="#cb10-14" aria-hidden="true"></a>      <span class="dt">&quot;wordpress_version&quot;</span><span class="fu">:</span> <span class="st">&quot;6.4.2&quot;</span><span class="fu">,</span></span>
<span id="cb10-15"><a href="#cb10-15" aria-hidden="true"></a>      <span class="dt">&quot;php_version&quot;</span><span class="fu">:</span> <span class="st">&quot;8.2.0&quot;</span><span class="fu">,</span></span>
<span id="cb10-16"><a href="#cb10-16" aria-hidden="true"></a>      <span class="dt">&quot;mysql_version&quot;</span><span class="fu">:</span> <span class="st">&quot;8.0.35&quot;</span><span class="fu">,</span></span>
<span id="cb10-17"><a href="#cb10-17" aria-hidden="true"></a>      <span class="dt">&quot;table_count&quot;</span><span class="fu">:</span> <span class="dv">47</span><span class="fu">,</span></span>
<span id="cb10-18"><a href="#cb10-18" aria-hidden="true"></a>      <span class="dt">&quot;file_count&quot;</span><span class="fu">:</span> <span class="dv">12847</span><span class="fu">,</span></span>
<span id="cb10-19"><a href="#cb10-19" aria-hidden="true"></a>      <span class="dt">&quot;triggered_by&quot;</span><span class="fu">:</span> <span class="st">&quot;CI/CD Pipeline&quot;</span></span>
<span id="cb10-20"><a href="#cb10-20" aria-hidden="true"></a>    <span class="fu">},</span></span>
<span id="cb10-21"><a href="#cb10-21" aria-hidden="true"></a>    <span class="dt">&quot;includes&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb10-22"><a href="#cb10-22" aria-hidden="true"></a>      <span class="dt">&quot;database&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb10-23"><a href="#cb10-23" aria-hidden="true"></a>      <span class="dt">&quot;plugins&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb10-24"><a href="#cb10-24" aria-hidden="true"></a>      <span class="dt">&quot;themes&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb10-25"><a href="#cb10-25" aria-hidden="true"></a>      <span class="dt">&quot;uploads&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb10-26"><a href="#cb10-26" aria-hidden="true"></a>      <span class="dt">&quot;wordpress_core&quot;</span><span class="fu">:</span> <span class="kw">false</span></span>
<span id="cb10-27"><a href="#cb10-27" aria-hidden="true"></a>    <span class="fu">}</span></span>
<span id="cb10-28"><a href="#cb10-28" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb10-29"><a href="#cb10-29" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h3 id="download-backup">Download Backup</h3>
<pre class="http"><code>POST /wp-json/bkpc/v1/backup/{uuid}/download</code></pre>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb12">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb12-1"><a href="#cb12-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb12-2"><a href="#cb12-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb12-3"><a href="#cb12-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb12-4"><a href="#cb12-4" aria-hidden="true"></a>    <span class="dt">&quot;download_url&quot;</span><span class="fu">:</span> <span class="st">&quot;https://yoursite.com/wp-content/backup-copilot-pro/downloads/bkpc_20250124_093045_a8f3d2.zip?token=abc123&quot;</span><span class="fu">,</span></span>
<span id="cb12-5"><a href="#cb12-5" aria-hidden="true"></a>    <span class="dt">&quot;expires_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T10:30:45Z&quot;</span><span class="fu">,</span></span>
<span id="cb12-6"><a href="#cb12-6" aria-hidden="true"></a>    <span class="dt">&quot;size&quot;</span><span class="fu">:</span> <span class="dv">1247652864</span></span>
<span id="cb12-7"><a href="#cb12-7" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb12-8"><a href="#cb12-8" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<p>Download URL expires after 1 hour for security.</p>
<h3 id="delete-backup">Delete Backup</h3>
<pre class="http"><code>DELETE /wp-json/bkpc/v1/backup/{uuid}</code></pre>
<p><strong>Query Parameters</strong>: &#8211; <code>delete_cloud</code> (boolean): Also delete from cloud storage. Default: false</p>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb14">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb14-1"><a href="#cb14-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb14-2"><a href="#cb14-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb14-3"><a href="#cb14-3" aria-hidden="true"></a>  <span class="dt">&quot;message&quot;</span><span class="fu">:</span> <span class="st">&quot;Backup deleted successfully&quot;</span></span>
<span id="cb14-4"><a href="#cb14-4" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h3 id="restore-from-backup">Restore from Backup</h3>
<pre class="http"><code>POST /wp-json/bkpc/v1/backup/{uuid}/restore</code></pre>
<p><strong>Request Body</strong>:</p>
<div class="sourceCode" id="cb16">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb16-1"><a href="#cb16-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb16-2"><a href="#cb16-2" aria-hidden="true"></a>  <span class="dt">&quot;restore_database&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb16-3"><a href="#cb16-3" aria-hidden="true"></a>  <span class="dt">&quot;restore_files&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb16-4"><a href="#cb16-4" aria-hidden="true"></a>  <span class="dt">&quot;restore_plugins&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb16-5"><a href="#cb16-5" aria-hidden="true"></a>  <span class="dt">&quot;restore_themes&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb16-6"><a href="#cb16-6" aria-hidden="true"></a>  <span class="dt">&quot;restore_uploads&quot;</span><span class="fu">:</span> <span class="kw">true</span></span>
<span id="cb16-7"><a href="#cb16-7" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb17">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb17-1"><a href="#cb17-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb17-2"><a href="#cb17-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb17-3"><a href="#cb17-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb17-4"><a href="#cb17-4" aria-hidden="true"></a>    <span class="dt">&quot;restore_id&quot;</span><span class="fu">:</span> <span class="st">&quot;restore_20250124_103045&quot;</span><span class="fu">,</span></span>
<span id="cb17-5"><a href="#cb17-5" aria-hidden="true"></a>    <span class="dt">&quot;status&quot;</span><span class="fu">:</span> <span class="st">&quot;in_progress&quot;</span><span class="fu">,</span></span>
<span id="cb17-6"><a href="#cb17-6" aria-hidden="true"></a>    <span class="dt">&quot;started_at&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T10:30:45Z&quot;</span><span class="fu">,</span></span>
<span id="cb17-7"><a href="#cb17-7" aria-hidden="true"></a>    <span class="dt">&quot;progress_url&quot;</span><span class="fu">:</span> <span class="st">&quot;/wp-json/bkpc/v1/restore/restore_20250124_103045/status&quot;</span></span>
<span id="cb17-8"><a href="#cb17-8" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb17-9"><a href="#cb17-9" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h3 id="monitor-backup-status">Monitor Backup Status</h3>
<pre class="http"><code>GET /wp-json/bkpc/v1/backup/{uuid}/status</code></pre>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb19">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb19-1"><a href="#cb19-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb19-2"><a href="#cb19-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb19-3"><a href="#cb19-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb19-4"><a href="#cb19-4" aria-hidden="true"></a>    <span class="dt">&quot;status&quot;</span><span class="fu">:</span> <span class="st">&quot;in_progress&quot;</span><span class="fu">,</span></span>
<span id="cb19-5"><a href="#cb19-5" aria-hidden="true"></a>    <span class="dt">&quot;progress&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb19-6"><a href="#cb19-6" aria-hidden="true"></a>      <span class="dt">&quot;percentage&quot;</span><span class="fu">:</span> <span class="dv">67</span><span class="fu">,</span></span>
<span id="cb19-7"><a href="#cb19-7" aria-hidden="true"></a>      <span class="dt">&quot;current_step&quot;</span><span class="fu">:</span> <span class="st">&quot;Uploading to cloud&quot;</span><span class="fu">,</span></span>
<span id="cb19-8"><a href="#cb19-8" aria-hidden="true"></a>      <span class="dt">&quot;steps_completed&quot;</span><span class="fu">:</span> <span class="dv">4</span><span class="fu">,</span></span>
<span id="cb19-9"><a href="#cb19-9" aria-hidden="true"></a>      <span class="dt">&quot;steps_total&quot;</span><span class="fu">:</span> <span class="dv">6</span><span class="fu">,</span></span>
<span id="cb19-10"><a href="#cb19-10" aria-hidden="true"></a>      <span class="dt">&quot;files_processed&quot;</span><span class="fu">:</span> <span class="dv">8472</span><span class="fu">,</span></span>
<span id="cb19-11"><a href="#cb19-11" aria-hidden="true"></a>      <span class="dt">&quot;files_total&quot;</span><span class="fu">:</span> <span class="dv">12847</span><span class="fu">,</span></span>
<span id="cb19-12"><a href="#cb19-12" aria-hidden="true"></a>      <span class="dt">&quot;bytes_processed&quot;</span><span class="fu">:</span> <span class="dv">835891230</span><span class="fu">,</span></span>
<span id="cb19-13"><a href="#cb19-13" aria-hidden="true"></a>      <span class="dt">&quot;bytes_total&quot;</span><span class="fu">:</span> <span class="dv">1247652864</span></span>
<span id="cb19-14"><a href="#cb19-14" aria-hidden="true"></a>    <span class="fu">},</span></span>
<span id="cb19-15"><a href="#cb19-15" aria-hidden="true"></a>    <span class="dt">&quot;estimated_time_remaining&quot;</span><span class="fu">:</span> <span class="dv">135</span></span>
<span id="cb19-16"><a href="#cb19-16" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb19-17"><a href="#cb19-17" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h2 id="schedule-endpoints">Schedule Endpoints</h2>
<h3 id="list-schedules">List Schedules</h3>
<pre class="http"><code>GET /wp-json/bkpc/v1/schedule/list</code></pre>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb21">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb21-1"><a href="#cb21-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb21-2"><a href="#cb21-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb21-3"><a href="#cb21-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb21-4"><a href="#cb21-4" aria-hidden="true"></a>    <span class="dt">&quot;schedules&quot;</span><span class="fu">:</span> <span class="ot">[</span></span>
<span id="cb21-5"><a href="#cb21-5" aria-hidden="true"></a>      <span class="fu">{</span></span>
<span id="cb21-6"><a href="#cb21-6" aria-hidden="true"></a>        <span class="dt">&quot;id&quot;</span><span class="fu">:</span> <span class="dv">42</span><span class="fu">,</span></span>
<span id="cb21-7"><a href="#cb21-7" aria-hidden="true"></a>        <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;Daily Full Backup&quot;</span><span class="fu">,</span></span>
<span id="cb21-8"><a href="#cb21-8" aria-hidden="true"></a>        <span class="dt">&quot;enabled&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb21-9"><a href="#cb21-9" aria-hidden="true"></a>        <span class="dt">&quot;frequency&quot;</span><span class="fu">:</span> <span class="st">&quot;daily&quot;</span><span class="fu">,</span></span>
<span id="cb21-10"><a href="#cb21-10" aria-hidden="true"></a>        <span class="dt">&quot;time&quot;</span><span class="fu">:</span> <span class="st">&quot;02:00:00&quot;</span><span class="fu">,</span></span>
<span id="cb21-11"><a href="#cb21-11" aria-hidden="true"></a>        <span class="dt">&quot;backup_type&quot;</span><span class="fu">:</span> <span class="st">&quot;full&quot;</span><span class="fu">,</span></span>
<span id="cb21-12"><a href="#cb21-12" aria-hidden="true"></a>        <span class="dt">&quot;cloud_upload&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb21-13"><a href="#cb21-13" aria-hidden="true"></a>        <span class="dt">&quot;cloud_provider&quot;</span><span class="fu">:</span> <span class="st">&quot;dropbox&quot;</span><span class="fu">,</span></span>
<span id="cb21-14"><a href="#cb21-14" aria-hidden="true"></a>        <span class="dt">&quot;retention_days&quot;</span><span class="fu">:</span> <span class="dv">30</span><span class="fu">,</span></span>
<span id="cb21-15"><a href="#cb21-15" aria-hidden="true"></a>        <span class="dt">&quot;next_run&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-25T02:00:00Z&quot;</span><span class="fu">,</span></span>
<span id="cb21-16"><a href="#cb21-16" aria-hidden="true"></a>        <span class="dt">&quot;last_run&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T02:00:00Z&quot;</span><span class="fu">,</span></span>
<span id="cb21-17"><a href="#cb21-17" aria-hidden="true"></a>        <span class="dt">&quot;last_run_status&quot;</span><span class="fu">:</span> <span class="st">&quot;completed&quot;</span></span>
<span id="cb21-18"><a href="#cb21-18" aria-hidden="true"></a>      <span class="fu">}</span></span>
<span id="cb21-19"><a href="#cb21-19" aria-hidden="true"></a>    <span class="ot">]</span></span>
<span id="cb21-20"><a href="#cb21-20" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb21-21"><a href="#cb21-21" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h3 id="create-schedule">Create Schedule</h3>
<pre class="http"><code>POST /wp-json/bkpc/v1/schedule/create</code></pre>
<p><strong>Request Body</strong>:</p>
<div class="sourceCode" id="cb23">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb23-1"><a href="#cb23-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb23-2"><a href="#cb23-2" aria-hidden="true"></a>  <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;Hourly Database Backup&quot;</span><span class="fu">,</span></span>
<span id="cb23-3"><a href="#cb23-3" aria-hidden="true"></a>  <span class="dt">&quot;enabled&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb23-4"><a href="#cb23-4" aria-hidden="true"></a>  <span class="dt">&quot;frequency&quot;</span><span class="fu">:</span> <span class="st">&quot;hourly&quot;</span><span class="fu">,</span></span>
<span id="cb23-5"><a href="#cb23-5" aria-hidden="true"></a>  <span class="dt">&quot;backup_type&quot;</span><span class="fu">:</span> <span class="st">&quot;database&quot;</span><span class="fu">,</span></span>
<span id="cb23-6"><a href="#cb23-6" aria-hidden="true"></a>  <span class="dt">&quot;cloud_upload&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb23-7"><a href="#cb23-7" aria-hidden="true"></a>  <span class="dt">&quot;cloud_provider&quot;</span><span class="fu">:</span> <span class="st">&quot;google_drive&quot;</span><span class="fu">,</span></span>
<span id="cb23-8"><a href="#cb23-8" aria-hidden="true"></a>  <span class="dt">&quot;retention_days&quot;</span><span class="fu">:</span> <span class="dv">7</span><span class="fu">,</span></span>
<span id="cb23-9"><a href="#cb23-9" aria-hidden="true"></a>  <span class="dt">&quot;send_notification&quot;</span><span class="fu">:</span> <span class="kw">false</span></span>
<span id="cb23-10"><a href="#cb23-10" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<p><strong>Response</strong>:</p>
<div class="sourceCode" id="cb24">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb24-1"><a href="#cb24-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb24-2"><a href="#cb24-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb24-3"><a href="#cb24-3" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb24-4"><a href="#cb24-4" aria-hidden="true"></a>    <span class="dt">&quot;id&quot;</span><span class="fu">:</span> <span class="dv">43</span><span class="fu">,</span></span>
<span id="cb24-5"><a href="#cb24-5" aria-hidden="true"></a>    <span class="dt">&quot;name&quot;</span><span class="fu">:</span> <span class="st">&quot;Hourly Database Backup&quot;</span><span class="fu">,</span></span>
<span id="cb24-6"><a href="#cb24-6" aria-hidden="true"></a>    <span class="dt">&quot;next_run&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T11:00:00Z&quot;</span></span>
<span id="cb24-7"><a href="#cb24-7" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb24-8"><a href="#cb24-8" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h2 id="webhook-configuration">Webhook Configuration</h2>
<p>Configure webhooks to receive notifications:</p>
<pre class="http"><code>POST /wp-json/bkpc/v1/webhooks/create</code></pre>
<p><strong>Request Body</strong>:</p>
<div class="sourceCode" id="cb26">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb26-1"><a href="#cb26-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb26-2"><a href="#cb26-2" aria-hidden="true"></a>  <span class="dt">&quot;url&quot;</span><span class="fu">:</span> <span class="st">&quot;https://monitoring.example.com/webhook/backup-events&quot;</span><span class="fu">,</span></span>
<span id="cb26-3"><a href="#cb26-3" aria-hidden="true"></a>  <span class="dt">&quot;events&quot;</span><span class="fu">:</span> <span class="ot">[</span><span class="st">&quot;backup.completed&quot;</span><span class="ot">,</span> <span class="st">&quot;backup.failed&quot;</span><span class="ot">,</span> <span class="st">&quot;restore.completed&quot;</span><span class="ot">]</span><span class="fu">,</span></span>
<span id="cb26-4"><a href="#cb26-4" aria-hidden="true"></a>  <span class="dt">&quot;secret&quot;</span><span class="fu">:</span> <span class="st">&quot;your_webhook_secret_for_signature_validation&quot;</span></span>
<span id="cb26-5"><a href="#cb26-5" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<p><strong>Webhook Payload Example</strong>:</p>
<div class="sourceCode" id="cb27">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb27-1"><a href="#cb27-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb27-2"><a href="#cb27-2" aria-hidden="true"></a>  <span class="dt">&quot;event&quot;</span><span class="fu">:</span> <span class="st">&quot;backup.completed&quot;</span><span class="fu">,</span></span>
<span id="cb27-3"><a href="#cb27-3" aria-hidden="true"></a>  <span class="dt">&quot;timestamp&quot;</span><span class="fu">:</span> <span class="st">&quot;2025-01-24T09:35:12Z&quot;</span><span class="fu">,</span></span>
<span id="cb27-4"><a href="#cb27-4" aria-hidden="true"></a>  <span class="dt">&quot;site_url&quot;</span><span class="fu">:</span> <span class="st">&quot;https://yoursite.com&quot;</span><span class="fu">,</span></span>
<span id="cb27-5"><a href="#cb27-5" aria-hidden="true"></a>  <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb27-6"><a href="#cb27-6" aria-hidden="true"></a>    <span class="dt">&quot;uuid&quot;</span><span class="fu">:</span> <span class="st">&quot;bkpc_20250124_093045_a8f3d2&quot;</span><span class="fu">,</span></span>
<span id="cb27-7"><a href="#cb27-7" aria-hidden="true"></a>    <span class="dt">&quot;type&quot;</span><span class="fu">:</span> <span class="st">&quot;full&quot;</span><span class="fu">,</span></span>
<span id="cb27-8"><a href="#cb27-8" aria-hidden="true"></a>    <span class="dt">&quot;size&quot;</span><span class="fu">:</span> <span class="dv">1247652864</span><span class="fu">,</span></span>
<span id="cb27-9"><a href="#cb27-9" aria-hidden="true"></a>    <span class="dt">&quot;duration_seconds&quot;</span><span class="fu">:</span> <span class="dv">267</span><span class="fu">,</span></span>
<span id="cb27-10"><a href="#cb27-10" aria-hidden="true"></a>    <span class="dt">&quot;cloud_uploaded&quot;</span><span class="fu">:</span> <span class="kw">true</span><span class="fu">,</span></span>
<span id="cb27-11"><a href="#cb27-11" aria-hidden="true"></a>    <span class="dt">&quot;cloud_provider&quot;</span><span class="fu">:</span> <span class="st">&quot;dropbox&quot;</span></span>
<span id="cb27-12"><a href="#cb27-12" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb27-13"><a href="#cb27-13" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h2 id="integration-examples">Integration Examples</h2>
<h3 id="cicd-pipeline-integration">CI/CD Pipeline Integration</h3>
<p>Trigger backup before deployment:</p>
<div class="sourceCode" id="cb28">
<pre class="sourceCode yaml"><code class="sourceCode yaml"><span id="cb28-1"><a href="#cb28-1" aria-hidden="true"></a><span class="co"># GitHub Actions example</span></span>
<span id="cb28-2"><a href="#cb28-2" aria-hidden="true"></a><span class="kw">-</span><span class="at"> </span><span class="fu">name</span><span class="kw">:</span><span class="at"> Create Pre-Deployment Backup</span></span>
<span id="cb28-3"><a href="#cb28-3" aria-hidden="true"></a><span class="fu">  run</span><span class="kw">: </span><span class="ch">|</span></span>
<span id="cb28-4"><a href="#cb28-4" aria-hidden="true"></a>    RESPONSE=$(curl -s -X POST https://yoursite.com/wp-json/bkpc/v1/backup/create \</span>
<span id="cb28-5"><a href="#cb28-5" aria-hidden="true"></a>      -u ${{ secrets.WP_USERNAME }}:${{ secrets.WP_APP_PASSWORD }} \</span>
<span id="cb28-6"><a href="#cb28-6" aria-hidden="true"></a>      -H &quot;Content-Type: application/json&quot; \</span>
<span id="cb28-7"><a href="#cb28-7" aria-hidden="true"></a>      -d &#39;{&quot;type&quot;:&quot;full&quot;,&quot;cloud_upload&quot;:true,&quot;metadata&quot;:{&quot;build&quot;:&quot;${{ github.run_number }}&quot;}}&#39;&#39;)</span>
<span id="cb28-8"><a href="#cb28-8" aria-hidden="true"></a></span>
<span id="cb28-9"><a href="#cb28-9" aria-hidden="true"></a>    BACKUP_UUID=$(echo $RESPONSE | jq -r &#39;.data.uuid&#39;)</span>
<span id="cb28-10"><a href="#cb28-10" aria-hidden="true"></a></span>
<span id="cb28-11"><a href="#cb28-11" aria-hidden="true"></a>    # Wait for backup completion</span>
<span id="cb28-12"><a href="#cb28-12" aria-hidden="true"></a>    while true; do</span>
<span id="cb28-13"><a href="#cb28-13" aria-hidden="true"></a>      STATUS=$(curl -s https://yoursite.com/wp-json/bkpc/v1/backup/$BACKUP_UUID/status \</span>
<span id="cb28-14"><a href="#cb28-14" aria-hidden="true"></a>        -u ${{ secrets.WP_USERNAME }}:${{ secrets.WP_APP_PASSWORD }} | jq -r &#39;.data.status&#39;)</span>
<span id="cb28-15"><a href="#cb28-15" aria-hidden="true"></a></span>
<span id="cb28-16"><a href="#cb28-16" aria-hidden="true"></a>      if [ &quot;$STATUS&quot; = &quot;completed&quot; ]; then</span>
<span id="cb28-17"><a href="#cb28-17" aria-hidden="true"></a>        echo &quot;Backup completed successfully&quot;</span>
<span id="cb28-18"><a href="#cb28-18" aria-hidden="true"></a>        break</span>
<span id="cb28-19"><a href="#cb28-19" aria-hidden="true"></a>      elif [ &quot;$STATUS&quot; = &quot;failed&quot; ]; then</span>
<span id="cb28-20"><a href="#cb28-20" aria-hidden="true"></a>        echo &quot;Backup failed&quot;</span>
<span id="cb28-21"><a href="#cb28-21" aria-hidden="true"></a>        exit 1</span>
<span id="cb28-22"><a href="#cb28-22" aria-hidden="true"></a>      fi</span>
<span id="cb28-23"><a href="#cb28-23" aria-hidden="true"></a></span>
<span id="cb28-24"><a href="#cb28-24" aria-hidden="true"></a>      sleep 10</span>
<span id="cb28-25"><a href="#cb28-25" aria-hidden="true"></a>    done</span></code></pre>
</div>
<h3 id="python-monitoring-script">Python Monitoring Script</h3>
<div class="sourceCode" id="cb29">
<pre class="sourceCode python"><code class="sourceCode python"><span id="cb29-1"><a href="#cb29-1" aria-hidden="true"></a><span class="im">import</span> requests</span>
<span id="cb29-2"><a href="#cb29-2" aria-hidden="true"></a><span class="im">from</span> requests.auth <span class="im">import</span> HTTPBasicAuth</span>
<span id="cb29-3"><a href="#cb29-3" aria-hidden="true"></a></span>
<span id="cb29-4"><a href="#cb29-4" aria-hidden="true"></a><span class="kw">class</span> BackupMonitor:</span>
<span id="cb29-5"><a href="#cb29-5" aria-hidden="true"></a>    <span class="kw">def</span> <span class="fu">__init__</span>(<span class="va">self</span>, site_url, username, app_password):</span>
<span id="cb29-6"><a href="#cb29-6" aria-hidden="true"></a>        <span class="va">self</span>.site_url <span class="op">=</span> site_url</span>
<span id="cb29-7"><a href="#cb29-7" aria-hidden="true"></a>        <span class="va">self</span>.auth <span class="op">=</span> HTTPBasicAuth(username, app_password)</span>
<span id="cb29-8"><a href="#cb29-8" aria-hidden="true"></a>        <span class="va">self</span>.api_base <span class="op">=</span> <span class="ss">f&quot;</span><span class="sc">{</span>site_url<span class="sc">}</span><span class="ss">/wp-json/bkpc/v1&quot;</span></span>
<span id="cb29-9"><a href="#cb29-9" aria-hidden="true"></a></span>
<span id="cb29-10"><a href="#cb29-10" aria-hidden="true"></a>    <span class="kw">def</span> list_backups(<span class="va">self</span>, status<span class="op">=</span><span class="va">None</span>):</span>
<span id="cb29-11"><a href="#cb29-11" aria-hidden="true"></a>        url <span class="op">=</span> <span class="ss">f&quot;</span><span class="sc">{</span><span class="va">self</span><span class="sc">.</span>api_base<span class="sc">}</span><span class="ss">/backup/list&quot;</span></span>
<span id="cb29-12"><a href="#cb29-12" aria-hidden="true"></a>        params <span class="op">=</span> {<span class="st">&#39;status&#39;</span>: status} <span class="cf">if</span> status <span class="cf">else</span> {}</span>
<span id="cb29-13"><a href="#cb29-13" aria-hidden="true"></a></span>
<span id="cb29-14"><a href="#cb29-14" aria-hidden="true"></a>        response <span class="op">=</span> requests.get(url, auth<span class="op">=</span><span class="va">self</span>.auth, params<span class="op">=</span>params)</span>
<span id="cb29-15"><a href="#cb29-15" aria-hidden="true"></a>        response.raise_for_status()</span>
<span id="cb29-16"><a href="#cb29-16" aria-hidden="true"></a>        <span class="cf">return</span> response.json()[<span class="st">&#39;data&#39;</span>][<span class="st">&#39;backups&#39;</span>]</span>
<span id="cb29-17"><a href="#cb29-17" aria-hidden="true"></a></span>
<span id="cb29-18"><a href="#cb29-18" aria-hidden="true"></a>    <span class="kw">def</span> create_backup(<span class="va">self</span>, backup_type<span class="op">=</span><span class="st">&#39;full&#39;</span>, cloud_upload<span class="op">=</span><span class="va">True</span>):</span>
<span id="cb29-19"><a href="#cb29-19" aria-hidden="true"></a>        url <span class="op">=</span> <span class="ss">f&quot;</span><span class="sc">{</span><span class="va">self</span><span class="sc">.</span>api_base<span class="sc">}</span><span class="ss">/backup/create&quot;</span></span>
<span id="cb29-20"><a href="#cb29-20" aria-hidden="true"></a>        data <span class="op">=</span> {</span>
<span id="cb29-21"><a href="#cb29-21" aria-hidden="true"></a>            <span class="st">&#39;type&#39;</span>: backup_type,</span>
<span id="cb29-22"><a href="#cb29-22" aria-hidden="true"></a>            <span class="st">&#39;cloud_upload&#39;</span>: cloud_upload</span>
<span id="cb29-23"><a href="#cb29-23" aria-hidden="true"></a>        }</span>
<span id="cb29-24"><a href="#cb29-24" aria-hidden="true"></a></span>
<span id="cb29-25"><a href="#cb29-25" aria-hidden="true"></a>        response <span class="op">=</span> requests.post(url, auth<span class="op">=</span><span class="va">self</span>.auth, json<span class="op">=</span>data)</span>
<span id="cb29-26"><a href="#cb29-26" aria-hidden="true"></a>        response.raise_for_status()</span>
<span id="cb29-27"><a href="#cb29-27" aria-hidden="true"></a>        <span class="cf">return</span> response.json()[<span class="st">&#39;data&#39;</span>]</span>
<span id="cb29-28"><a href="#cb29-28" aria-hidden="true"></a></span>
<span id="cb29-29"><a href="#cb29-29" aria-hidden="true"></a>    <span class="kw">def</span> monitor_backup(<span class="va">self</span>, uuid):</span>
<span id="cb29-30"><a href="#cb29-30" aria-hidden="true"></a>        url <span class="op">=</span> <span class="ss">f&quot;</span><span class="sc">{</span><span class="va">self</span><span class="sc">.</span>api_base<span class="sc">}</span><span class="ss">/backup/</span><span class="sc">{</span>uuid<span class="sc">}</span><span class="ss">/status&quot;</span></span>
<span id="cb29-31"><a href="#cb29-31" aria-hidden="true"></a></span>
<span id="cb29-32"><a href="#cb29-32" aria-hidden="true"></a>        <span class="cf">while</span> <span class="va">True</span>:</span>
<span id="cb29-33"><a href="#cb29-33" aria-hidden="true"></a>            response <span class="op">=</span> requests.get(url, auth<span class="op">=</span><span class="va">self</span>.auth)</span>
<span id="cb29-34"><a href="#cb29-34" aria-hidden="true"></a>            data <span class="op">=</span> response.json()[<span class="st">&#39;data&#39;</span>]</span>
<span id="cb29-35"><a href="#cb29-35" aria-hidden="true"></a></span>
<span id="cb29-36"><a href="#cb29-36" aria-hidden="true"></a>            status <span class="op">=</span> data[<span class="st">&#39;status&#39;</span>]</span>
<span id="cb29-37"><a href="#cb29-37" aria-hidden="true"></a>            progress <span class="op">=</span> data.get(<span class="st">&#39;progress&#39;</span>, {}).get(<span class="st">&#39;percentage&#39;</span>, <span class="dv">0</span>)</span>
<span id="cb29-38"><a href="#cb29-38" aria-hidden="true"></a></span>
<span id="cb29-39"><a href="#cb29-39" aria-hidden="true"></a>            <span class="bu">print</span>(<span class="ss">f&quot;Status: </span><span class="sc">{</span>status<span class="sc">}</span><span class="ss"> - Progress: </span><span class="sc">{</span>progress<span class="sc">}</span><span class="ss">%&quot;</span>)</span>
<span id="cb29-40"><a href="#cb29-40" aria-hidden="true"></a></span>
<span id="cb29-41"><a href="#cb29-41" aria-hidden="true"></a>            <span class="cf">if</span> status <span class="kw">in</span> [<span class="st">&#39;completed&#39;</span>, <span class="st">&#39;failed&#39;</span>]:</span>
<span id="cb29-42"><a href="#cb29-42" aria-hidden="true"></a>                <span class="cf">return</span> status</span>
<span id="cb29-43"><a href="#cb29-43" aria-hidden="true"></a></span>
<span id="cb29-44"><a href="#cb29-44" aria-hidden="true"></a>            time.sleep(<span class="dv">10</span>)</span>
<span id="cb29-45"><a href="#cb29-45" aria-hidden="true"></a></span>
<span id="cb29-46"><a href="#cb29-46" aria-hidden="true"></a><span class="co"># Usage</span></span>
<span id="cb29-47"><a href="#cb29-47" aria-hidden="true"></a>monitor <span class="op">=</span> BackupMonitor(</span>
<span id="cb29-48"><a href="#cb29-48" aria-hidden="true"></a>    <span class="st">&#39;https://yoursite.com&#39;</span>,</span>
<span id="cb29-49"><a href="#cb29-49" aria-hidden="true"></a>    <span class="st">&#39;admin&#39;</span>,</span>
<span id="cb29-50"><a href="#cb29-50" aria-hidden="true"></a>    <span class="st">&#39;your-application-password&#39;</span></span>
<span id="cb29-51"><a href="#cb29-51" aria-hidden="true"></a>)</span>
<span id="cb29-52"><a href="#cb29-52" aria-hidden="true"></a></span>
<span id="cb29-53"><a href="#cb29-53" aria-hidden="true"></a>backup <span class="op">=</span> monitor.create_backup()</span>
<span id="cb29-54"><a href="#cb29-54" aria-hidden="true"></a>status <span class="op">=</span> monitor.monitor_backup(backup[<span class="st">&#39;uuid&#39;</span>])</span>
<span id="cb29-55"><a href="#cb29-55" aria-hidden="true"></a><span class="bu">print</span>(<span class="ss">f&quot;Final status: </span><span class="sc">{</span>status<span class="sc">}</span><span class="ss">&quot;</span>)</span></code></pre>
</div>
<h3 id="javascript-dashboard">JavaScript Dashboard</h3>
<div class="sourceCode" id="cb30">
<pre class="sourceCode javascript"><code class="sourceCode javascript"><span id="cb30-1"><a href="#cb30-1" aria-hidden="true"></a><span class="kw">class</span> BackupDashboard {</span>
<span id="cb30-2"><a href="#cb30-2" aria-hidden="true"></a>    <span class="fu">constructor</span>(siteUrl<span class="op">,</span> username<span class="op">,</span> appPassword) {</span>
<span id="cb30-3"><a href="#cb30-3" aria-hidden="true"></a>        <span class="kw">this</span><span class="op">.</span><span class="at">apiBase</span> <span class="op">=</span> <span class="vs">`</span><span class="sc">${</span>siteUrl<span class="sc">}</span><span class="vs">/wp-json/bkpc/v1`</span><span class="op">;</span></span>
<span id="cb30-4"><a href="#cb30-4" aria-hidden="true"></a>        <span class="kw">this</span><span class="op">.</span><span class="at">auth</span> <span class="op">=</span> <span class="fu">btoa</span>(<span class="vs">`</span><span class="sc">${</span>username<span class="sc">}</span><span class="vs">:</span><span class="sc">${</span>appPassword<span class="sc">}</span><span class="vs">`</span>)<span class="op">;</span></span>
<span id="cb30-5"><a href="#cb30-5" aria-hidden="true"></a>    }</span>
<span id="cb30-6"><a href="#cb30-6" aria-hidden="true"></a></span>
<span id="cb30-7"><a href="#cb30-7" aria-hidden="true"></a>    <span class="kw">async</span> <span class="fu">listBackups</span>() {</span>
<span id="cb30-8"><a href="#cb30-8" aria-hidden="true"></a>        <span class="kw">const</span> response <span class="op">=</span> <span class="cf">await</span> <span class="fu">fetch</span>(<span class="vs">`</span><span class="sc">${</span><span class="kw">this</span><span class="op">.</span><span class="at">apiBase</span><span class="sc">}</span><span class="vs">/backup/list`</span><span class="op">,</span> {</span>
<span id="cb30-9"><a href="#cb30-9" aria-hidden="true"></a>            <span class="dt">headers</span><span class="op">:</span> {</span>
<span id="cb30-10"><a href="#cb30-10" aria-hidden="true"></a>                <span class="st">&#39;Authorization&#39;</span><span class="op">:</span> <span class="vs">`Basic </span><span class="sc">${</span><span class="kw">this</span><span class="op">.</span><span class="at">auth</span><span class="sc">}</span><span class="vs">`</span></span>
<span id="cb30-11"><a href="#cb30-11" aria-hidden="true"></a>            }</span>
<span id="cb30-12"><a href="#cb30-12" aria-hidden="true"></a>        })<span class="op">;</span></span>
<span id="cb30-13"><a href="#cb30-13" aria-hidden="true"></a></span>
<span id="cb30-14"><a href="#cb30-14" aria-hidden="true"></a>        <span class="cf">return</span> <span class="cf">await</span> response<span class="op">.</span><span class="fu">json</span>()<span class="op">;</span></span>
<span id="cb30-15"><a href="#cb30-15" aria-hidden="true"></a>    }</span>
<span id="cb30-16"><a href="#cb30-16" aria-hidden="true"></a></span>
<span id="cb30-17"><a href="#cb30-17" aria-hidden="true"></a>    <span class="kw">async</span> <span class="fu">createBackup</span>(type <span class="op">=</span> <span class="st">&#39;full&#39;</span>) {</span>
<span id="cb30-18"><a href="#cb30-18" aria-hidden="true"></a>        <span class="kw">const</span> response <span class="op">=</span> <span class="cf">await</span> <span class="fu">fetch</span>(<span class="vs">`</span><span class="sc">${</span><span class="kw">this</span><span class="op">.</span><span class="at">apiBase</span><span class="sc">}</span><span class="vs">/backup/create`</span><span class="op">,</span> {</span>
<span id="cb30-19"><a href="#cb30-19" aria-hidden="true"></a>            <span class="dt">method</span><span class="op">:</span> <span class="st">&#39;POST&#39;</span><span class="op">,</span></span>
<span id="cb30-20"><a href="#cb30-20" aria-hidden="true"></a>            <span class="dt">headers</span><span class="op">:</span> {</span>
<span id="cb30-21"><a href="#cb30-21" aria-hidden="true"></a>                <span class="st">&#39;Authorization&#39;</span><span class="op">:</span> <span class="vs">`Basic </span><span class="sc">${</span><span class="kw">this</span><span class="op">.</span><span class="at">auth</span><span class="sc">}</span><span class="vs">`</span><span class="op">,</span></span>
<span id="cb30-22"><a href="#cb30-22" aria-hidden="true"></a>                <span class="st">&#39;Content-Type&#39;</span><span class="op">:</span> <span class="st">&#39;application/json&#39;</span></span>
<span id="cb30-23"><a href="#cb30-23" aria-hidden="true"></a>            }<span class="op">,</span></span>
<span id="cb30-24"><a href="#cb30-24" aria-hidden="true"></a>            <span class="dt">body</span><span class="op">:</span> <span class="bu">JSON</span><span class="op">.</span><span class="fu">stringify</span>({</span>
<span id="cb30-25"><a href="#cb30-25" aria-hidden="true"></a>                <span class="dt">type</span><span class="op">:</span> type<span class="op">,</span></span>
<span id="cb30-26"><a href="#cb30-26" aria-hidden="true"></a>                <span class="dt">cloud_upload</span><span class="op">:</span> <span class="kw">true</span></span>
<span id="cb30-27"><a href="#cb30-27" aria-hidden="true"></a>            })</span>
<span id="cb30-28"><a href="#cb30-28" aria-hidden="true"></a>        })<span class="op">;</span></span>
<span id="cb30-29"><a href="#cb30-29" aria-hidden="true"></a></span>
<span id="cb30-30"><a href="#cb30-30" aria-hidden="true"></a>        <span class="cf">return</span> <span class="cf">await</span> response<span class="op">.</span><span class="fu">json</span>()<span class="op">;</span></span>
<span id="cb30-31"><a href="#cb30-31" aria-hidden="true"></a>    }</span>
<span id="cb30-32"><a href="#cb30-32" aria-hidden="true"></a></span>
<span id="cb30-33"><a href="#cb30-33" aria-hidden="true"></a>    <span class="kw">async</span> <span class="fu">deleteBackup</span>(uuid) {</span>
<span id="cb30-34"><a href="#cb30-34" aria-hidden="true"></a>        <span class="kw">const</span> response <span class="op">=</span> <span class="cf">await</span> <span class="fu">fetch</span>(<span class="vs">`</span><span class="sc">${</span><span class="kw">this</span><span class="op">.</span><span class="at">apiBase</span><span class="sc">}</span><span class="vs">/backup/</span><span class="sc">${</span>uuid<span class="sc">}</span><span class="vs">`</span><span class="op">,</span> {</span>
<span id="cb30-35"><a href="#cb30-35" aria-hidden="true"></a>            <span class="dt">method</span><span class="op">:</span> <span class="st">&#39;DELETE&#39;</span><span class="op">,</span></span>
<span id="cb30-36"><a href="#cb30-36" aria-hidden="true"></a>            <span class="dt">headers</span><span class="op">:</span> {</span>
<span id="cb30-37"><a href="#cb30-37" aria-hidden="true"></a>                <span class="st">&#39;Authorization&#39;</span><span class="op">:</span> <span class="vs">`Basic </span><span class="sc">${</span><span class="kw">this</span><span class="op">.</span><span class="at">auth</span><span class="sc">}</span><span class="vs">`</span></span>
<span id="cb30-38"><a href="#cb30-38" aria-hidden="true"></a>            }</span>
<span id="cb30-39"><a href="#cb30-39" aria-hidden="true"></a>        })<span class="op">;</span></span>
<span id="cb30-40"><a href="#cb30-40" aria-hidden="true"></a></span>
<span id="cb30-41"><a href="#cb30-41" aria-hidden="true"></a>        <span class="cf">return</span> <span class="cf">await</span> response<span class="op">.</span><span class="fu">json</span>()<span class="op">;</span></span>
<span id="cb30-42"><a href="#cb30-42" aria-hidden="true"></a>    }</span>
<span id="cb30-43"><a href="#cb30-43" aria-hidden="true"></a>}</span>
<span id="cb30-44"><a href="#cb30-44" aria-hidden="true"></a></span>
<span id="cb30-45"><a href="#cb30-45" aria-hidden="true"></a><span class="co">// Usage</span></span>
<span id="cb30-46"><a href="#cb30-46" aria-hidden="true"></a><span class="kw">const</span> dashboard <span class="op">=</span> <span class="kw">new</span> <span class="fu">BackupDashboard</span>(</span>
<span id="cb30-47"><a href="#cb30-47" aria-hidden="true"></a>    <span class="st">&#39;https://yoursite.com&#39;</span><span class="op">,</span></span>
<span id="cb30-48"><a href="#cb30-48" aria-hidden="true"></a>    <span class="st">&#39;admin&#39;</span><span class="op">,</span></span>
<span id="cb30-49"><a href="#cb30-49" aria-hidden="true"></a>    <span class="st">&#39;your-application-password&#39;</span></span>
<span id="cb30-50"><a href="#cb30-50" aria-hidden="true"></a>)<span class="op">;</span></span>
<span id="cb30-51"><a href="#cb30-51" aria-hidden="true"></a></span>
<span id="cb30-52"><a href="#cb30-52" aria-hidden="true"></a><span class="co">// Create backup button handler</span></span>
<span id="cb30-53"><a href="#cb30-53" aria-hidden="true"></a><span class="bu">document</span><span class="op">.</span><span class="fu">getElementById</span>(<span class="st">&#39;create-backup&#39;</span>)<span class="op">.</span><span class="fu">addEventListener</span>(<span class="st">&#39;click&#39;</span><span class="op">,</span> <span class="kw">async</span> () <span class="kw">=&gt;</span> {</span>
<span id="cb30-54"><a href="#cb30-54" aria-hidden="true"></a>    <span class="kw">const</span> result <span class="op">=</span> <span class="cf">await</span> dashboard<span class="op">.</span><span class="fu">createBackup</span>(<span class="st">&#39;full&#39;</span>)<span class="op">;</span></span>
<span id="cb30-55"><a href="#cb30-55" aria-hidden="true"></a>    <span class="bu">console</span><span class="op">.</span><span class="fu">log</span>(<span class="st">&#39;Backup created:&#39;</span><span class="op">,</span> result<span class="op">.</span><span class="at">data</span><span class="op">.</span><span class="at">uuid</span>)<span class="op">;</span></span>
<span id="cb30-56"><a href="#cb30-56" aria-hidden="true"></a>})<span class="op">;</span></span></code></pre>
</div>
<h2 id="error-handling">Error Handling</h2>
<p>API returns standard HTTP status codes:</p>
<p><strong>200 OK</strong>: Request successful <strong>201 Created</strong>: Resource created successfully <strong>400 Bad Request</strong>: Invalid request parameters <strong>401 Unauthorized</strong>: Authentication failed <strong>403 Forbidden</strong>: Insufficient permissions <strong>404 Not Found</strong>: Resource not found <strong>429 Too Many Requests</strong>: Rate limit exceeded <strong>500 Internal Server Error</strong>: Server error</p>
<p><strong>Error Response Format</strong>:</p>
<div class="sourceCode" id="cb31">
<pre class="sourceCode json"><code class="sourceCode json"><span id="cb31-1"><a href="#cb31-1" aria-hidden="true"></a><span class="fu">{</span></span>
<span id="cb31-2"><a href="#cb31-2" aria-hidden="true"></a>  <span class="dt">&quot;success&quot;</span><span class="fu">:</span> <span class="kw">false</span><span class="fu">,</span></span>
<span id="cb31-3"><a href="#cb31-3" aria-hidden="true"></a>  <span class="dt">&quot;error&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb31-4"><a href="#cb31-4" aria-hidden="true"></a>    <span class="dt">&quot;code&quot;</span><span class="fu">:</span> <span class="st">&quot;invalid_backup_type&quot;</span><span class="fu">,</span></span>
<span id="cb31-5"><a href="#cb31-5" aria-hidden="true"></a>    <span class="dt">&quot;message&quot;</span><span class="fu">:</span> <span class="st">&quot;Backup type must be &#39;full&#39;, &#39;database&#39;, or &#39;files&#39;&quot;</span><span class="fu">,</span></span>
<span id="cb31-6"><a href="#cb31-6" aria-hidden="true"></a>    <span class="dt">&quot;data&quot;</span><span class="fu">:</span> <span class="fu">{</span></span>
<span id="cb31-7"><a href="#cb31-7" aria-hidden="true"></a>      <span class="dt">&quot;provided_value&quot;</span><span class="fu">:</span> <span class="st">&quot;partial&quot;</span></span>
<span id="cb31-8"><a href="#cb31-8" aria-hidden="true"></a>    <span class="fu">}</span></span>
<span id="cb31-9"><a href="#cb31-9" aria-hidden="true"></a>  <span class="fu">}</span></span>
<span id="cb31-10"><a href="#cb31-10" aria-hidden="true"></a><span class="fu">}</span></span></code></pre>
</div>
<h2 id="rate-limiting">Rate Limiting</h2>
<p>API requests are rate limited:</p>
<p><strong>Free Plan</strong>: 100 requests/hour <strong>Pro Plan</strong>: 500 requests/hour <strong>Enterprise Plan</strong>: 5000 requests/hour</p>
<p>Rate limit headers included in responses:</p>
<pre><code>X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1706097600</code></pre>
<h2 id="security-best-practices">Security Best Practices</h2>
<p><strong>Use Application Passwords</strong>: Never use main account password for API authentication.</p>
<p><strong>HTTPS Only</strong>: Always use HTTPS for API requests to encrypt credentials and data.</p>
<p><strong>Rotate Credentials</strong>: Regularly rotate Application Passwords and revoke unused ones.</p>
<p><strong>Validate Webhooks</strong>: Verify webhook signatures using shared secret:</p>
<div class="sourceCode" id="cb33">
<pre class="sourceCode php"><code class="sourceCode php"><span id="cb33-1"><a href="#cb33-1" aria-hidden="true"></a><span class="kw">$payload</span> = <span class="fu">file_get_contents</span><span class="ot">(</span><span class="st">&#39;php://input&#39;</span><span class="ot">);</span></span>
<span id="cb33-2"><a href="#cb33-2" aria-hidden="true"></a><span class="kw">$signature</span> = <span class="fu">hash_hmac</span><span class="ot">(</span><span class="st">&#39;sha256&#39;</span><span class="ot">,</span> <span class="kw">$payload</span><span class="ot">,</span> <span class="st">&#39;your_webhook_secret&#39;</span><span class="ot">);</span></span>
<span id="cb33-3"><a href="#cb33-3" aria-hidden="true"></a></span>
<span id="cb33-4"><a href="#cb33-4" aria-hidden="true"></a><span class="kw">if</span> <span class="ot">(</span>!<span class="fu">hash_equals</span><span class="ot">(</span><span class="kw">$signature</span><span class="ot">,</span> <span class="kw">$_SERVER</span><span class="ot">[</span><span class="st">&#39;HTTP_X_BKPC_SIGNATURE&#39;</span><span class="ot">]))</span> {</span>
<span id="cb33-5"><a href="#cb33-5" aria-hidden="true"></a>    <span class="fu">http_response_code</span><span class="ot">(</span><span class="dv">401</span><span class="ot">);</span></span>
<span id="cb33-6"><a href="#cb33-6" aria-hidden="true"></a>    <span class="kw">exit</span><span class="ot">;</span></span>
<span id="cb33-7"><a href="#cb33-7" aria-hidden="true"></a>}</span></code></pre>
</div>
<p><strong>Minimum Permissions</strong>: Grant API users minimum required permissions (backup operator role rather than administrator).</p>
<h2 id="conclusion">Conclusion</h2>
<p>Backup Copilot Pro’s REST API enables powerful automation and integration possibilities. From CI/CD pipeline integrations ensuring pre-deployment backups to custom monitoring dashboards providing real-time visibility, the API provides complete programmatic control over backup operations.</p>
<p>Authentication via Application Passwords provides secure access, comprehensive endpoints cover all backup operations, real-time status monitoring enables responsive workflows, and webhook notifications enable event-driven architectures. Whether building custom tools or integrating with existing systems, the API provides the foundation for automated, reliable WordPress backup management.</p>
<h2 id="external-links">External Links</h2>
<ol type="1">
<li><a href="https://developer.wordpress.org/rest-api/">WordPress REST API Handbook</a></li>
<li><a href="https://make.wordpress.org/core/2020/11/05/application-passwords-integration-guide/">Application Passwords</a></li>
<li><a href="https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/">REST API Authentication</a></li>
<li><a href="https://www.postman.com/api-platform/api-testing/">Postman API Testing</a></li>
<li><a href="https://oauth.net/2/">OAuth 2.0 for WordPress</a></li>
</ol>
<h2 id="call-to-action">Call to Action</h2>
<p>Build powerful integrations! <a href="https://backupcopilotplugin.com/#pricing">Backup Copilot Pro</a> includes full REST API access with comprehensive documentation. Automate your entire backup workflow—get started today!</p>
<p>The post <a href="https://backupcopilotplugin.com/blog/backup-copilot-pro-rest-api-automate-backups-with-external-systems/">Backup Copilot Pro REST API: Automate Backups with External Systems</a> appeared first on <a href="https://backupcopilotplugin.com">Backup Copilot</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
