Les workspaces sont exposés par l’interface Workspaces embarquée dans rest.Rest. Ils sont disponibles sur les plans Standard, Pro et Enterprise.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Créer un workspace
workspace, err := api.CreateWorkspace("Acme")
if err != nil {
panic(err)
}
fmt.Println(workspace.ID)
Le nom doit comporter de 1 à 32 caractères, et la création d’un workspace nécessite un plan payant actif.
Lister les workspaces
api.GetWorkspaces() renvoie tous les workspaces dont l’utilisateur authentifié est propriétaire ou membre.
workspaces, err := api.GetWorkspaces()
if err != nil {
panic(err)
}
for _, ws := range workspaces {
fmt.Println(ws.Name, ws.ID)
}
Récupérer un seul workspace
Les IDs de workspace sont des valeurs UUID v4 sans tirets (32 caractères hexadécimaux).
workspace, err := api.GetWorkspace("1234567890abcdef1234567890abcdef")
if err != nil {
panic(err)
}
fmt.Println(workspace.Name)
fmt.Println(workspace.Owner)
fmt.Println(workspace.Members)
fmt.Println(workspace.Applications)
Inviter des membres
Inviter un membre est un échange en deux étapes — l’invité prouve son consentement en générant un code de courte durée depuis son propre client, et le propriétaire le consomme.
// 1. Depuis le client SDK de l'invité
otherClient := rest.NewClient(os.Getenv("OTHER_USER_API_KEY"))
defer otherClient.Close()
otherAPI := rest.New(otherClient)
code, err := otherAPI.GetWorkspaceInviteCode()
if err != nil {
panic(err)
}
// 2. Depuis le client du propriétaire du workspace
err = api.AddWorkspaceMember("1234567890abcdef1234567890abcdef", code, "maintain")
if err != nil {
panic(err)
}
Le code d’invitation est généré par l’utilisateur qui va rejoindre le workspace, pas par le propriétaire. Il est à usage unique et expire après 5 minutes — générez-le, remettez-le au propriétaire/admin et consommez-le rapidement.
Rôles
| Rôle | Description |
|---|
owner / admin | Gestion complète du workspace |
maintain | Accès opérationnel aux applications partagées |
manager | Surveillance plus cycle de vie des applications (démarrage, arrêt, redémarrage) |
view | Accès en lecture seule |
Modifier le rôle d’un membre
err := api.UpdateWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01", "admin")
if err != nil {
panic(err)
}
Retirer un membre
err := api.RemoveWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01")
if err != nil {
panic(err)
}
Partager des applications
err := api.AddWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.RemoveWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
Quitter ou supprimer un workspace
La suppression d’un workspace est irréversible et réservée au propriétaire.
// En tant que membre
err := api.LeaveWorkspace("1234567890abcdef1234567890abcdef")
// En tant que propriétaire (irréversible)
err = api.DeleteWorkspace("1234567890abcdef1234567890abcdef")