Los workspaces se exponen mediante el módulo api.workspaces — una novedad de v4. Están disponibles en los planes Standard, Pro y Enterprise.
Crear un workspace
const { id: workspaceId } = await api.workspaces.create({ name: "Acme" });
El name debe tener entre 1 y 32 caracteres.
Listar workspaces
api.workspaces.list() devuelve todos los workspaces donde el usuario autenticado es propietario o miembro.
const workspaces = await api.workspaces.list();
for (const ws of workspaces) {
console.log(
`${ws.name} (${ws.memberList.length} members, ${ws.applicationList.length} apps)`,
);
}
En v3 ws.members y ws.applications contenían arrays de datos sin procesar. En v4 esos son ahora módulos (ws.members.add(...), ws.applications.add(...)). Los arrays sin procesar se movieron a ws.memberList y ws.applicationList.
Obtener un único workspace
const workspace = await api.workspaces.fetch(workspaceId);
console.log(workspace.id);
console.log(workspace.name);
console.log(workspace.owner);
console.log(workspace.createdAt);
console.log(workspace.memberList);
console.log(workspace.applicationList);
Invitar miembros
Invitar a un miembro es un handshake de dos pasos — el invitado demuestra su consentimiento generando un código de corta duración (5 minutos) desde su cliente, y el propietario lo consume.
// 1. From the invitee's own SDK client
const otherApi = new SquareCloudAPI(process.env.OTHER_USER_API_KEY!);
const code = await otherApi.workspaces.generateInviteCode();
// 2. From the workspace owner's client
await workspace.members.add(code, "maintain");
Roles válidos para el argumento group:
| Rol | Descripción |
|---|
view | Acceso de solo lectura |
manager | Gestionar aplicaciones |
maintain | Gestionar aplicaciones + miembros por debajo de su nivel |
admin | Administrador completo |
El rol owner no se puede asignar a través de la API — la transferencia de propiedad no está expuesta.
Cambiar el rol de un miembro
await workspace.members.update("1234567890abcdef1234567890abcdef", "admin");
Eliminar un miembro
await workspace.members.remove("1234567890abcdef1234567890abcdef");
Solo el propietario del workspace puede eliminar miembros.
Compartir aplicaciones
await workspace.applications.add("abc123def456abc123def456");
await workspace.applications.remove("abc123def456abc123def456");
Salir o eliminar un workspace
// As a member
await workspace.leave();
// As the owner (irreversible)
await workspace.delete();
También puedes eliminar o salir por ID directamente desde el módulo:
await api.workspaces.delete(workspaceId);
await api.workspaces.leave(workspaceId);