mcpField
R
rocket-net-api

rocket-net-api

github.com/jezweb云与 DevOps1.1k109 次安装3 周前更新
代码仓库

关于 rocket-net-api

rocket-net-api 是面向开发者的集成指南,用于对接 Rocket.net 托管式 WordPress 平台 API。它介绍 JWT 身份验证,以及站点、备份、域名、插件、报告、账户和账单相关端点。

主要功能

  1. 01基于 JWT 的 API 身份验证
  2. 02创建和管理 WordPress 站点
  3. 03配置域名与 CDN 缓存
  4. 04管理插件、主题和文件
  5. 05创建、下载和恢复备份
  6. 06访问报告与账户端点

适用场景

  1. 01自动创建和更新站点
  2. 02将暂存站点发布到生产环境
  3. 03管理备份并恢复站点
  4. 04查看 CDN、访客或带宽报告

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jezweb/claude-skills --skill rocket-net-api

安装后在 Claude Code 中输入/rocket-net-api确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
.claude-plugin/
plugin.json
references/
endpoints.md

详细介绍

Rocket.net API 集成

与 Rocket.net 托管式 WordPress 主机平台 API 构建集成。此技能涵盖身份验证、站点管理、域名配置、备份、插件/主题、CDN 缓存控制以及全部 200 多个 API 端点。

API 概览

基础 URL:https://api.rocket.net/v1

身份验证:基于 JWT 令牌

  • 通过向 /login 发送包含电子邮件和密码的 POST 请求来获取令牌
  • 令牌将在 7 天后过期
  • 在请求中通过 Authorization: Bearer <token> 传入

内容类型:JSON API

  • 必需标头:Content-Type: application/json
  • 建议标头:Accept: application/json

文档:https://rocketdotnet.readme.io/reference/introduction

身份验证

获取 JWT 令牌
const response = await fetch('https://api.rocket.net/v1/login', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
  },
  body: JSON.stringify({
    username: '[email protected]',
    password: 'your-password'
  })
});

const { token } = await response.json();
// Use token in subsequent requests
已验证请求模式
async function rocketApiRequest(
  endpoint: string,
  options: RequestInit = {}
): Promise<any> {
  const response = await fetch(`https://api.rocket.net/v1${endpoint}`, {
    ...options,
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': `Bearer ${token}`,
      ...options.headers
    }
  });

  if (response.status === 401) {
    // Token expired, re-authenticate
    throw new Error('Token expired - request new token');
  }

  return response.json();
}

按类别划分的 API 端点

站点管理
方法端点说明
GET/sites列出所有站点
POST/sites创建新站点
GET/sites/{id}获取站点详情
PATCH/sites/{id}更新站点属性
DELETE/sites/{id}删除站点
POST/sites/{id}/clone克隆站点(后台任务)
GET/sites/{id}/credentials获取站点凭据
GET/sites/{id}/usage获取站点使用情况统计信息
POST/sites/{id}/lock锁定站点(阻止修改)
DELETE/sites/{id}/lock解锁站点
GET/sites/{id}/pma_login获取 phpMyAdmin SSO 链接
GET/sites/{id}/settings获取站点设置
PATCH/sites/{id}/settings更新站点设置
GET/sites/locations列出可用的站点位置
暂存站点
方法端点说明
POST/sites/{id}/staging创建暂存站点
DELETE/sites/{id}/staging删除暂存站点
POST/sites/{id}/staging/publish将暂存站点发布到生产环境
站点模板
方法端点说明
GET/sites/templates列出站点模板
POST/sites/templates创建站点模板
GET/sites/templates/{id}获取模板详情
DELETE/sites/templates/{id}删除模板
POST/sites/templates/{id}/sites根据模板创建站点
域名
方法端点说明
GET/sites/{id}/domains列出域名别名
POST/sites/{id}/domains添加域名别名
DELETE/sites/{id}/domains/{domainId}移除域名别名
GET/sites/{id}/maindomain获取主域名信息
POST/sites/{id}/maindomain设置主域名
PUT/sites/{id}/maindomain替换主域名
PATCH/sites/{id}/maindomain更新域名验证/SSL
GET/sites/{id}/maindomain/status检查域名状态
GET/sites/{id}/maindomain/recheck强制重新检查验证状态
GET/sites/{id}/domains/{domainId}/edge_settings获取边缘设置
PATCH/sites/{id}/domains/{domainId}/edge_settings更新边缘设置
CDN 缓存
方法端点说明
POST/sites/{id}/cache/purge清除指定文件的缓存
POST/sites/{id}/cache/purge_everything清除所有缓存
插件
方法端点说明
GET/sites/{id}/plugins列出已安装的插件
POST/sites/{id}/plugins安装插件
PATCH/sites/{id}/plugins启用/停用插件
PUT/sites/{id}/plugins更新插件
DELETE/sites/{id}/plugins删除插件
GET/sites/{id}/plugins/search搜索可用插件
GET/sites/{id}/featured_plugins列出精选插件
主题
方法端点描述
GET/sites/{id}/themes列出已安装的主题
POST/sites/{id}/themes安装主题
PATCH/sites/{id}/themes激活主题
PUT/sites/{id}/themes更新主题
DELETE/sites/{id}/themes删除主题
GET/sites/{id}/themes/search搜索可用主题
备份
方法端点描述
GET/sites/{id}/backup列出备份
POST/sites/{id}/backup创建备份
GET/sites/{id}/backup/{backupId}下载备份
DELETE/sites/{id}/backup/{backupId}删除备份
POST/sites/{id}/backup/{backupId}/restore还原备份
GET/sites/{id}/backup/automated列出自动备份
POST/sites/{id}/backup/automated/{restoreId}/restore还原自动备份
云备份
方法端点描述
GET/sites/{id}/cloud_backups列出云备份
POST/sites/{id}/cloud_backups创建云备份
GET/sites/{id}/cloud_backups/{backupId}获取云备份
DELETE/sites/{id}/cloud_backups/{backupId}删除云备份
GET/sites/{id}/cloud_backups/{backupId}/download获取下载链接
POST/sites/{id}/cloud_backups/{backupId}/restore还原云备份
文件
方法端点描述
GET/sites/{id}/file_manager/files列出文件
POST/sites/{id}/files上传文件
PUT/sites/{id}/files保存文件内容
DELETE/sites/{id}/files删除文件
GET/sites/{id}/files/view查看文件内容
GET/sites/{id}/files/download下载文件
POST/sites/{id}/files/folder创建文件夹
POST/sites/{id}/files/extract解压归档文件
POST/sites/{id}/files/compress压缩文件
PATCH/sites/{id}/files/chmod更改权限
FTP 账户
方法端点描述
GET/sites/{id}/ftp_accounts列出 FTP 账户
POST/sites/{id}/ftp_accounts创建 FTP 账户
PATCH/sites/{id}/ftp_accounts更新 FTP 账户
DELETE/sites/{id}/ftp_accounts删除 FTP 账户
SSH 密钥
方法端点描述
GET/sites/{id}/ssh_keys列出 SSH 密钥
POST/sites/{id}/ssh_keys导入 SSH 密钥
DELETE/sites/{id}/ssh_keys删除 SSH 密钥
POST/sites/{id}/ssh_keys/authorize激活 SSH 密钥
POST/sites/{id}/ssh_keys/deauthorize停用 SSH 密钥
GET/sites/{id}/ssh_keys/{name}查看 SSH 密钥信息
WordPress
方法端点描述
GET/sites/{id}/wp_login获取 WordPress SSO 链接
GET/sites/{id}/wp_status获取 WordPress 状态
POST/sites/{id}/wpcli执行 WP-CLI 命令
报告
方法端点描述
GET/reporting/sites/{id}/cdn_requestsCDN 请求报告
GET/reporting/sites/{id}/cdn_cache_status缓存状态报告
GET/reporting/sites/{id}/cdn_cache_content缓存内容报告
GET/reporting/sites/{id}/visitors访客报告
GET/reporting/sites/{id}/waf_eventlistWAF 事件列表
GET/reporting/sites/{id}/waf_events_source按来源查看 WAF 事件
GET/reporting/sites/{id}/waf_firewall_events防火墙事件
GET/reporting/sites/{id}/bandwidth_usage带宽使用情况
GET/reporting/sites/{id}/bandwidth_top_usage带宽使用量最高项
GET/sites/{id}/access_logs访问日志
账户管理
方法端点说明
GET/account/me获取用户信息
PATCH/account/me更新账户设置
GET/account/usage获取账户使用情况统计
POST/account/password更改密码
GET/account/tasks列出账户任务
GET/account/hosting_plan获取当前套餐
PUT/account/hosting_plan更改托管套餐
POST/account/billing_sso获取账单 SSO Cookie
账户用户
方法端点说明
GET/users列出账户用户
POST/users创建账户用户
GET/users/{userId}获取用户详情
PATCH/users/{userId}更新用户
DELETE/users/{userId}移除用户
POST/users/{userId}/reinvite重新发送邀请
站点用户
方法端点说明
GET/sites/{id}/users列出站点用户
POST/sites/{id}/users邀请站点用户
DELETE/sites/{id}/users/{userId}移除站点用户
POST/sites/{id}/users/{userId}/reinvite重新发送邀请
账单
方法端点说明
GET/billing/addresses列出账单地址
POST/billing/addresses创建账单地址
GET/billing/addresses/{addressId}获取账单地址
PATCH/billing/addresses/{addressId}更新账单地址
DELETE/billing/addresses/{addressId}删除账单地址
GET/billing/invoices列出发票
GET/billing/invoices/{invoiceId}获取发票
GET/billing/invoices/{invoiceId}/pdf下载发票 PDF
POST/billing/invoices/{invoiceId}/credit_card_payment使用银行卡付款
GET/billing/payment_methods列出付款方式
POST/billing/payment_methods添加付款方式
DELETE/billing/payment_methods/{methodId}删除付款方式
GET/billing/products列出可用产品
其他功能
方法端点说明
GET/sites/{id}/password_protection获取密码保护状态
POST/sites/{id}/password_protection启用密码保护
DELETE/sites/{id}/password_protection禁用密码保护
GET/sites/{id}/shopshield列出 ShopShield URI
POST/sites/{id}/shopshield启用 ShopShield
DELETE/sites/{id}/shopshield/{id}禁用 ShopShield
GET/account/visitors账户访客统计
GET/account/bandwidth账户带宽统计

常见模式

列出所有站点
const sites = await rocketApiRequest('/sites');
console.log(sites);
// Returns array of site objects with id, domain, status, etc.
创建新站点
const newSite = await rocketApiRequest('/sites', {
  method: 'POST',
  body: JSON.stringify({
    name: 'my-new-site',
    location: 'us-east-1',
    // Additional options as needed
  })
});
清除 CDN 缓存
// Purge specific URLs
await rocketApiRequest(`/sites/${siteId}/cache/purge`, {
  method: 'POST',
  body: JSON.stringify({
    files: [
      'https://example.com/style.css',
      'https://example.com/script.js'
    ]
  })
});

// Purge everything
await rocketApiRequest(`/sites/${siteId}/cache/purge_everything`, {
  method: 'POST'
});
创建和恢复备份
// Create backup
const backup = await rocketApiRequest(`/sites/${siteId}/backup`, {
  method: 'POST'
});

// List backups
const backups = await rocketApiRequest(`/sites/${siteId}/backup`);

// Restore backup (background task)
await rocketApiRequest(`/sites/${siteId}/backup/${backupId}/restore`, {
  method: 'POST'
});
管理插件
// List installed plugins
const plugins = await rocketApiRequest(`/sites/${siteId}/plugins`);

// Install plugin
await rocketApiRequest(`/sites/${siteId}/plugins`, {
  method: 'POST',
  body: JSON.stringify({
    plugins: ['wordfence', 'yoast-seo']
  })
});

// Update all plugins
await rocketApiRequest(`/sites/${siteId}/plugins`, {
  method: 'PUT',
  body: JSON.stringify({
    plugins: ['all']
  })
});

// Activate/deactivate plugin
await rocketApiRequest(`/sites/${siteId}/plugins`, {
  method: 'PATCH',
  body: JSON.stringify({
    plugins: ['wordfence'],
    action: 'activate' // or 'deactivate'
  })
});
执行 WP-CLI 命令
const result = await rocketApiRequest(`/sites/${siteId}/wpcli`, {
  method: 'POST',
  body: JSON.stringify({
    command: 'user list --format=json'
  })
});
WordPress SSO 登录
// Get SSO link for WordPress admin
const { url } = await rocketApiRequest(`/sites/${siteId}/wp_login`);
// Redirect user to url for auto-login

TypeScript 类型

interface RocketSite {
  id: number;
  name: string;
  domain: string;
  status: 'active' | 'suspended' | 'pending';
  location: string;
  created_at: string;
  updated_at: string;
}

interface RocketBackup {
  id: number;
  site_id: number;
  type: 'manual' | 'automated' | 'cloud';
  status: 'pending' | 'completed' | 'failed';
  size: number;
  created_at: string;
}

interface RocketPlugin {
  name: string;
  slug: string;
  version: string;
  status: 'active' | 'inactive';
  update_available: boolean;
}

interface RocketDomain {
  id: number;
  domain: string;
  is_main: boolean;
  ssl_status: 'pending' | 'active' | 'failed';
  validation_method: 'dns' | 'http';
}

interface RocketAuthResponse {
  token: string;
  expires_at: string;
}

错误处理

interface RocketApiError {
  error: string;
  message: string;
  status: number;
}

async function handleRocketRequest(endpoint: string, options?: RequestInit) {
  try {
    const response = await rocketApiRequest(endpoint, options);
    return { data: response, error: null };
  } catch (error) {
    if (error.status === 401) {
      // Re-authenticate and retry
      await refreshToken();
      return handleRocketRequest(endpoint, options);
    }
    if (error.status === 404) {
      return { data: null, error: 'Resource not found' };
    }
    if (error.status === 429) {
      // Rate limited - wait and retry
      await sleep(1000);
      return handleRocketRequest(endpoint, options);
    }
    return { data: null, error: error.message };
  }
}

后台任务

许多操作(克隆、恢复备份、发布暂存站点)会作为后台任务运行。监控任务状态:

// Start a background task
const { task_id } = await rocketApiRequest(`/sites/${siteId}/clone`, {
  method: 'POST',
  body: JSON.stringify({ name: 'cloned-site' })
});

// Check task status
const tasks = await rocketApiRequest(`/sites/${siteId}/tasks`);
const task = tasks.find(t => t.id === task_id);
console.log(task.status); // 'pending', 'running', 'completed', 'failed'

// Cancel task if needed
await rocketApiRequest(`/sites/${siteId}/tasks/${task_id}/cancel`, {
  method: 'POST'
});

速率限制

API 设有速率限制。请实现指数退避:

async function withRetry<T>(
  fn: () => Promise<T>,
  maxRetries = 3,
  delay = 1000
): Promise<T> {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status === 429 && i < maxRetries - 1) {
        await new Promise(resolve => setTimeout(resolve, delay * Math.pow(2, i)));
        continue;
      }
      throw error;
    }
  }
  throw new Error('Max retries exceeded');
}

参考资料

评论

支持 Markdown