Saltar al contenido principal
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:
RolDescripción
viewAcceso de solo lectura
managerGestionar aplicaciones
maintainGestionar aplicaciones + miembros por debajo de su nivel
adminAdministrador 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);