Workspaces werden über die in rest.Rest eingebettete Schnittstelle Workspaces bereitgestellt. Sie sind in den Plänen Standard, Pro und Enterprise verfügbar.
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
Einen Workspace erstellen
workspace, err := api.CreateWorkspace("Acme")
if err != nil {
panic(err)
}
fmt.Println(workspace.ID)
Der Name muss 1–32 Zeichen lang sein und das Erstellen eines Workspace erfordert einen aktiven kostenpflichtigen Plan.
Workspaces auflisten
api.GetWorkspaces() gibt jeden Workspace zurück, in dem der authentifizierte Benutzer Besitzer oder Mitglied ist.
workspaces, err := api.GetWorkspaces()
if err != nil {
panic(err)
}
for _, ws := range workspaces {
fmt.Println(ws.Name, ws.ID)
}
Einen einzelnen Workspace abrufen
Workspace-IDs sind UUID-v4-Werte ohne Bindestriche (32 Hex-Zeichen).
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)
Mitglieder einladen
Das Einladen eines Mitglieds ist ein zweistufiger Handshake — die eingeladene Person weist ihre Zustimmung nach, indem sie von ihrem Client aus einen kurzlebigen Code generiert, und der Besitzer löst ihn ein.
// 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)
}
Der Einladungscode wird von dem Benutzer generiert, der dem Workspace beitreten wird, nicht vom Besitzer. Er ist einmalig verwendbar und läuft nach 5 Minuten ab — generiere ihn, gib ihn an den Besitzer/Admin weiter und löse ihn zügig ein.
Rollen
| Rolle | Beschreibung |
|---|
owner / admin | Vollständige Workspace-Verwaltung |
maintain | Operativer Zugriff auf geteilte Anwendungen |
manager | Monitoring plus Anwendungs-Lebenszyklus (Start, Stopp, Neustart) |
view | Nur-Lese-Zugriff |
Die Rolle eines Mitglieds ändern
err := api.UpdateWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01", "admin")
if err != nil {
panic(err)
}
Ein Mitglied entfernen
err := api.RemoveWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01")
if err != nil {
panic(err)
}
Anwendungen teilen
err := api.AddWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.RemoveWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
Einen Workspace verlassen oder löschen
Das Löschen eines Workspace ist unwiderruflich und steht nur dem Besitzer zur Verfügung.
// As a member
err := api.LeaveWorkspace("1234567890abcdef1234567890abcdef")
// As the owner (irreversible)
err = api.DeleteWorkspace("1234567890abcdef1234567890abcdef")