功能简介
先建立 Organization,再在组织归属下创建 Project,可以让成员角色、资源所有权和项目凭据从一开始就有清晰边界。Organization 是控制面归属,Project 是应用资源与数据面的隔离单元。
当前支持范围
- 组织(APPBASE_ENHANCED):在自托管控制面用 Organization 归集项目、角色、用量、配额与审计;该管理面使用 Console Session、Admin 或 JWT,不是普通 Project API Key 数据面。
- 项目(SUPPORTED):以 Project 隔离应用资源、服务开关、平台配置、API Key、Webhook 与认证策略。
- 组织成员与角色(APPBASE_ENHANCED):在组织范围邀请、确认、变更和移除成员,并以 Owner、Admin、Developer、Editor、Analyst、Billing 角色约束管理权限。
适用场景
- 首次进入自托管 AppBase Console。
- 为团队创建独立 Organization 并邀请成员。
- 为不同环境或应用拆分 Project。
前置条件
- 拥有有效 Console Session。
- 当前账号允许创建 Organization。
- 为 Project 选择不与其他环境混用的 ID 和名称。
Console 操作路径
Console → Create organization → 填写名称;进入 Organization 后创建 Project。已有组织可从 Organization 切换器进入 Members 或 Settings。创建 Project 后再进入 Project 设置管理平台、服务开关与 Keys。
SDK 示例
SDK · TypeScript
import { Client, SelfHostedOrganizations, Projects } from 'appbase-console-sdk';
const client = new Client().setEndpoint('https://<APPBASE_HOST>/v1');
const organizations = new SelfHostedOrganizations(client);
await organizations.create({
organizationId: '<ORGANIZATION_ID>',
name: 'Example organization'
});
const projects = new Projects(client);
await projects.create({
projectId: '<PROJECT_ID>',
name: 'Example project',
teamId: '<ORGANIZATION_ID>'
});REST 示例
REST · Bash
curl 'https://<APPBASE_HOST>/v1/organizations' \
-X POST \
-H 'Cookie: <CONSOLE_SESSION_COOKIE>' \
-H 'Content-Type: application/json' \
--data '{"organizationId":"<ORGANIZATION_ID>","name":"Example organization"}'常见错误
| 现象 | 处理建议 |
|---|---|
401 user_unauthorized | 先完成 Console 登录;不要传仅有 Project Scope 的 API Key。 |
403 | 确认当前账号拥有创建组织或在目标组织创建 Project 的角色。 |
409 | Organization ID 或 Project ID 已存在时改用新的稳定 ID。 |
当前限制
- Cloud 与自托管的组织计费字段、区域和可选能力可能不同。
- 组织成员邀请需要收件通道或可访问的确认 URL。
- Project 创建成功不表示所有依赖型服务已启用。
Appwrite 兼容说明
Project 仍是兼容核心 API 的主要隔离边界;Organization 是 AppBase 已核验的控制面增强。
AppBase 增强说明
AppBase 在自托管控制面显式提供 Organization 生命周期、成员、角色、用量、配额与审计接口。
发布状态和验证 Commit
origin/main 已核验。验证 Commit:0363062a1c7ea08741975bb5ba0c3361663c9353。
权威来源文件列表
backend-candidate:app/controllers/api/projects.phpbackend-candidate:src/Appwrite/Platform/Modules/Organizations/Http/Memberships/backend-candidate:src/Appwrite/Platform/Modules/Organizations/Http/Organizations/backend-candidate:src/Appwrite/Platform/Modules/Projects/Http/Projects/backend-candidate:tests/e2e/Services/Organizations/OrganizationsConsoleClientTest.phpbackend-candidate:tests/e2e/Services/Projects/ProjectsConsoleClientTest.phpfrontend-candidate:console/src/routes/(console)/organization-[organization]/frontend-candidate:console/src/routes/(console)/organization-[organization]/members/frontend-candidate:console/src/routes/(console)/project-[region]-[project]/origin-main:docs/products/v2.3.x/organizations/organization-management.md
Appwrite taxonomy 仅作信息架构参考:https://appwrite.io/docs。上游页面不是 AppBase 实现证据。