Vai al contenuto principale
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

RuoloDescrizione
owner / adminGestione completa del workspace
maintainAccesso operativo alle applicazioni condivise
managerMonitoraggio più ciclo di vita delle applicazioni (start, stop, restart)
viewAccesso 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")