跳至主要内容

项目管理

项目是 ONE 生态系统中的顶级组织单元。每个项目拥有自己的 API 密钥、用量配额、Webhook 订阅和团队成员。您可以通过仪表板 UI 或使用 OneEngineClient 以编程方式管理项目。

客户端设置

所有项目管理方法都在 OneEngineClient 上可用。在调用以下任何方法之前,请先创建一个已认证的客户端。

import { OneEngineClient } from '@one_deploy/sdk';

const engine = new OneEngineClient({
baseUrl: process.env.ONE_ENGINE_URL!,
clientId: process.env.ONE_CLIENT_ID!,
secretKey: process.env.ONE_SECRET_KEY!,
});

方法

方法说明
getProjects(options?)列出已认证账户的所有项目。
createProject(params)创建新项目。
getProject(projectId)按 ID 获取单个项目。
updateProject(projectId, updates)更新项目设置。
deleteProject(projectId)永久删除项目。
getProjectFeatures(projectId)获取项目的功能标志。
updateProjectFeatures(projectId, features)启用或禁用功能标志。

getProjects

列出属于已认证账户的所有项目。支持可选的筛选和分页。

interface GetProjectsOptions {
page?: number; // 1-based page number (default: 1)
limit?: number; // Items per page (default: 20, max: 100)
status?: 'active' | 'archived';
}

const res = await engine.getProjects({ page: 1, limit: 10, status: 'active' });

if (res.success) {
for (const project of res.data) {
console.log(project.id, project.name, project.plan);
}
}

createProject

创建新项目并获取其凭据。

interface CreateProjectParams {
name: string; // Human-readable project name
networks: number[]; // Chain IDs to enable (e.g. [1, 137, 42161])
description?: string; // Optional project description
plan?: 'free' | 'pro' | 'enterprise'; // Defaults to 'free'
}

const res = await engine.createProject({
name: 'my-defi-app',
networks: [1, 137, 42161],
description: 'Production DeFi application',
plan: 'pro',
});

if (res.success) {
console.log('Project ID:', res.data.id);
console.log('Client ID:', res.data.clientId);
console.log('Secret Key:', res.data.secretKey);
// Store secretKey securely -- it is only shown once.
}
危险

secretKey 仅在创建时显示一次。请立即复制并将其存储在安全位置,例如密钥管理器或环境变量中。如果丢失,您必须从仪表板重新生成密钥。

getProject

获取单个项目的完整详情。

interface Project {
id: string;
name: string;
description?: string;
clientId: string;
networks: number[];
plan: 'free' | 'pro' | 'enterprise';
status: 'active' | 'archived';
createdAt: string; // ISO-8601
updatedAt: string; // ISO-8601
}

const res = await engine.getProject('proj_abc123');

if (res.success) {
const project: Project = res.data;
console.log('Name:', project.name);
console.log('Networks:', project.networks);
console.log('Plan:', project.plan);
console.log('Status:', project.status);
}

updateProject

更新现有项目的一个或多个设置。

interface UpdateProjectParams {
name?: string;
description?: string;
networks?: number[];
status?: 'active' | 'archived';
}

const res = await engine.updateProject('proj_abc123', {
name: 'my-defi-app-v2',
networks: [1, 137, 42161, 8453], // Added Base (8453)
});

if (res.success) {
console.log('Updated:', res.data.name);
console.log('Networks:', res.data.networks);
}

deleteProject

永久删除项目并撤销所有关联的 API 密钥。此操作不可撤消。

const res = await engine.deleteProject('proj_abc123');

if (res.success) {
console.log('Project deleted successfully');
}
危险

删除项目是不可逆的。与该项目关联的所有 API 密钥、Webhook 订阅、用量历史和团队成员关系将被永久移除。使用该项目凭据的活跃集成将立即停止工作。

项目功能

每个项目都有一组功能标志,用于控制启用哪些 SDK 功能。使用 getProjectFeatures 查看当前标志,使用 updateProjectFeatures 切换它们。

getProjectFeatures

interface ProjectFeatures {
wallet: boolean;
payments: boolean;
aiTrading: boolean;
forex: boolean;
contracts: boolean;
nfts: boolean;
webhooks: boolean;
adminApi: boolean;
}

const res = await engine.getProjectFeatures('proj_abc123');

if (res.success) {
const features: ProjectFeatures = res.data;
console.log('Wallet enabled:', features.wallet);
console.log('AI Trading enabled:', features.aiTrading);
console.log('Forex enabled:', features.forex);
}

updateProjectFeatures

只传递您想要更改的标志。未传递的标志保持其当前值。

const res = await engine.updateProjectFeatures('proj_abc123', {
aiTrading: true,
forex: true,
webhooks: true,
});

if (res.success) {
console.log('Features updated:', res.data);
}

完整示例

以下脚本创建一个项目、启用功能并验证配置。

setup-project.ts
import { OneEngineClient } from '@one_deploy/sdk';

const engine = new OneEngineClient({
baseUrl: process.env.ONE_ENGINE_URL!,
clientId: process.env.ONE_CLIENT_ID!,
secretKey: process.env.ONE_SECRET_KEY!,
});

async function setupProject() {
// 1. Create the project
const createRes = await engine.createProject({
name: 'trading-platform',
networks: [1, 137, 42161],
description: 'AI-powered trading platform',
plan: 'pro',
});

if (!createRes.success) {
console.error('Failed to create project:', createRes.error);
return;
}

const projectId = createRes.data.id;
console.log('Created project:', projectId);

// 2. Enable features
await engine.updateProjectFeatures(projectId, {
wallet: true,
payments: true,
aiTrading: true,
forex: true,
webhooks: true,
});

// 3. Verify
const projectRes = await engine.getProject(projectId);
const featuresRes = await engine.getProjectFeatures(projectId);

if (projectRes.success && featuresRes.success) {
console.log('Project name:', projectRes.data.name);
console.log('Networks:', projectRes.data.networks);
console.log('Features:', featuresRes.data);
}
}

setupProject();

下一步