workspace は、rest.Rest に埋め込まれた Workspaces インターフェースによって公開されます。Standard、Pro、Enterprise プランで利用できます。
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()
api := rest.New(client)
workspace の作成
workspace, err := api.CreateWorkspace("Acme")
if err != nil {
panic(err)
}
fmt.Println(workspace.ID)
名前は 1–32 文字で、workspace の作成にはアクティブな有料プランが必要です。
workspace の一覧取得
api.GetWorkspaces() は、認証済みユーザーがオーナーまたはメンバーであるすべての workspace を返します。
workspaces, err := api.GetWorkspaces()
if err != nil {
panic(err)
}
for _, ws := range workspaces {
fmt.Println(ws.Name, ws.ID)
}
単一の workspace の取得
workspace ID は、ハイフンなしの UUID v4 値(32 文字の 16 進数)です。
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)
メンバーの招待
メンバーの招待は 2 段階のハンドシェイクです — 招待される側が 自分の クライアントから短命なコードを生成して同意を示し、オーナーがそれを消費します。
// 1. 招待される側の SDK クライアントから
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. workspace オーナーのクライアントから
err = api.AddWorkspaceMember("1234567890abcdef1234567890abcdef", code, "maintain")
if err != nil {
panic(err)
}
招待コードは、workspace に 参加する ユーザーが生成するものであり、オーナーが生成するものではありません。コードは使い捨てで、5 分 で失効します — 生成したらオーナー/管理者に渡し、速やかに消費してください。
ロール
| Role | Description |
|---|
owner / admin | workspace の完全な管理 |
maintain | 共有アプリケーションへの運用アクセス |
manager | 監視に加えてアプリケーションのライフサイクル(起動、停止、再起動) |
view | 読み取り専用アクセス |
メンバーのロールの変更
err := api.UpdateWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01", "admin")
if err != nil {
panic(err)
}
メンバーの削除
err := api.RemoveWorkspaceMember("1234567890abcdef1234567890abcdef", "abcdef0123456789abcdef01")
if err != nil {
panic(err)
}
アプリケーションの共有
err := api.AddWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
if err != nil {
panic(err)
}
err = api.RemoveWorkspaceApplication("1234567890abcdef1234567890abcdef", "abc123def456abc123def456")
workspace からの退出または削除
workspace の削除は取り消せず、オーナーのみが実行できます。
// メンバーとして
err := api.LeaveWorkspace("1234567890abcdef1234567890abcdef")
// オーナーとして(取り消し不可)
err = api.DeleteWorkspace("1234567890abcdef1234567890abcdef")