I workspace sono esposti dall’interfaccia Workspaces incorporata in rest.Rest. Sono disponibili sui piani Standard, Pro ed Enterprise.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Creare un workspace
workspace, err := api.CreateWorkspace("Acme")
if err != nil {
panic(err)
}
fmt.Println(workspace.ID)
Il nome deve essere lungo da 1 a 32 caratteri, e la creazione di un workspace richiede un piano a pagamento attivo.
Elencare i workspace
api.GetWorkspaces() restituisce ogni workspace in cui l’utente autenticato è proprietario o membro.
workspaces, err := api.GetWorkspaces()
if err != nil {
panic(err)
}
for _, ws := range workspaces {
fmt.Println(ws.Name, ws.ID)
}
Recuperare un singolo workspace
Gli ID dei workspace sono valori UUID v4 senza trattini (32 caratteri esadecimali).
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)
Invitare membri
L’invito di un membro è un handshake in due passaggi: l’invitato dimostra il proprio consenso generando un codice a breve scadenza dal proprio client, e il proprietario lo consuma.
// 1. From the invitee's own SDK client
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. From the workspace owner's client
err = api.AddWorkspaceMember("1234567890abcdef1234567890abcdef", code, "maintain")
if err != nil {
panic(err)
}
Il codice di invito viene generato dall’utente che sta per entrare nel workspace, non dal proprietario. È monouso e scade dopo 5 minuti — generalo, consegnalo al proprietario/admin e consumalo subito.
Ruoli
| Ruolo | Descrizione |
|---|
owner / admin | Gestione completa del workspace |
maintain | Accesso operativo alle applicazioni condivise |
manager | Monitoraggio più ciclo di vita delle applicazioni (start, stop, restart) |
view | Accesso in sola lettura |
Cambiare il ruolo di un membro
err := api.UpdateWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01", "admin")
if err != nil {
panic(err)
}
Rimuovere un membro
err := api.RemoveWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01")
if err != nil {
panic(err)
}
Condividere applicazioni
err := api.AddWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.RemoveWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
Uscire da un workspace o eliminarlo
L’eliminazione di un workspace è irreversibile e disponibile solo per il proprietario.
// As a member
err := api.LeaveWorkspace("1234567890abcdef1234567890abcdef")
// As the owner (irreversible)
err = api.DeleteWorkspace("1234567890abcdef1234567890abcdef")